训练作业中的增强清单文件 - 亚马逊 SageMaker AI
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

训练作业中的增强清单文件

要在训练作业中随您的数据集包含元数据,请使用增强清单文件。使用增强清单文件时,您的数据集必须存储在 Amazon Simple Storage Service (Amazon S3) 中,并且必须配置训练作业以使用存储在该位置的数据集。您可以为一个或多个 Channel 指定此数据集的位置和格式。增强清单只能支持管道输入模式。Channel要了解有关管道输入模式的更多信息,请参阅InputMode中的部分。

指定通道参数时,您需要指定文件的路径,称为 S3Uri。Amazon SageMaker AI URI 根据S3DataTypeS3DataSource指定的内容对此进行解释。AugmentedManifestFile 选项定义随输入数据包括元数据的清单格式。在您有标记过的数据时,使用增强清单文件是一种替代的预处理方法。对于使用标记过数据的训练作业,您通常需要预处理数据集,从而在训练前将输入数据与元数据组合起来。如果您的训练数据集较大,预处理的时间可能会较长,成本高昂。

增强清单文件格式

增强的清单文件必须以 Lin JSONes 格式进行格式化。在 Lin JSON es 格式中,文件中的每一行都是一个完整的JSON对象,后面有一个换行符分隔符。

在训练过程中, SageMaker AI 会解析每JSON行并将其部分或全部属性发送到训练算法。您可以使用的AttributeNames参数指定要传递的属性内容以及传递这些内容的顺序CreateTrainingJobAPI。该AttributeNames参数是 SageMaker AI 在JSON对象中查找的属性名称的有序列表,以用作训练输入。

例如,如果您为 AttributeNames 列出 ["line", "book"],则输入数据必须按指定顺序包括 linebook 的属性名称。对于本示例,以下增强清单文件内容有效:

{"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

在训练作业中使用增强清单文件(控制台)
  1. 打开 Amazon A SageMaker I 控制台,网址为https://console.aws.amazon.com/sagemaker/

  2. 在导航窗格中,选择 Training (训练),然后选择 Training jobs (训练作业)

  3. 选择 Create training job (创建训练作业)

  4. 为训练作业提供一个名称。在 Amazon 账户的某个 Amazon 区域内,该名称必须是唯一的。名称可以包括 1 到 63 个字符。有效字符:a-z、A-Z、0-9 和 . : + = @ _ % -(连字符)。

  5. 选择要使用的算法。有关支持的内置算法的信息,请参阅Amazon 中的内置算法和预训练模型 SageMaker。如果您希望使用自定义算法,请确保该算法与管道模式兼容。

  6. (可选)对于 Resource configuration (资源配置),请接受默认值,如果要减少计算时间,请增加资源消耗。

    1. (可选)对于 Instance type (实例类型),选择您要使用的 ML 计算实例类型。在大多数情况下 ml.m4.xlarge 便足够。

    2. 对于 Instance count (实例计数),请使用默认值 1

    3. (可选)对于 Additional volume per instance (GB) (每个实例的附加卷 (GB)),请选择您要预配置的 ML 存储卷的大小。在大部分情况下,您可以使用默认值 1。如果您使用大数据集,请使用较大的大小。

  7. 为训练数据集提供有关输入数据的信息。

    1. 对于 Channel name (通道名称),请接受默认值 (train) 或者输入更有意义的名称,例如 training-augmented-manifest-file

    2. 对于 InputMode,选择 Pip e。

    3. 对于 S3 数据分配类型,选择FullyReplicated。进行增量训练时,完全复制会导致各个 ML 计算实例使用扩展数据集的完整副本。对于基于神经的算法,例如 神经主题模型 (NTM) 算法,请选择 ShardedByS3Key

    4. 如果在增强清单文件中指定的数据未压缩,请将 Compression type (压缩类型) 设置为 None (无)。如果使用 gzip 压缩了数据,请将其设置为 Gzip

    5. (可选)对于内容类型,请指定相应的MIME类型。内容类型是数据的多用途互联网邮件扩展 (MIME) 类型。

    6. 对于 Record wrapper (记录包装程序),如果在增强清单文件中指定的数据集以 RecordIO 格式保存,则选择 RecordIO。如果您的数据集未另存为 RecordIO 格式的文件,请选择 None (无)

    7. 对于 S3 数据类型,选择AugmentedManifestFile

    8. 对于 S3 location (S3 位置),提供您存储增强清单文件的存储桶的路径。

    9. 对于AugmentedManifestFile 属性名称,请指定要使用的属性的名称。属性名称必须存在于增强清单文件中,并且区分大小写。

    10. (可选)要添加更多属性,请选择 Add row(添加行) 并为各个属性指定其他属性名称。

    11. (可选)要调整属性名称的顺序,请选择名称旁边的上移或下移按钮。使用增强清单文件时,指定属性名称的顺序非常重要。

    12. 选择完成

  8. 对于 Output data configuration (输出数据配置),请提供以下信息:

    1. 对于 S3 location (S3 位置),键入存储输出数据的 S3 存储桶的路径。

    2. (可选)您可以使用 Amazon Key Management Service (Amazon KMS) 加密密钥对静态输出数据进行加密。对于加密密钥,请提供密钥 ID 或其 Amazon 资源编号 (ARN)。有关更多信息,请参阅 KMS-托管加密密钥

  9. (可选)对于 Tags (标签),向训练作业添加一个或多个标签。标签是您定义并分配到 Amazon 资源的元数据。在这种情况下,您可以使用标签来帮助您管理训练作业。标签包含由您定义的键和值。例如,您可能希望创建一个标签,使用 Project 作为键,其值引用与训练作业相关的项目,例如 Home value forecasts

  10. 选择创建训练作业。 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