精度调试
什么时候读:模型/算子在昇腾上数值结果或精度不对,需要定位是对齐问题、精度损失还是算子 bug。
昇腾提供精度调试工具,对比昇腾自研算子运算结果与业界标杆算子(如 CPU/rInference)的运算结果,帮助定位精度偏差来源。
一、为什么会精度不对
- 数据类型与混合精度设置(fp16/bf16/fp32)导致精度损失。
- 算子实现差异或对某些边界 shape 支持不一致。
- 自定义算子逻辑错误。
- 收敛不稳定(随机种子、数据加载差异)。
二、精度调试思路
text
1. 确认问题在哪层:模型输出 / 某算子 / 数据
2. 用精度调试工具对比算子和标杆结果
3. 定位是"数值格式丢失"还是"逻辑错误"
4. 修正后复测三、官方工具
- 精度调试工具(Model Accuracy Analyzer):对比昇腾算子与标杆算子结果。
- 官方文档:CANN 精度调试工具
典型能力:算子级精度对比、dump 数据、量化对比等(以官方版本为准)。
四、实操建议
- 先排除混合精度:怀疑精度问题时,先用 fp32 跑一遍对比,判断是否为量化/半精度导致。
- 单算子隔离:把问题缩小到单个算子上对比。
- 固定随机种子:保证可复现再调试。
- 用最小复现:用最小 shape/数据复现,加速定位。
五、常见数值问题速查
- 训练 loss 为 NaN/Inf → 训练类问题
- 推理结果显著偏离 → 检查数据预处理、精度格式、算子精度