PyTorchEngine 多节点部署指南#
为了支持更大规模的模型部署需求,PyTorchEngine 提供了多节点部署的支持。以下是如何在两个8卡节点上部署 tp=16 模型的详细步骤。
1. 创建 Docker 容器(可选)#
为了确保集群环境的一致性,建议使用 Docker 搭建集群。在每个节点上创建容器:
docker run -it \
--network host \
-v $MODEL_PATH:$CONTAINER_MODEL_PATH \
openmmlab/lmdeploy:latest
[!IMPORTANT] 请确保将模型放置在各个节点容器的相同目录中。
2. 使用 ray 搭建集群#
2.1 启动主节点#
选择其中一个节点做为主节点,并在该节点的容器中运行以下命令:
ray start --head --port=$DRIVER_PORT
2.2 加入集群#
在其他节点的容器中,使用以下命令加入主节点所在的集群:
ray start --address=$DRIVER_NODE_ADDR:$DRIVER_PORT
完成后可以在主节点使用 ray status 查看集群状态,确保所有节点都被成功加入集群。
[!IMPORTANT] 请确保
DRIVER_NODE_ADDR为主节点的地址,DRIVER_PORT与主节点初始化时使用的端口号一致。
3. 使用 LMDeploy 接口#
在主节点的容器中,您可以正常使用 PyTorchEngine 的所有功能。
3.1 启动服务 API#
lmdeploy serve api_server \
$CONTAINER_MODEL_PATH \
--backend pytorch \
--tp 16
3.2 使用 pipeline 接口#
from lmdeploy import pipeline, PytorchEngineConfig
if __name__ == '__main__':
model_path = '/path/to/model'
backend_config = PytorchEngineConfig(tp=16)
with pipeline(model_path, backend_config=backend_config) as pipe:
outputs = pipe('Hakuna Matata')
[!NOTE] PytorchEngine 会根据 tp 数以及集群上的设备数量自动选择合适的启动方式(单机/多机)。如果希望强制使用 ray 集群,可以配置
PytorchEngineConfig中的distributed_executor_backend='ray'或使用环境变量LMDEPLOY_EXECUTOR_BACKEND=ray。
通过以上步骤,您可以成功在多节点环境中部署 PyTorchEngine,并利用 Ray 集群进行分布式计算。
[!WARNING] 为了能够得到更好的性能,我们建议用户配置更好的网络环境(比如使用 InfiniBand)以提高引擎运行效率