
# 训练作业精度问题
#### 问题现象
使用ModelArts平台训练算法时，出现模型精度异常问题，常见问题如下：
1. 训练精度/验证精度低于预期。
2. 相同代码多次训练结果不一致。
3. loss不收敛、震荡或出现NaN。
 
#### 原因分析
可能存在如下原因：
1. 训练代码或训练参数发生变更。
   - 学习率、batch size、epoch、optimizer、scheduler等参数被修改；
   
   - 随机种子未固定；
   
   
   
   - 混合精度、梯度裁剪、梯度累积等策略变化；
   
   - CheckPoint加载逻辑异常。
    

2. 数据集或数据预处理存在差异。
   - 训练集、验证集路径配置错误。
   
   - 数据集版本发生变化。
   
   - 数据增强策略与预期不一致。
   
   - 标签文件错误、类别映射错误。
   
   - 数据读取顺序、shuffle设置异常。
   
   - 训练/验证数据划分不一致。
    

3. 环境依赖版本不一致。
   - PyTorch、TensorFlow、MindSpore等框架版本不同。
   
   - 第三方依赖库版本不同。
   
   - 镜像版本变化导致算子行为或默认参数不同。
    

4. 分布式训练配置异常。
   - 多卡训练时batch size、学习率未按比例调整。
   
   - 分布式sampler配置错误。
   
   - rank/world size配置异常。
   
   - 梯度同步异常。
   
   - 多机训练通信不稳定导致训练异常。
    

5. 资源或运行状态异常。
   - NPU利用率异常。
   
   - 节点异常、通信异常或存储读取异常。
    
 
#### 处理方法
1. 请您对作业代码进行排查分析，确认是否对训练代码和参数进行过修改。 - loss函数；
   - optimizer；
   - learning rate；
   - batch size；
   - epoch数；
   - 随机种子设置；
   
2. 检查数据集是否与正常训练时一致，或数据集是否正常训练过。
3. 如果多次训练精度波动较大，请检查是否固定随机种子。
4. 如果前面排查没问题，可考虑使用二分法定位排除节点问题。将本次训练作业的节点通过多次递归二分创建小规模作业，排查是否是某个节点静默故障导致的精度问题。
 
