本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
训练作业中的增强清单文件
要在训练作业中随您的数据集包含元数据,请使用增强清单文件。使用增强清单文件时,您的数据集必须存储在 Amazon Simple Storage Service (Amazon S3) 中,并且必须配置训练作业以使用存储在该位置的数据集。您可以为一个或多个 Channel
指定此数据集的位置和格式。增强清单只能支持管道输入模式。Channel
要了解有关管道输入模式的更多信息,请参阅InputMode中的部分。
指定通道参数时,您需要指定文件的路径,称为 S3Uri
。Amazon SageMaker AI URI 根据S3DataType
中S3DataSource
指定的内容对此进行解释。AugmentedManifestFile
选项定义随输入数据包括元数据的清单格式。在您有标记过的数据时,使用增强清单文件是一种替代的预处理方法。对于使用标记过数据的训练作业,您通常需要预处理数据集,从而在训练前将输入数据与元数据组合起来。如果您的训练数据集较大,预处理的时间可能会较长,成本高昂。
增强清单文件格式
增强的清单文件必须以 Lin JSONes
在训练过程中, SageMaker AI 会解析每JSON行并将其部分或全部属性发送到训练算法。您可以使用的AttributeNames
参数指定要传递的属性内容以及传递这些内容的顺序CreateTrainingJob
API。该AttributeNames
参数是 SageMaker AI 在JSON对象中查找的属性名称的有序列表,以用作训练输入。
例如,如果您为 AttributeNames
列出 ["line", "book"]
,则输入数据必须按指定顺序包括 line
和 book
的属性名称。对于本示例,以下增强清单文件内容有效:
{"author": "Herman Melville", "line": "Call me Ishmael", "book": "Moby Dick"} {"line": "It was love at first sight.", "author": "Joseph Heller", "book": "Catch-22"}
SageMaker AI 会忽略未列出的属性名称,即使它们位于列出的属性之前、之后或介于列出的属性之间。
使用增强清单文件时,请遵循以下准则:
-
在
AttributeNames
参数中列出的属性顺序确定了在训练作业中传递到算法的属性顺序。 -
列出的
AttributeNames
可以是该JSON行中所有属性的子集。 SageMaker AI 会忽略文件中未列出的属性。 -
您可以指定JSON格式允许的任何类型的数据
AttributeNames
,包括文本、数字、数据数组或对象。 -
要将 S3 URI 作为属性名称包括在内,请为其
-ref
添加后缀。
如果属性名称包含后缀-ref
,则该属性的值必须是训练作业可以访问的数据文件的 S3 URI。例如,如果 AttributeNames
包含 ["image-ref", "is-a-cat"]
,以下示例显示有效的增强清单文件:
{"image-ref": "s3://amzn-s3-demo-bucket/sample01/image1.jpg", "is-a-cat": 1} {"image-ref": "s3://amzn-s3-demo-bucket/sample02/image2.jpg", "is-a-cat": 0}
对于此清单文件的第一JSON行, SageMaker AI 会从中检索image1.jpg
文件s3://amzn-s3-demo-bucket/sample01/
以及"1"
用于图像分类的is-a-cat
属性的字符串表示形式。
提示
要创建增强的清单文件,请使用 Amazon G SageMaker round Truth 并创建标签任务。有关标注作业的输出的更多信息,请参阅标注作业输出数据。
使用增强清单文件
以下各节向您展示如何在 Amazon SageMaker 训练作业中使用增强的清单文件,无论是通过 A SageMaker I 控制台还是使用 SageMaker Python SDK 以编程方式使用。
使用增强清单文件(控制台)
要完成此过程,您需要:
-
您存储增强清单文件的 S3 存储桶。URL
-
将在增强清单文件中列出的数据存储到 S3 存储桶中。
-
您要在其中存储任务输出的 S3 存储桶。URL
在训练作业中使用增强清单文件(控制台)
打开 Amazon A SageMaker I 控制台,网址为https://console.aws.amazon.com/sagemaker/
。 -
在导航窗格中,选择 Training (训练),然后选择 Training jobs (训练作业)。
-
选择 Create training job (创建训练作业)。
-
为训练作业提供一个名称。在 Amazon 账户的某个 Amazon 区域内,该名称必须是唯一的。名称可以包括 1 到 63 个字符。有效字符:a-z、A-Z、0-9 和 . : + = @ _ % -(连字符)。
-
选择要使用的算法。有关支持的内置算法的信息,请参阅Amazon 中的内置算法和预训练模型 SageMaker。如果您希望使用自定义算法,请确保该算法与管道模式兼容。
-
(可选)对于 Resource configuration (资源配置),请接受默认值,如果要减少计算时间,请增加资源消耗。
-
(可选)对于 Instance type (实例类型),选择您要使用的 ML 计算实例类型。在大多数情况下 ml.m4.xlarge 便足够。
-
对于 Instance count (实例计数),请使用默认值
1
。 -
(可选)对于 Additional volume per instance (GB) (每个实例的附加卷 (GB)),请选择您要预配置的 ML 存储卷的大小。在大部分情况下,您可以使用默认值
1
。如果您使用大数据集,请使用较大的大小。
-
-
为训练数据集提供有关输入数据的信息。
-
对于 Channel name (通道名称),请接受默认值 (
train
) 或者输入更有意义的名称,例如training-augmented-manifest-file
。 -
对于 InputMode,选择 Pip e。
-
对于 S3 数据分配类型,选择FullyReplicated。进行增量训练时,完全复制会导致各个 ML 计算实例使用扩展数据集的完整副本。对于基于神经的算法,例如 神经主题模型 (NTM) 算法,请选择
ShardedByS3Key
。 -
如果在增强清单文件中指定的数据未压缩,请将 Compression type (压缩类型) 设置为 None (无)。如果使用 gzip 压缩了数据,请将其设置为 Gzip。
-
(可选)对于内容类型,请指定相应的MIME类型。内容类型是数据的多用途互联网邮件扩展 (MIME) 类型。
-
对于 Record wrapper (记录包装程序),如果在增强清单文件中指定的数据集以 RecordIO 格式保存,则选择 RecordIO。如果您的数据集未另存为 RecordIO 格式的文件,请选择 None (无)。
-
对于 S3 数据类型,选择AugmentedManifestFile。
-
对于 S3 location (S3 位置),提供您存储增强清单文件的存储桶的路径。
-
对于AugmentedManifestFile 属性名称,请指定要使用的属性的名称。属性名称必须存在于增强清单文件中,并且区分大小写。
-
(可选)要添加更多属性,请选择 Add row(添加行) 并为各个属性指定其他属性名称。
-
(可选)要调整属性名称的顺序,请选择名称旁边的上移或下移按钮。使用增强清单文件时,指定属性名称的顺序非常重要。
-
选择完成。
-
-
对于 Output data configuration (输出数据配置),请提供以下信息:
-
对于 S3 location (S3 位置),键入存储输出数据的 S3 存储桶的路径。
-
(可选)您可以使用 Amazon Key Management Service (Amazon KMS) 加密密钥对静态输出数据进行加密。对于加密密钥,请提供密钥 ID 或其 Amazon 资源编号 (ARN)。有关更多信息,请参阅 KMS-托管加密密钥。
-
-
(可选)对于 Tags (标签),向训练作业添加一个或多个标签。标签是您定义并分配到 Amazon 资源的元数据。在这种情况下,您可以使用标签来帮助您管理训练作业。标签包含由您定义的键和值。例如,您可能希望创建一个标签,使用
Project
作为键,其值引用与训练作业相关的项目,例如Home value forecasts
。 -
选择创建训练作业。 SageMaker AI 创建并运行训练作业。
训练作业完成后, SageMaker AI 会将模型工件存储在存储桶中,您在 “输出数据配置” 字段中为 S3 输出路径提供了该存储桶的路径。要部署模型以获取预测,请参阅将模型部署到 Amazon EC2。
使用增强的清单文件 (API)
以下内容展示了如何使用 A SageMaker I 高级别 Python 库使用增强的清单文件训练模型:
import sagemaker # Create a model object set to using "Pipe" mode. model = sagemaker.estimator.Estimator(
training_image
, role, instance_count=1, instance_type='ml.p3.2xlarge', volume_size = 50, max_run = 360000, input_mode = 'Pipe', output_path=s3_output_location
, sagemaker_session=session
) # Create a train data channel with S3_data_type as 'AugmentedManifestFile' and attribute names. train_data = sagemaker.inputs.TrainingInput(your_augmented_manifest_file
, distribution='FullyReplicated', content_type='application/x-recordio', s3_data_type='AugmentedManifestFile', attribute_names=['source-ref'
,'annotations'
], input_mode='Pipe', record_wrapping='RecordIO' ) data_channels = {'train': train_data} # Train a model. model.fit(inputs=data_channels, logs=True)
训练作业完成后, SageMaker AI 会将模型工件存储在存储桶中,您在 “输出数据配置” 字段中为 S3 输出路径提供了该存储桶的路径。要部署模型以获取预测,请参阅将模型部署到 Amazon EC2。