如何通过自定义CloudWatch日志调试SageMaker Pipeline
在SageMaker Pipeline中输出自定义日志
是的,完全可以在SageMaker Pipeline的步骤中输出自定义日志,CloudWatch会自动捕获这些内容,以下是不同步骤类型的实现方式:
1. ProcessingStep(处理步骤)
如果使用SageMaker Processing容器,直接在处理脚本(如Python脚本)里用print()输出,或通过logging模块打印:
import logging # 配置日志基础设置 logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) # 输出自定义日志内容 print("Processing流程启动:开始加载数据集") logger.info("数据集加载完成,共读取1200条样本") logger.error("数据校验失败:样本缺少必填字段'user_id'")
这些内容会被同步到对应ProcessingJob的CloudWatch日志流中。
2. TrainingStep(训练步骤)
训练脚本中同样可以用print()或logging模块输出自定义日志:
import logging logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) # 训练过程中输出关键节点日志 print("Epoch 3 训练启动") logger.info("Epoch 3 训练损失:0.32") logger.warning("验证集准确率下降,当前值为0.87")
训练日志会出现在对应TrainingJob的CloudWatch日志组内。
3. 自定义脚本步骤(如ScriptProcessor)
若使用ScriptProcessor运行自定义脚本,确保脚本的标准输出/错误未被重定向,直接打印的内容会被CloudWatch捕获。例如shell脚本:
echo "预处理脚本启动" echo "正在处理目标文件:raw_data.csv"
关键注意事项
- 合理设置日志级别,避免冗余日志的同时,确保关键错误信息不被遗漏
- 不要将日志输出到容器本地文件,直接使用标准输出/错误流,才能被CloudWatch正常捕获
- Pipeline步骤无需额外配置日志捕获,SageMaker默认会同步步骤的所有标准输出/错误到CloudWatch
内容的提问来源于stack exchange,提问作者Nathaniel Rink
相关产品推荐
相关产品推荐

