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

如何在Amazon SageMaker运行代码时向Amazon S3存储桶写入调试日志

SageMaker运行循环代码并将调试日志存储到S3的操作方案

1. 前置权限配置

  • 找到你运行SageMaker作业所使用的IAM角色,为其附加允许s3:PutObject、s3:ListBucket操作的权限策略,目标资源指定你用于存储日志的S3存储桶ARN即可。

2. 日志实现方案(二选一即可)

方案A:代码内置日志逻辑,运行中实时同步到S3

适合需要自定义日志格式、循环过程中灵活控制日志同步频率的场景,不需要额外配置其他服务,直接在原有代码中修改即可:

import logging
import boto3
from datetime import datetime
import os

# 初始化日志配置
LOG_FILE = "debug_loop.log"
logging.basicConfig(
    level=logging.DEBUG,
    format="%(asctime)s - %(levelname)s - %(message)s",
    handlers=[
        logging.FileHandler(LOG_FILE),
        logging.StreamHandler() # 同时输出到控制台,SageMaker原生运行日志也会留存
    ]
)
s3_client = boto3.client("s3")
S3_BUCKET = "替换为你的S3存储桶名"
S3_LOG_PATH = "sagemaker/run_logs/" # 替换为你想要存储的S3路径前缀

# 你的原有复杂循环逻辑
total_step = 10000 # 替换为你的实际循环总步数
for step in range(total_step):
    try:
        # 原有循环业务代码写在这里
        logging.debug(f"第{step}步处理完成,当前中间结果:xxx") # 替换为你需要打印的调试信息
        
        # 每N步同步一次日志到S3,可根据循环时长调整步长,避免频繁调用S3接口
        if step % 200 == 0 or step == total_step - 1:
            s3_client.upload_file(
                LOG_FILE, 
                S3_BUCKET, 
                os.path.join(S3_LOG_PATH, f"run_{datetime.now().strftime('%Y%m%d%H%M%S')}.log")
            )
    except Exception as e:
        logging.error(f"第{step}步处理失败,错误信息:{str(e)}", exc_info=True)
        # 出错时立即同步最新日志到S3,避免日志丢失
        s3_client.upload_file(
            LOG_FILE, 
            S3_BUCKET, 
            os.path.join(S3_LOG_PATH, f"crash_{datetime.now().strftime('%Y%m%d%H%M%S')}.log")
        )
        raise e

方案B:使用SageMaker原生日志自动转储S3

如果你不想修改原有业务代码,可以直接使用SageMaker自带的日志能力,所有控制台输出会自动同步到CloudWatch Logs,再配置导出规则转储到S3即可:

  • 创建SageMaker训练/处理作业时,保持日志相关默认配置开启即可,作业运行期间所有print、控制台输出内容都会自动同步到对应CloudWatch日志组
  • 打开CloudWatch控制台,找到对应SageMaker作业的日志组,创建导出任务,设置导出目标为你的S3存储桶即可,也可以配置定期自动导出规则实现自动同步。

3. 注意事项

  • 如果循环运行时长超过12小时,建议按小时/固定步长拆分日志文件,避免单日志文件过大导致上传失败
  • 调试日志建议打印循环关键参数、中间结果校验值,方便后续问题定位
  • 如果在SageMaker Studio交互式环境中运行,需要提前关闭会话自动休眠功能,避免运行中断导致日志丢失

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 19:06:06