该技能旨在通过 Profiler 驱动的爬山法,逐步缩小 TorchTitan 统一模型(在 vLLM 中运行)与 vLLM 原生模型之间的推理吞吐量差距。目标是在固定模型、工作负载、精度和拓扑下,达到原生模型 100% 的速度。
用途
- 缩小实现差距(框架/开销差距),而非调整服务参数(如增加批大小、序列长度、数据量、更改模型、低精度、投机解码、解聚预填充、更改拓扑/GPU数量等),这些参数会同等影响原生模型,不改变相对比例。
主要能力
- 基准测试工具:通过
torchtitan/rl/generate.py --benchmark运行,构建引擎在计时区域外,运行预热和计时轮次,报告吞吐量。 - 性能分析:使用
--profile生成每等级 Chrome trace,分析内核时间、通信行为(如 all-reduce 的散布)、主机瓶颈等。 - 可调节选项:包括编译模式(aot_eager/inductor/off)、CUDA 图模式(full_decode_only/full)、内核补丁(如 RoPE、SiLU、RMSNorm、all-reduce、融合QKV等)、模型路径(纯本地 vs DTensor)等。
- 验证流程:每个优化步骤需通过数值验证(贪婪文本逐位一致),且仅当吞吐量提升时才保留。
使用方式
- 确认模型、并行度、版本、工作负载、编译和 CUDA 图设置。
- 建立基准阶梯,捕获原生模型的性能指标。
- 对 TorchTitan 最佳配置和原生模型进行性能分析,分解差距(内核、集合通信、主机瓶颈等)。
- 选择最大差距,实现相应补丁,验证数值,提交,重新基准测试。
- 重复直至差距在 3% 以内或剩余为结构性差异。
适用场景
- 希望优化 TorchTitan 模型在 vLLM 中推理性能的开发者。
- 需要系统性性能分析和调优的场景。
限制
- 不涉及改变绝对吞吐量的正交因素(如更改模型、精度、批大小等),这些需在测量时保持固定。
- 需要特定环境(如 conda 环境
titan-rl)和版本记录。 - 部分优化可能因结构限制无法完全消除差距。