首页/AI/大模型部署与运维速查/张量并行:单卡装不下的标准解法

张量并行:单卡装不下的标准解法

把每层权重与计算切到多卡:每卡只需驻留约 1/TP 的权重与对应 KV;vLLM 用 --tensor-parallel-size 指定,是「单卡装不下」场景的常规扩展方式。

张量并行是什么

张量并行(tensor parallel,TP)把每层的权重与计算切分到多张卡:每卡只需驻留约 1/TP 的权重,同时也能为 KV 腾出显存,是「单卡装不下」场景的常规扩展方式。vLLM 用 --tensor-parallel-size 指定并行度。代价是每层每一步都要做跨卡通信,卡间互联质量直接决定收益大小。

基本信息

参数vLLM:--tensor-parallel-size(常见写法 --tensor-parallel-size 4)
适用单卡放不下权重,或需要为 KV 腾出显存的场景
前提并行度通常需要能整除注意力头数与 KV 头数,否则启动即报错
代价每层每步都有跨卡通信,互联差时收益被吞掉
互联建议优先在 NVLink 直连的卡组内切分

典型使用场景

  • 大模型单卡装不下:TP 是扩展显存最直接的手段
  • 长上下文与高并发:权重摊到多卡后,同一份显存能留给 KV 的空间更大
  • 提升单实例吞吐:多卡协同可提高单位时间产出,但通常不是线性增长
  • 多卡机型规划:先看拓扑再决定切分范围,避免跨 NUMA 通信
  • 收益评估:按 TP=1/2/4 逐档基准测试,找通信开销开始占主导的拐点

启动与核对

启动与核对
# 4 卡张量并行启动
vllm serve <模型路径> --tensor-parallel-size 4

# 切分前先看拓扑:优先选 NVLink 直连(表中 NV# 表示 NVLink 条数)
nvidia-smi topo -m

# 效果核对:TP=1/2/4 各跑一轮同样的基准
# 对比吞吐增幅与 TPOT 变化,增幅放缓说明通信开销开始占主导

收益与代价

维度变化方向说明
单卡权重占用约降为 1/TP这是主要收益来源
跨卡通信每层每步都有互联差则收益被吞掉
每 token 延迟通常略增通信增加固定开销
总吞吐通常提升但一般不是线性增长
跨节点做张量并行时,通信要经过网络:用 ib_write_bw 之类的工具先测出可用带宽基线,再决定是否值得跨机切分。
张量并行与流水线并行不是一回事:前者把每层切开、通信频繁;后者按层分段、通信较少但会引入流水等待。选哪种取决于互联能力与显存缺口。

易错点

  • 按卡数随意加大并行度:通信开销上升、单卡效率下降,目标应是「够用且效率可接受」
  • 跨 NUMA 或跨节点切分而不评估网络:通信成为瓶颈,多卡比单卡还慢
  • 并行度不能整除头数:启动阶段直接报错,先确认参数与模型配置再排查
  • 默认并行一定提升吞吐:小模型上通信占比高,收益可能为零甚至为负

数据来源与参考

  • vLLM 官方文档:并行与分布式(docs.vllm.ai)
  • Megatron-LM 论文:张量并行(arxiv.org/abs/1909.08053)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌