type
status
date
slug
summary
tags
category
icon
password
踩坑
vLLM原生支持多节点多GPU部署,就如官方文档所说
核心基于ray的分布式计算框架。
但是如何基于Docker部署没有相关说明,网络上也没有类似的教程。因为测试环境只有可怜的2张
2080Ti
+4张2080Ti
两台主机,本来部署在一台两卡的机器上,做长文本摘要容易OOM
,故决定利用这个资源把每个GPU的内存占用降低。故决定折腾试试。然后就折腾了好久
懂的都懂。
正所谓:
一杯茶,一杯烟,一个bug调一天
具体而言:
- Docker里面的ray客户端不能找到直接安装在宿主机上的ray cluster。使用Docker的host网络模式,及设置环境变量RAY_ADDRESS均告败。
- ray节点需要保持ray版本严格一致,Python版本保持3.x中x一致,不然会报不一致错误。
探索的可行方案
要点
- 不同node之间采用原有跑vLLM的Docker环境,可以参考之前的文章
- 基于Docker里面的ray,连接各节点,组成cluster
- 再在主节点(head节点)上,运行大模型API启动命令
步骤
- 参考之前的Dockerfile,限定ray的版本。
- 添加连接node的entrypoint:
- 构建镜像,假设名为vllm-server:latest
- head节点运行:记得挂在模型的数据卷
之后我们进入容器查看一下ray的状态:
docker exec -it llm-ray-head bash
ray status
可以看到有一个活动节点和上面的资源情况(CPU,GPU,内存等)- 在另一台主机上执行:
docker run -d --name llm-ray-worker --gpus all --network=host --ipc=host -e RAY_NODE_TYPE=worker -v /data/Qwen-7B-Chat/:/Qwen-7B-Chat vllm-server:latest
。
- 启动成功后,我们再在head节点上查看,可以看到新的节点已经加入进来,已经显示有6块GPU。也可进入dashboard查看:
head_ip:8265
。
- 启动vLLM server:
bash /api.sh --model /Qwen-7B-Chat --worker-use-ray --tensor-parallel-size 4
这里注意,虽然有6张卡,也不能设置tensor-parallel-size=6。
为什么?这个可能是一个面试题。
可以看到,已经成功在4张卡上运行。