Multi-GPU and Multi-Node LLM Inference

并行维度

  • Tensor Parallelism:切分层内张量和 GEMM,通信频繁。
  • Pipeline Parallelism:切分层,存在 stage 与 micro-batch 调度。
  • Data Parallelism:复制模型,扩展独立请求吞吐。
  • Expert Parallelism:MoE expert 分布,依赖 All-to-All。

容量不是只有权重

部署显存还包括 KV Cache、runtime workspace、临时张量、CUDA graph、量化元数据与碎片。

网络

跨节点 TP 对 NVLink、PCIe、RDMA/InfiniBand 等通信路径非常敏感。GPU 数量增加不代表应把 TP 设置为总卡数;应基于模型能否单节点放下、通信占比、batch 与 SLO 选择。

Ray 可组织 worker 和资源,但不定义 TP/PP/EP 算法。

选择顺序

  1. 先估算权重、KV Cache、workspace 和峰值激活,判断单卡/单节点是否能容纳。
  2. 若模型能放入单节点,比较 TP 的通信频率与 DP 的请求级扩展;不要默认 TP 等于总 GPU 数。
  3. 若模型跨节点,量化每层/每 micro-batch 的通信量,检查 NVLink、PCIe、RDMA 拓扑和 oversubscription。
  4. 对 MoE 单独看 token routing 的 All-to-All;EP 的瓶颈可能是网络而不是 GEMM。
  5. 在真实输入/输出长度与并发下测 TTFT、TPOT、吞吐、P99、显存和故障恢复。

DP 复制模型,主要增加独立请求容量,但每副本都要有完整权重和 KV;TP 切分层内矩阵,降低单卡权重占用,却在每层引入 collective;PP 减少单 stage 层数和显存,但产生 stage bubble 与跨 stage 传递;EP 只切 expert,路由不均会导致部分卡空闲。并行度增加后,计算减少不一定抵得过通信和同步等待。

它向下依赖 KV Cache、NCCL/网络和 kernel,向上连接 Inference Engine Selection 与 serving 扩缩容,横向对照 Data Parallelism

用部署约束反推并行方式

如果完整权重、workspace 和目标并发的 KV 都能放进单节点,通常先把节点当作通信域:TP 可以利用 NVLink/PCIe,DP 则复制多个副本承接独立请求。此时把所有卡塞进一个跨节点 TP 组,往往只是把高频 collective 推到 RDMA 上。只有单节点无法容纳模型/缓存,或需要特定的吞吐/容错形态时,才把 TP/PP/EP 延伸到节点间。

1
2
3
4
容量约束 → 节点内 TP/副本数
→ 估算每 token collective / activation / KV 传输
→ 检查拓扑与网络 oversubscription
→ 用真实 batch、长度和并发测 TPOT/P99

DP 的容量增长近似是“副本数 × 独立请求”,但每副本都要完整权重和 KV;TP 的单卡权重压力下降,却每层都可能引入 all-reduce/all-gather;PP 依赖足够 micro-batch 隐藏 stage bubble,decode 的小 batch 往往更难填满 pipeline;EP 还要面对 token routing 不均和 all-to-all 热点。并行策略不能用“GPU 数越多越快”概括。

多节点 benchmark 必须看通信等待

除了端到端 TTFT/TPOT,还要记录 NCCL collective 时间、每步通信字节、链路带宽利用率、rank 间最大/平均等待、GPU idle gap、显存和节点故障恢复。一个常见反例是总吞吐上升但 P99 恶化:更大的 TP 组缩短计算,却让慢链路上的一个 rank 拖住所有 rank。此时降低 TP、改用更多 DP 副本或重排 rank 拓扑可能更有效。

模型能跑通只说明通信和 shape 正确;生产候选还需要在节点失联、单卡 OOM、NCCL timeout 后验证副本是否摘除、请求是否重算以及是否发生重复流式输出。