性能与精度问题
什么时候读:性能不达标(慢/吞吐低)、或精度/数值不对,需要系统性定位与调优。
一、性能问题定位框架
性能问题不要靠猜,用 Profiling 数据说话(性能调优)。
text
性能慢在哪?
├── 算子(计算)慢 → 融合算子 / Ascend C 自研 / 换更优算子
├── 通信占比高 → 调并行策略 / 减小通信 / HCCL
├── 数据加载慢 → 异步预处理 / 更多 worker
├── 显存/内存不足 → 减 bs / 重计算 / 切分
└── 调度/io 瓶颈 → 优化工程细节训练调优速查
| 现象 | 对策 |
|---|---|
| 单个算子慢 | 用 MindSpeed 优化层级 / Ascend C 自研(见 算子开发) |
| 通信占比高(多卡) | 调整张量/流水/数据并行(MindSpeed) |
| OOM | 减少 bs、重计算、优化器状态切分、Swap 机制 |
| 整体吞吐低 | 并行策略、数据流水优化 |
推理调优速查
| 现象 | 对策 |
|---|---|
| 吞吐低 | 连续批处理、增大并发/bs、KV Cache 调优 |
| 延迟高(decode) | 小 bs、低延迟模式(如 SGLang)、显存/KV 策略 |
| OOM | 降低 max-batch/seq、KV 策略 |
二、精度问题定位框架
精度不对,先定位层级:
- 数据 / 预处理差异 → 检查数据加载、归一化、tokenizer。
- 混合精度丢失 → 先用 fp32 对比(精度调试)。
- 算子实现差异 → 单算子对比昇腾 vs 标杆结果。
- 训练收敛异常 → 随机种子、学习率、分布式一致性。
官方工具:精度调试工具(对比昇腾算子与标杆算子结果),见 精度调试。
三、注意版本配套对性能/精度的影响
- 版本不配套可能导致性能回退甚至算子表现异常。
- 做性能/精度对比时,务必统一版本、统一硬件、固定随机种子,才能有效对比。
TIP
性能问题交给 Profiling,精度问题交给精度调试工具,别靠猜。 对比性能时用 AISBench 等基准工具,见 资源导航。