SageMaker训练任务与本地运行结果差异排查求助
本地与SageMaker上CV模型训练结果差异排查建议
本地运行计算机视觉模型训练脚本src.py时,评估结果正常:
precision recall f1-score support normal (Class 0) 0.99 0.98 0.98 393 blockage (Class 1) 0.96 0.98 0.97 205 accuracy 0.98 598 macro avg 0.97 0.98 0.97 598 weighted avg 0.98 0.98 0.98 598
但在SageMaker训练任务中运行同一脚本时,Class 1无预测样本,评估结果极差,同时出现警告:
UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no predicted samples.
SageMaker端评估结果:
precision recall f1-score support normal (Class 0) 0.66 1.00 0.79 393 blockage (Class 1) 0.00 0.00 0.00 205 accuracy 0.61 598 macro avg 0.33 0.50 0.40 598 weighted avg 0.43 0.66 0.52 598
以下是具体排查建议:
数据集一致性校验
- 确认SageMaker端的训练/验证集与本地完全匹配,包括Class 1样本数量、标签分布、数据格式。排查是否因路径权限、文件名规则、数据读取逻辑(如过滤条件)导致Class 1样本未被加载。
- 核对数据预处理流程:本地与SageMaker上的图像resize、归一化参数、数据增强策略完全一致,重点检查均值/方差、随机增强的种子设置。
训练环境与参数对齐
- 同步本地与SageMaker的依赖库版本,包括深度学习框架(PyTorch/TensorFlow)、scikit-learn、OpenCV等,版本差异可能引发逻辑偏差。
- 确认训练参数无差异:批次大小、学习率、训练轮数、优化器配置(如动量、权重衰减)在两端完全相同,排查SageMaker启动脚本是否覆盖了原有参数。
- 固定所有随机种子:模型初始化、数据加载、增强操作的种子在两端统一设置,避免随机性导致训练走向完全不同。
评估逻辑排查
- 检查标签与预测结果的映射关系:确认两端的标签编码一致(如Class 0对应normal、Class 1对应blockage),无反转或错位情况。
- 验证分类阈值:二分类任务中,确认推理阶段的判定阈值(如0.5)在两端相同,排查是否因阈值设置过高导致所有样本被判定为Class 0。
- 核对评估指标计算代码:检查
precision_recall_fscore_support等函数的参数(如labels指定、average方式),确认SageMaker端未因标签缺失导致指标计算异常。
SageMaker特定配置检查
- 确认训练实例资源足够:GPU/CPU内存是否满足训练需求,排查是否因资源不足导致训练提前终止、模型未充分训练就进入评估环节。
- 查看完整训练日志:检查SageMaker训练过程中是否有数据加载失败、模型保存/加载错误等异常输出。
- 核对工作路径:确认SageMaker上的脚本执行目录、数据路径、模型保存路径是否正确,避免因相对路径问题加载错误数据或模型。
内容的提问来源于stack exchange,提问作者Wolfy
相关产品推荐
相关产品推荐

