用于SageMaker训练数据集、检查点、模型构件和输出的 Amazon Training 存储文件夹 - Amazon SageMaker

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

用于SageMaker训练数据集、检查点、模型构件和输出的 Amazon Training 存储文件夹

本页概述了SageMaker训练平台如何管理AWS云存储和训练作业之间的训练数据集的存储路径、模型工件、检查点和输出SageMaker。在本指南中,您将学习识别SageMaker平台设置的默认路径,以及如何使用亚马逊简单存储服务 (Amazon S3)、FsX for Lustre 和 Amazon EFS 中的数据源来简化数据通道。有关各种数据通道输入模式和存储选项的更多信息,请参阅访问训练数据

概览

下图显示了使用 SageMaker Python SDK E stimator 类及其拟合方法运行训练作业时如何SageMaker管理输入和输出文件夹的最简单示例。它基于使用文件模式作为数据访问策略,使用 Amazon S3 作为训练输入通道的数据源。

This figure shows an overview of how SageMaker pairs storage paths between an Amazon S3 bucket as the data source and the SageMaker training instance based on how the paths are specified in a SageMaker estimator class. More information about the paths, how they read from or write to the paths, and purposes of the paths are described in the following section SageMaker训练存储文件夹的环境变量和默认路径.

有关如何在SageMaker训练实例中SageMaker管理数据源、输入模式和本地路径的更多信息和示例,请参阅访问训练数据

未压缩的模型输出

SageMaker将您的模型存储在中/opt/ml/model并将数据存储在中/opt/ml/output/data。将模型和数据写入这些位置后,默认情况下,它们会作为压缩文件上传到您的 Amazon S3 存储桶。

通过将模型和数据输出作为未压缩文件上传到 S3 存储桶,可以节省压缩大型数据文件的时间。为此,请使用 AWS Command Line Interface (AWS CLI) 或 SageMaker Python SDK 在未压缩的上传模式下创建训练作业。

以下代码示例显示了在使用时如何在未压缩的上传模式下创建训练作业。AWS 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 固态硬盘卷的机器学习实例时,SageMaker不预置 Amazon EBS gp2 存储。可用存储空间固定为 NVMe 类型实例的存储容量。SageMaker为训练数据集、检查点、模型对象和输出配置存储路径,以使用实例存储的全部容量。例如,具有 NVMe 类型实例存储的 ML 实例系列包括ml.p4dml.g4dn、和。ml.g5在使用具有 EBS 存储选项且没有实例存储的 ML 实例时,必须通过SageMaker估算器类中的volume_size参数定义 EBS 卷的大小(或者VolumeSizeInGB如果您使用的是 API)。ResourceConfig例如,使用 EBS 卷的 ML 实例系列包括ml.c5和。ml.p2要查找实例类型及其实例存储类型和容量,请参阅 Amazon EC2 实例类型

  • SageMaker训练任务的默认路径安装到机器学习实例的 Amazon EBS 卷或 NVMe 固态硬盘卷。在调整训练脚本时SageMaker,请确保使用上一主题中列出的默认路径SageMaker训练存储文件夹的环境变量和默认路径。我们建议您将该/tmp目录用作临时空间,用于在训练期间临时存储任何大型对象。这意味着,为了避免出out-of-space错,您不得使用装载到为系统分配的小磁盘空间上的目录/home,例如/user和。

要了解更多信息,请参阅AWS机器学习博客为您的亚马逊SageMaker培训工作选择最佳数据源,该博客进一步讨论了数据源和输入模式的案例研究和性能基准。

SageMaker训练存储文件夹的环境变量和默认路径

下表汇总了由训练平台管理的训练数据集、检查点、模型工件和输出的输入和输出路径。SageMaker

SageMaker训练实例中的本地路径 SageMaker 环境变量 目的 启动时从 S3 读取 在即时重启期间从 S3 读取 训练期间写入 S3 任务终止时写入 S3

/opt/ml/input/data/channel_name1

SM_CHANNEL_ 频道_名称

从通过 SageMaker Python SDK 估算器类或 CreateTrainingJobAPI 操作指定的输入通道读取训练数据。有关如何使用 SageMaker Python SDK 在训练脚本中指定它的更多信息,请参阅准备训练脚本

/opt/ml/output/data2

SM_OUTPUT_DIR

保存损耗、精度、中间层、权重、梯度、偏差和TensorBoard兼容输出等输出。你也可以使用这个路径保存任何你想要的任意输出。请注意,这与存储最终模型工件的路径不同/opt/ml/model/

/opt/ml/model3

SM_MODEL_DIR

存储最终的模型工件。这也是在 Ho SageMaker sting 中部署模型工件以进行实时推断的路径。

/opt/ml/checkpoints4

-

保存模型检查点(模型状态)以从某个点恢复训练,并从意外或托管的现场训练中断中恢复。

/opt/ml/code

SAGEMAKER_SUBMAKER_SUB

复制训练脚本、其他库和依赖关系。

/tmp

-

/tmp作为临时空间读取或写入。

1 channel_name 是为训练数据输入指定用户定义的通道名称的地方。每个训练作业可以包含多个数据输入通道。每个训练作业最多可以指定 20 个训练输入通道。请注意,从数据通道下载数据的时间计入计费时间。有关数据输入路径的更多信息,请参阅亚马逊如何SageMaker提供培训信息。此外,SageMaker支持三种类型的数据输入模式:文件模式和管道模式。FastFile要详细了解用于训练的数据输入模式SageMaker,请参阅访问训练数据

2 SageMaker 压缩训练工件并将其写入 TAR 文件 (tar.gz)。压缩和上传时间计入计费时间。有关更多信息,请参阅亚马逊如何SageMaker处理培训输出

3 SageMaker 压缩最终模型工件并将其写入 TAR 文件 (tar.gz)。压缩和上传时间计入计费时间。有关更多信息,请参阅亚马逊如何SageMaker处理培训输出

4 在训练期间与亚马逊 S3 同步。按原样写入,不压缩为 TAR 文件。有关更多信息,请参阅在亚马逊使用检查点SageMaker