如何通过CloudWatch将SageMaker默认指标图横轴从时间改为Epoch
如何在Amazon SageMaker中让CloudWatch指标图表横轴显示Epoch而非时间?
问题描述
使用Amazon SageMaker训练机器学习模型时,发现CloudWatch默认将准确率、损失等指标按时间维度绘制图表,希望改为按Epoch(训练轮次)绘制。当前的metric_definitions定义如下:
metric_definitions=[ {'Name':'train:loss', 'Regex':'train_loss=(.*?)]'}, {'Name':'validation:loss', 'Regex':'val_loss=(.*?),'}, ],
解决方案
1. 修改训练脚本与metric_definitions,捕获Epoch指标
首先需要让训练日志输出当前的Epoch编号,同时在metric_definitions中添加规则捕获Epoch数值:
- 在训练循环中,每轮输出包含Epoch的日志(以PyTorch为例):
for epoch in range(num_epochs): # 执行训练、验证步骤,计算train_loss、val_loss print(f"epoch={epoch}, train_loss={train_loss}, val_loss={val_loss}]") - 更新
metric_definitions,添加Epoch的捕获规则:metric_definitions=[ {'Name':'train:loss', 'Regex':'train_loss=(.*?)]'}, {'Name':'validation:loss', 'Regex':'val_loss=(.*?),'}, {'Name':'train:epoch', 'Regex':'epoch=(.*?),'} # 新增:匹配日志中的epoch数值 ],
2. 在CloudWatch中切换横轴为Epoch
训练完成后,进入CloudWatch控制台操作:
- 找到对应训练任务的指标组,选中
train:loss、validation:loss和train:epoch指标 - 在图表设置区域,将横轴从默认的「时间」切换为「指标」,选择
train:epoch作为横轴字段 - 调整图表配置,即可看到损失等指标按Epoch轮次绘制的图表
内容的提问来源于stack exchange,提问作者Eliya
相关产品推荐
相关产品推荐

