课程导入:学习目标、课程结构、多卡推理负载不均问题概述
1.1 为什么多卡推理会“卡”在负载不均上
当大语言模型(LLM)的参数量突破百亿、千亿级别后,单张 GPU 的显存容量与算力已无法满足推理需求。将模型切分到多张 GPU 上并行推理,成为生产环境的必然选择。然而,许多团队在完成多卡部署后,发现整体吞吐量远低于理论峰值,GPU 利用率参差不齐,甚至出现“一张卡忙到冒烟、另一张卡闲到发慌”的现象。这种多卡推理负载不均问题,直接决定了推理系统的成本、延迟与稳定性。
负载不均并非单一原因造成,而是模型切分策略、数据分发机制、GPU 间通信拓扑以及运行时调度共同作用的结果。其中,CUDA 拓扑感知部署是容易被忽视却影响深远的一环——它关注 GPU 在物理主机上的连接方式(如 NVLink、PCIe 交换机、NUMA 节点),并据此优化张量并行、流水线并行或专家并行(EP)的通信路径。
1.2 课程学习目标
完成本课程后,你将能够:
- 诊断负载不均:使用
nvidia-smi、nsys、dcgm等工具定位 GPU 利用率、显存带宽、通信耗时等关键指标,区分“计算瓶颈”与“通信瓶颈”。 - 理解切分与通信的耦合关系:掌握张量并行(TP)、流水线并行(PP)、专家并行(EP)在不同拓扑下的通信模式,理解为何同一模型在不同机器上表现差异巨大。
- 实施拓扑感知部署:通过
nvidia-smi topo -m获取 GPU 拓扑矩阵,结合 NCCL 环境变量(如NCCL_P2P_LEVEL、NCCL_TOPO_DUMP_FILE)优化通信路径,实现负载均衡。 - 建立量化评估体系:使用吞吐量(tokens/s)、首 token 延迟(TTFT)、尾 token 延迟(TPOT)、GPU 利用率标准差等指标,客观评估优化效果。
1.3 课程结构总览
本课程共 30 章,按“认知→原理→工具→实战→调优”五个阶段组织,各阶段内容环环相扣:
| 阶段 | 章节范围 | 核心主题 |
|---|---|---|
| 认知基础 | 第 1-4 章 | 负载不均问题定义、GPU 硬件架构、CUDA 编程模型、通信原语 |
| 切分策略 | 第 5-9 章 | TP/PP/EP 切分原理、显存与计算均衡、序列并行、MoE 负载 |
| 拓扑与通信 | 第 10-16 章 | NVLink/PCIe 拓扑、NCCL 原理、拓扑感知分配、通信压缩 |
| 监控与诊断 | 第 17-22 章 | 性能剖析工具、负载采集、瓶颈定位、日志分析 |
| 部署与调优 | 第 23-30 章 | 容器化部署、动态批处理、自动并行、故障恢复、案例复盘 |
每章均配有可运行的示例、诊断命令或配置模板,建议在真实多卡环境(至少 2 张 GPU)中同步实践。
1.4 多卡推理负载不均:一个典型场景
假设你在一台 8×A100(40GB)服务器上部署 70B 参数的 LLM,采用张量并行(TP=8)方式将模型切分到全部 GPU。启动服务后,你观察到以下现象:
nvidia-smi 输出(节选):
GPU 0: 98% | GPU 1: 97% | GPU 2: 45% | GPU 3: 12%
GPU 4: 10% | GPU 5: 95% | GPU 6: 88% | GPU 7: 30%
GPU 0、1、5、6 利用率接近满载,而 GPU 3、4 几乎空闲。进一步使用 nsys profile 抓取通信事件,发现 GPU 3 和 GPU 4 之间的 NVLink 带宽利用率不足 5%,而 GPU 0 与 GPU 1 之间的带宽利用率高达 80%。这说明通信流量集中在部分链路上,而其他链路闲置。
这种不均的根因往往在于:
- 切分维度不当:TP=8 要求每层权重按列/行切分到 8 张卡,但若模型某些模块(如 MoE 的专家)本身负载不均衡,会导致部分 GPU 计算量偏大。
- 拓扑未感知:8 张 A100 可能分布在 2 个 NUMA 节点上,跨 NUMA 的 P2P 通信走 PCIe 而非 NVLink,带宽相差 5-10 倍。若未按拓扑分配 rank,就会造成通信热点。
- 调度策略简单:静态 batch 分配未考虑各 GPU 的实时负载,导致请求堆积在繁忙 GPU 上。
下图展示了同一模型在“未感知拓扑”与“拓扑感知部署”下的通信负载差异:
左侧场景中,GPU 0/1/5/6 承担了大部分通信与计算,而 GPU 3/4 几乎闲置;右侧通过拓扑感知将通信密集的 rank 分配到同一 NVLink 域内,各 GPU 利用率趋于一致,整体吞吐量提升约 1.8 倍。
1.5 常见误区与学习建议
误区二:盲目增加 GPU 数量就能线性提升性能。当通信成为瓶颈时,增加 GPU 反而可能降低加速比。
误区三:只关注 GPU 利用率,忽略显存带宽和通信延迟。利用率高不代表效率高,可能是在低效地“忙等”。
建议在学习过程中,始终带着“数据从哪来、到哪去、经过哪条链路”的视角分析问题。每章结束后,尝试用一张图或一张表总结该章的核心结论,逐步构建自己的多卡推理调优知识体系。