本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Amazon SageMaker 训练存储路径来存储训练数据集、检查点、模型工件和输出
本页简要概述了 SageMaker 训练平台如何管理训练数据集的存储路径、模型工件、检查点以及 Amazon 云存储和训练作业之间的输出 SageMaker。在本指南中,您将学习如何识别 SageMaker 平台设置的默认路径,以及如何使用亚马逊简单存储服务 (Amazon S3)、FSx for Lustre 和 Amazon EFS 中的数据源简化数据通道。有关各种数据通道的输入模式和存储选项的更多信息,请参阅访问训练数据。
概述
下图显示了使用 SageMaker Python SDK E stimator
![](images/sagemaker-training-storage.png)
您可以在 CreateTrainingJobAPI OutputDataConfig
中使用来查找 S3 存储桶的位置。使用 ModelArtifactsAPI 查找包含您的模型构件的 S3 位置。有关输出路径以及如何在 API 调用中使用输出路径的示例,请参阅 abalone_build_train_deploy
有关如何在 SageMaker 训练实例中 SageMaker 管理数据源、输入模式和本地路径的更多信息和示例,请参阅访问训练数据。
未压缩的模型输出
SageMaker 将您的模型存储在中/opt/ml/model
,您的数据存储在中/opt/ml/output/data
。将模型和数据写入这些位置后,默认情况下,它们会作为压缩文件上传到您的 Amazon S3 存储桶。
您可以将模型和数据输出作为未压缩文件上传到 S3 存储桶,从而节约压缩大型数据文件的时间。为此,请使用 Amazon Command Line Interface (Amazon CLI) 或 SageMaker Python SDK 在未压缩上传模式下创建训练作业。
以下代码示例显示如何在使用 Amazon CLI时,在未压缩上传模式下创建训练作业。要启用未压缩上传模式,请将 OutputDataConfig
API 中的 CompressionType
字段设置为 NONE
。
{ "TrainingJobName": "
uncompressed_model_upload
", ... "OutputDataConfig": { "S3OutputPath": "s3://DOC-EXAMPLE-BUCKET/uncompressed_upload/output
", "CompressionType": "NONE" }, ... }
以下代码示例向您展示了如何使用 SageMaker Python SDK 在未压缩上传模式下创建训练作业。
import sagemaker from sagemaker.estimator import Estimator estimator = Estimator( image_uri="
your-own-image-uri
", role=sagemaker.get_execution_role(), sagemaker_session=sagemaker.Session(), instance_count=1, instance_type='ml.c4.xlarge
', disable_output_compression=True )
设置存储路径的提示和注意事项
在中为训练作业设置存储路径时,请考虑以下事项 SageMaker。
-
如果要将分布式训练的训练构件存储在
/opt/ml/output/data
目录中,则必须通过模型定义或训练脚本正确地追加子目录或者为这些构件使用唯一的文件名。如果未正确配置子目录和文件名,则所有分布式训练工件可能都会在 Amazon S3 中将输出写入相同输出路径下的相同文件名。 -
如果您使用自定义训练容器,请务必安装有助于为SageMaker 训练作业设置环境的 SageMaker 培训工具包
。否则,您必须在 Dockerfile 中明确指定环境变量。有关更多信息,请参阅使用自己的算法和模型创建容器。 -
使用带有 NVMe 固态硬盘卷的 M L 实例时, SageMaker 不要预配置 Amazon EBS gp2 存储。可用存储空间固定在 NVMe 类型实例的存储容量上。 SageMaker 为训练数据集、检查点、模型工件和输出配置存储路径,以使用实例存储的全部容量。例如,具有 NVMe 类型实例存储的机器学习实例系列包括
ml.p4d
、ml.g4dn
和ml.g5
。使用带有 “仅限 EBS 存储” 选项且不带实例存储的 ML 实例时,必须通过 SageMaker估算器类中的volume_size
参数定义 EBS 卷的大小(或者VolumeSizeInGB
如果您使用的是 API)。ResourceConfig
例如,使用 EBS 卷的机器学习实例系列包括ml.c5
和ml.p2
。要查找实例类型及其实例存储类型和卷,请参阅 Amazon EC2 实例类型。 -
SageMaker 训练作业的默认路径挂载到机器学习实例的 Amazon EBS 卷或 NVMe 固态硬盘卷。在调整训练脚本时 SageMaker,请确保使用上一个主题中列出的默认路径SageMaker 环境变量和训练存储位置的默认路径。我们建议您将
/tmp
目录用作暂存空间,以便在训练期间临时存储任何大型对象。这意味着不得使用装载到为系统分配的小磁盘空间的目录,例如/user
和/home
,以免 out-of-space 出现错误。
要了解更多信息,请参阅 Amazon 机器学习博客 “为你的 Amazon SageMaker 训练作业选择最佳数据源
SageMaker 环境变量和训练存储位置的默认路径
下表汇总了由训练平台管理的训练数据集、检查点、模型工件和输出的输入和输出路径。 SageMaker
SageMaker 训练实例中的本地路径 | SageMaker 环境变量 | 用途 | 在启动期间从 S3 读取 | 在竞价型重启期间从 S3 读取 | 训练期间写入 S3 | 作业终止时写入 S3 |
---|---|---|---|---|---|---|
|
SM_CHANNEL_ |
从通过 SageMaker Python SDK 估算器类或 CreateTrainingJob |
支持 | 是 | 否 | 否 |
|
SM_OUTPUT_DIR |
保存输出,例如损耗、精度、中间层、权重、梯度、偏差和兼容 TensorBoard输出。您也可以使用此路径保存所有您想要的任意输出。请注意,这与存储最终模型构件的路径 |
否 | 否 | 否 | 是 |
|
SM_MODEL_DIR |
存储最终的模型构件。这也是在 SageMaker 托管中部署模型工件以进行实时推理的路径。 |
否 | 否 | 否 | 是 |
|
- |
保存模型检查点(模型状态)以便从某个点恢复训练,并且能够从意外或托管竞价型训练中断中恢复。 |
支持 | 是 | 是 | 不支持 |
|
SAGEMAKER_SUBMIT_DIRECTORY |
复制训练脚本、其他库和依赖项。 |
支持 | 是 | 否 | 否 |
|
- |
读取或写入 |
否 | 否 | 否 | 否 |
1 channel_name
是为训练数据输入指定用户定义通道名称的地方。每个训练作业可以包含多个数据输入通道。您最多可以为每个训练作业指定 20 个训练输入通道。请注意,从数据通道下载数据的时间计入计费时间。有关数据输入路径的更多信息,请参阅 Amazon 如何 SageMaker提供培训信息。此外,还 SageMaker 支持三种类型的数据输入模式:文件模式 FastFile、管道模式和管道模式。要详细了解用于训练的数据输入模式 SageMaker,请参阅访问训练数据。
2 SageMaker 压缩训练工件并将其写入 TAR 文件 (tar.gz
)。压缩和上传的时间计入计费时间。有关更多信息,请参阅 Amazon 如何 SageMaker 处理训练输出。
3 SageMaker 压缩并写入最终的模型工件到 TAR 文件 (tar.gz
)。压缩和上传的时间计入计费时间。有关更多信息,请参阅 Amazon 如何 SageMaker 处理训练输出。
4 在训练期间与 Amazon S3 同步。按原样写入,而不压缩为 TAR 文件。有关更多信息,请参阅在 Amazon 中使用检查点 SageMaker。