🗒️vLLM分布式多GPU Docker部署踩坑记
2023-12-9
| 2023-12-9
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password

踩坑

vLLM原生支持多节点多GPU部署,就如官方文档所说
notion image
核心基于ray的分布式计算框架。
但是如何基于Docker部署没有相关说明,网络上也没有类似的教程。因为测试环境只有可怜的2张2080Ti+4张2080Ti两台主机,本来部署在一台两卡的机器上,做长文本摘要容易OOM,故决定利用这个资源把每个GPU的内存占用降低。故决定折腾试试。
notion image
然后就折腾了好久
懂的都懂。
正所谓:
一杯茶,一杯烟,一个bug调一天
notion image
 
具体而言:
  1. Docker里面的ray客户端不能找到直接安装在宿主机上的ray cluster。使用Docker的host网络模式,及设置环境变量RAY_ADDRESS均告败。
  1. ray节点需要保持ray版本严格一致,Python版本保持3.x中x一致,不然会报不一致错误。

探索的可行方案

要点

  1. 不同node之间采用原有跑vLLM的Docker环境,可以参考之前的文章
  1. 基于Docker里面的ray,连接各节点,组成cluster
  1. 再在主节点(head节点)上,运行大模型API启动命令

步骤

  1. 参考之前的Dockerfile,限定ray的版本。
  1. 添加连接node的entrypoint:
  1. 构建镜像,假设名为vllm-server:latest
  1. head节点运行:记得挂在模型的数据卷
之后我们进入容器查看一下ray的状态:
docker exec -it llm-ray-head bash
ray status可以看到有一个活动节点和上面的资源情况(CPU,GPU,内存等)
notion image
  1. 在另一台主机上执行: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
  1. 启动成功后,我们再在head节点上查看,可以看到新的节点已经加入进来,已经显示有6块GPU。也可进入dashboard查看:head_ip:8265
    1. notion image
      notion image
  1. 启动vLLM server:
    1. bash /api.sh --model /Qwen-7B-Chat --worker-use-ray --tensor-parallel-size 4
      这里注意,虽然有6张卡,也不能设置tensor-parallel-size=6。
      为什么?这个可能是一个面试题。
      notion image
      可以看到,已经成功在4张卡上运行。
notion image
 
  • LLM
  • LangChain LCEL之长文本摘要从API到GPTs:一站式指南构建、部署和构建基于ChatGPT的智能药品说明书助手
    Loading...
    目录