You need to enable JavaScript to run this app. CloudWatch仅捕获SageMaker训练任务最后一个输出指标如何解决
优惠活动
大模型
产品
解决方案
定价
更多

CloudWatch仅捕获SageMaker训练任务最后一个输出指标如何解决

问题修复方案

核心原因

  • 训练脚本使用了覆盖式动态输出(比如tqdm进度条内刷新、\r回车符回退行首),所有损失值输出在同一日志行,SageMaker仅会捕获该行最后一次刷新的内容
  • Python打印缓冲未主动刷新,多个输出被合并为单条日志
  • 正则表达式未兼容打印行前后的其他内容(如epoch、step编号、时间戳等),导致只有完全匹配的行被捕获

修复步骤

  1. 修改训练脚本的损失打印逻辑,禁用覆盖式输出,确保每一条损失记录单独占一行。打印时主动刷新输出缓冲,示例写法:
# 训练阶段损失打印
print(f"Train Loss:{train_loss:.6f}", flush=True)
# 验证阶段损失打印
print(f"Val Loss:{val_loss:.6f}", flush=True)
  1. 更新评估器中的metric_definitions正则规则,兼容打印行前后的任意字符:
from sagemaker.pytorch import PyTorch

estimator = PyTorch(
    entry_point="train.py",
    source_dir=source_dir,
    role=role,
    framework_version=framework_version,
    py_version="py3",
    train_instance_count=1,
    train_instance_type=instance_type,
    hyperparameters=hyperparameters,
    metric_definitions=[
        {"Name": "train:loss", "Regex": ".*Train Loss:([0-9\\.]+).*"},
        {"Name": "val:loss", "Regex": ".*Val Loss:([0-9\\.]+).*"},
    ],
    enable_sagemaker_metrics=True
)
  1. 重新提交训练任务,即可在CloudWatch指标和TrainingJobAnalytics查询结果中看到所有历史损失值记录,对应时间戳也会正常显示。

内容的提问来源于stack exchange,提问作者user16485802

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 21:45:02