You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将训练脚本输出写入AWS SageMaker训练任务日志文件

在SageMaker自定义训练脚本中添加日志到任务日志文件的方法

方法1:直接使用print或标准错误流输出

SageMaker训练任务默认会捕获脚本的标准输出(stdout)和标准错误(stderr),并将这些内容写入训练日志文件(最终同步到CloudWatch或SageMaker控制台的日志面板)。你可以直接在train_coco.py里用print语句输出日志:

print("开始加载COCO数据集...")
# 训练代码逻辑
print(f"完成第{epoch}轮训练,损失值: {loss:.4f}")

如果需要标记错误类信息,也可以直接写入标准错误流:

import sys
sys.stderr.write("警告:数据集路径未指定,将使用默认路径\n")

方法2:使用Python标准logging模块(推荐)

对于更规范的日志管理,建议用Python内置的logging模块,它支持日志级别、格式化输出等功能,输出内容同样会被SageMaker捕获。在train_coco.py开头配置logging:

import logging

# 配置日志输出级别和格式
logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s - %(levelname)s - %(message)s"
)
logger = logging.getLogger(__name__)

# 在训练代码中调用日志方法
logger.info("初始化训练环境完成")
logger.warning("学习率设置过高,可能导致训练不稳定")
logger.error("加载模型权重失败,终止训练")

这种方式输出的日志带有时间戳和级别标识,方便后续排查问题。

注意事项

  • 无需修改你创建的Framework子类,SageMaker默认会自动收集entry_point脚本的所有stdout/stderr输出。
  • 如果训练脚本包含子进程,需确保子进程的输出重定向到主进程的stdout/stderr,否则这部分内容不会被纳入训练日志。
  • 日志内容会同步到SageMaker控制台的「训练任务详情」→「日志」页面,以及对应CloudWatch日志组中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 07:30:53