大模型推理vllm多机多卡分布式本地部署

模型与算力

给运维工程师的 vLLM 多机多卡分布式部署速查:从拓扑与通信方式选起,到启动参数、并行度切分与上线前自检。

单机多卡跑得好好的,卡一多、机器一上两台就各种起不来:进程互相等、显存看着够却 OOM、日志里全是通信超时。这篇不讲原理课,只按运维的排查顺序走一遍多机多卡要盯的那几件事,外加一份上线前自检清单,帮你把「能跑」和「稳定跑」分开。

单机多卡能跑通,不代表多机多卡能跑稳。很多团队第一次上第二台机器,遇到的现象都差不多:进程互相等、显存看着够却 OOM、日志里刷通信超时。这三个现象背后往往不是模型问题,而是拓扑、并行度和启动参数没对齐。

下面按运维的排查顺序走一遍:先把拓扑和通信定死,再决定并行度怎么切,然后才是配参数起服务,最后用一份自检清单把「能跑」和「稳定跑」分开。每节都给出可执行动作,具体数字到站内对应页面核对当时的口径。

先定拓扑:几张卡、跨不跨机、走什么通信

动手改命令前先回答三个问题:一共几张卡、分在几台机器上、机间走哪张网卡。这三个答案不同,最优并行策略不一样,别照抄别人博客里的启动命令,那些命令的拓扑前提通常和你不同。

拓扑形态典型特征优先关注点
单机多卡卡在同一台,走机内互联显存够不够、切分维度对不对
多机单卡每台一张,通信全靠网络网卡型号、带宽、是否走对了网口
多机多卡跨机又跨卡,最复杂节点数是否真的划算,通信占比多高
  • 先用不带模型的通信自检过一遍,确认各节点能互相握手、网卡选对,再谈模型加载
  • 机器数增加不等于吞吐线性增长,节点越多通信占比越高,先小规模验证再扩
  • 每台机器加节点标识写日志,否则排错时判断不出是哪台先断的
  • 国产卡或其他加速卡走各自的适配分支,路径和官方 GPU 版不一致,硬件口径先到站内算力与加速卡页面确认

并行度怎么切:TP、PP 与副本三条线的分工

并行度不是「一个数字」,而是三条线叠加:张量并行负责把单层权重摊到多卡,流水线并行按层切,数据并行/多副本负责扛并发。三条线混成一个数调,是新手最常见的坑。

张量并行(TP)
摊单层权重,对卡间通信最敏感,优先放在同一台机器内
流水线并行(PP)
按层切,跨机扩展友好,但段数越多单条请求延迟越难看
数据并行/多副本
抗并发,与上面两条是叠加关系,不是替代关系
  1. 先看显存显存放得下就少切,切得越细通信开销越大,先试单机多卡能不能装下
  2. 再定延迟还是吞吐延迟优先就少切且尽量不跨机;吞吐优先就多副本,把单条请求的切分压到最小
  3. 最后跨机必须跨机时优先用流水线并行把层切开,而不是把张量并行分散到多台机器
  4. 组合验证几种组合先用站内部署测算页面按模型和量化档位算一遍,再挑两三种上机实测

切法没有唯一答案。显存、并发、延迟容忍度三者互相拉扯,同一个模型在不同业务下最优组合可能完全不同。判断标准只有一条:拿你自己的流量压一遍,看延迟和吞吐曲线拐点在哪,而不是信别人给的倍数。

起服务:参数怎么配、日志怎么看

参数配置有个原则:先固定几项再调其余。模型路径、精度或量化档位、最大上下文长度、显存占用比例,这几项一动,前面推导的并行度就白算了,得重新来。

报错阶段常见原因排查方向
加载阶段挂权重格式、切分维度、路径问题先单机小配置加载同一份权重,确认文件本身没问题
起来了请求就崩显存分配、KV 缓存上限、并发配置压低并发和上下文长度,逐项放开定位是哪项触发
跑一阵子才崩显存碎片、长请求堆积、通信偶发超时看是否与请求长度分布相关,留全节点日志对齐时间线
  • 跨机场景把每个节点的日志都留存,带节点标识,否则判断不出谁先断
  • 参数名和默认值不同版本有差异,写完先小流量跑通再上生产
  • 别一次改多个参数,改一个跑一轮,否则出了问题是哪个引起的说不清
  • 启动后第一件事是打一条最简单的请求,确认端到端链路通,再压并发

上线前自检:延迟、并发与回退

到这一步服务能起来了,但「能跑」和「稳定跑」是两件事。上线前至少量三组数:延迟基线、并发拐点、回退路径。这三组数缺一个,出故障时就没有参照。

  1. 量延迟基线分别记单条请求的首 token 时间和出字速度,跨机前后的变化最能说明通信开销
  2. 找并发拐点并发往上加,记录吞吐拐点和错误率拐点,两者先后顺序决定安全水位定在哪
  3. 备回退路径单机小并发能否顶住、故障时切副本还是切 API,上线前想好而不是挂了再想
  4. 留对照记录参数与拓扑做一份对照记录,换卡换节点数时照着改,比重新试一遍省时间

自检清单适用多数常规场景;如果你的业务有明显波峰波谷,或者对首 token 延迟极其敏感,压测方式要按真实流量分布来设计,不能只压恒定的并发数,否则测出来的拐点没有参考价值。

下一步拓扑和并行度定下来之后,去站内算力与加速卡页面核对硬件口径,用部署测算页面把几种组合先算一遍,再挑两三种上机压测,比盲目试命令省很多时间。

常见问题

多机多卡一定要用张量并行吗?

不一定。张量并行对卡间通信最敏感,通常优先放同机;跨机更常见的是流水线并行加多副本扛并发。判断标准是显存够不够、延迟能不能接受,两个都不紧张就没必要跨机切张量并行。

启动没报错,一请求就崩或者卡住,先查哪里?

按顺序查:显存与 KV 缓存上限设置是否留了余量、各节点的并行度配置是否完全一致、跨机通信是否真的通。先降并发到 1 复现一次,能复现基本就是配置问题,不能复现就往资源竞争方向想。

怎么判断扩机器到底有没有收益?

在自己业务的实际输入输出长度下压一遍:看吞吐的增量、看延迟的变化、看错误率。如果吐吞只涨一点但延迟明显变差,说明通信成了瓶颈,扩机器不划算,不如在同机加副本。具体数字各家模型和卡都不一样,压出来才算数。

本文依据各平台公开文档与官方公告整理,只做中文归纳;具体做法、参数与限制以官方文档为准。