分布式多机部署DeepSeek R1模型
更新时间:2025-04-24
随着模型参数量不断增加,单台GPU服务器已经无法满足大规模模型的推理需求。分布式多机推理可以将单实例分配到多台服务器部署,利用并行计算加速推理过程,提高大规模模型和高并发场景的推理效率。本文将介绍如何通过百舸平台在H20 2机分布式部署DeepSeek R1模型。
前置条件
准备资源
- 购买2台支持RDMA的H20机器创建百舸自运维资源池(H20需开通白名单,请联系百度售前工程师)
- 开通PFS或CFS存储并与资源池绑定
准备数据
平台已提供DeepSeek R1模型权重文件存储在BOS对象存储中,您可以从对应地域的BOS路径中下载模型。
- 登录节点安装BOSCMDhttps://cloud.baidu.com/doc/BOS/s/qjwvyqegc并完成BOSCMD配置https://cloud.baidu.com/doc/BOS/s/Ejwvyqe55
- 从平台提供的BOS地址中拷贝权重文件到PFS或CFS存储中:
Plain Text
1./bcecmd bos sync bos:/aihc-models-bj/deepseek-ai/DeepSeek-R1 /mnt/model/DeepSeek-R1
| 地域 | BOS路径 |
|---|---|
| 北京 | bos:/aihc-models-bj/deepseek-ai/DeepSeek-R1 |
| 苏州 | bos:/aihc-models-su/deepseek-ai/DeepSeek-R1 |
| 广州 | bos:/aihc-models-gz/deepseek-ai/DeepSeek-R1 |
镜像准备
仅支持vllm和sglang推理框架,vllm 版本 >= 0.7.3 sglang版本 >= 0.4.3,平台已预置vllm和sglang 官方镜像,建议直接使用平台提供的镜像。
部署服务
- 登录百舸在线服务部署控制台,选择自定义部署,点击部署服务;
- 输入服务名称、选择资源池/队列;
- 开启分布式推理,单实例Pod数设置为2,开启RDMA;

- 服务镜像:选择百舸预置镜像中的 sglang v0.4.3.post4-cu125 或 vllm 0.7.3


- 设置启动命令:根据选择的镜像填写对应的启动命令
sglang启动命令:
Plain Text
1MASTER_IP=$(cut -d ',' -f 1 $FED_MEMBER_FILE)
2python3 -m sglang.launch_server \
3 --model-path /mnt/pfs/deepseek-ai/DeepSeek-R1 \
4 --tp 16 \
5 --dist-init-addr $MASTER_IP:5000 \
6 --nnodes $FED_POD_NUM \
7 --node-rank $FED_POD_INDEX \
8 --trust-remote-code \
9 --host 0.0.0.0 \
10 --port 8088
vllm 启动命令
Plain Text
1MASTER_IP=$(cut -d ',' -f 1 $FED_MEMBER_FILE)
2if [ "$FED_POD_INDEX" -eq 0 ]; then
3 /vllm-workspace/ray_init.sh leader --ray_cluster_size=$FED_POD_NUM
4 python3 -m vllm.entrypoints.openai.api_server \
5 --port 8088 \
6 --model /mnt/model/DeepSeek-R1 \
7 --tensor-parallel-size 16 \
8 --trust_remote_code
9else
10 echo "Master IP: $MASTER_IP"
11 /vllm-workspace/ray_init.sh worker --ray_address=$MASTER_IP
12fi
- 资源申请:加速芯片数量设置为8卡
- 存储挂载:建议您使用PFS L2存储类型,提高模型加载和服务异常恢复速度;以PFS存储类型为例,填写存储模型权重文件的PFS或CFS源路径和容器目标路径,启动命令中的路径会根据目标路径动态更新;

- 流量接入:
- 设置服务端口设置为8088,启动命令会根据此配置动态更新
- 开启云原生AI网关(云原生AI网关仅支持http请求)
- 健康检查:若部署生产服务建议开启健康检查配置探针
- 参考以下配置设置启动探针

- 参考以下配置就绪探针和存活探针

发送请求
服务部署成功后,可在列表查看,服务状态均为“运行中”即可调用;在调用信息中可获取HTTP调用地址和Token信息;

请求示例:
Plain Text
1curl --location '180.76.137.48/auth/ap-f6d303295/8088' \
2--header 'Content-Type: application/json' \
3--header 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6ImNzbSIsInR5cCI6IkpXVCJ9.eyJpYXQiO***' \
4--data '{
5 "model": "deepseek r1",
6 "messages": [{"role": "system", "content": "你是一名天文学家,请回答用户提出的问题。"}, {"role": "user", "content": "人类是否能登上火星?"}, {"role": "assistant", "content": "目前来看,人类登上火星是完全可能的..."}],
7 "max_tokens": 10,
8 "temperature": 0
9}'
查看服务监控
可在服务详情中查看服务资源、流量监控

