本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon SageMaker AI 中的检查点
在训练期间,在 Amazon SageMaker AI 中使用检查点保存机器学习(ML)模型的状态。检查点是模型的快照,可以通过机器学习框架的回调函数进行配置。您可以使用保存的检查点,根据上次保存的检查点重新启动训练作业。
通过使用检查点,可执行以下操作:
-
当训练作业或实例意外中断时,保存训练中模型的快照。
-
将来从检查点恢复模型训练。
-
在训练的中间阶段分析模型。
-
将检查站与 S3 Express One Zone 结合使用,可提高访问速度。
-
将检查点与 SageMaker AI 托管竞价型训练结合使用以节约训练成本。
SageMaker 训练机制使用 Amazon EC2 实例上的训练容器,而检查点文件保存在对应容器的本地目录下(默认目录是 /opt/ml/checkpoints)。SageMaker AI 提供将检查点从本地路径复制到 Amazon S3 的功能,并自动将该目录中的检查点与 S3 同步。S3 中的现有检查点会在作业开始时写入 SageMaker AI 容器,从而能够从检查点恢复作业。在作业开始后添加到 S3 文件夹的检查点不会复制到训练容器中。在训练期间,SageMaker AI 还会将新的检查点从容器写入 S3。如果在 SageMaker AI 容器中删除某个检查点,该检查点也将被从 S3 文件夹中删除。
您可以在 Amazon SageMaker AI 中使用检查点和 Amazon S3 Express One Zone 存储类(S3 Express One Zone),以便更快地访问检查点。启用检查点功能并为检查点存储目标指定 S3 URI 时,可以为 S3 通用存储桶或 S3 目录存储桶中的文件夹提供 S3 URI。与 SageMaker AI 集成的 S3 目录存储桶只能使用 Amazon S3 管理密钥(SSE-S3)进行服务器端加密。目前不支持使用 AWS KMS 密钥的服务器端加密(SSE-KMS)。有关 S3 Express One Zone 和 S3 目录存储桶的更多信息,请参阅什么是 S3 Express One Zone。
如果您在 SageMaker AI 托管竞价型训练中使用检查点,SageMaker AI 会在一个竞价型实例上管理模型训练检查点,并在下一个竞价型实例上恢复训练作业。借助 SageMaker AI 托管竞价型训练,您可以显著缩短训练机器学习模型的计费时间。有关更多信息,请参阅 Amazon SageMaker AI 中的托管竞价型训练。
SageMaker AI 框架和算法的检查点
使用检查点,为在 SageMaker AI 中的首选框架上构建的机器学习模型保存快照。
支持检查点的 SageMaker AI 框架和算法
SageMaker AI 支持为 AWS 深度学习容器和一部分内置算法使用检查点,而无需更改训练脚本。SageMaker AI 将检查点保存到默认本地路径 '/opt/ml/checkpoints' 并将其复制到 Amazon S3。
-
深度学习容器:TensorFlow
、PyTorch 、MXNet 和 HuggingFace 注意
如果您使用 HuggingFace 框架估算器,需要通过超参数指定检查点输出路径。有关更多信息,请参阅 HuggingFace 文档中的在 Amazon SageMaker AI 中运行训练
。 -
内置算法:图像分类、对象检测、语义分割和 XGBoost(0.90-1 或更高版本)
注意
如果您在框架模式(脚本模式)下使用 XGBoost 算法,则需要带有手动配置检查点的 XGBoost 训练脚本。有关使用 XGBoost 训练方法时保存模型快照的更多信息,请参阅 XGBoost Python SDK 文档中的训练 XGBoost
。
如果在托管竞价型训练作业中使用不支持检查点的预构建算法,则 SageMaker AI 不支持作业的最长等待时间超过一小时,以限制因中断而浪费的训练时间。
用于自定义训练容器和其他框架
如果您使用上一部分未列出的、您自己的训练容器、训练脚本或其他框架,则必须使用回调或训练 API 正确设置训练脚本,以将检查点保存到本地路径 ('/opt/ml/checkpoints'),然后从训练脚本中的本地路径加载。SageMaker AI 估算器可以与本地路径同步,并将检查点保存到 Amazon S3。
检查点的注意事项
在 SageMaker AI 中使用检查点时请考虑以下几点。
-
为避免在使用多个实例的分布式训练中发生覆盖,必须在训练脚本中手动配置检查点文件名和路径。高级别 SageMaker AI 检查点配置指定单个 Amazon S3 位置,不使用额外的后缀或前缀标记来自多个实例的检查点。
-
SageMaker Python SDK 不支持检查点频率的高级配置。要控制检查点频率,请使用框架的模型保存功能或检查点回调来修改训练脚本。
-
如果您将 SageMaker AI 检查点与 SageMaker Debugger 和 SageMaker AI 分布式训练一起使用并且遇到问题,请参阅以下页面中的故障排查和注意事项。