訓練任務的增強資訊清單檔案 - Amazon SageMaker AI

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

訓練任務的增強資訊清單檔案

使用擴增的資訊清單檔案,在訓練任務中包含具有您資料集的中繼資料。使用擴增的資訊清單檔案時,您的資料集必須存放在 Amazon Simple Storage Service (Amazon S3),而且您必須設定訓練任務使用存放於此的資料集。您要針對一或多個 Channel 指定此資料集的位置和格式。擴增資訊清單只能支援管道輸入模式。請參閱部分,InputModeChannel以瞭解有關管道輸入模式的詳細資訊。

指定通道的參數時,您指定的檔案路徑稱為 S3Uri。Amazon SageMaker AI 會根據 S3DataType中指定的 來解譯此 URIS3DataSourceAugmentedManifestFile 選項定義的資訊清單格式,包括具有輸入資料的中繼資料。當您有標籤資料時,也可以使用擴增的資訊清單檔案預先處理。針對使用標籤日期的訓練任務,您通常需要預先處理資料集,結合輸入資料和中繼資料後再訓練。如果您的訓練資料集很大,預先處理費時又費錢。

擴增的資訊清單檔案格式

擴增的資訊清單檔案格式必須為 JSON 行格式。在 JSON 行格式中,檔案的每一行都是完整的 JSON 物件後接換行分隔符號。

在訓練期間,SageMaker AI 會剖析每個 JSON 行,並將部分或全部屬性傳送到訓練演算法。您要使用 CreateTrainingJob API 的 AttributeNames 參數指定傳遞的屬性內容和順序。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 會忽略檔案中未列出的屬性。

  • 您可以在 AttributeNames 中指定 JSON 格式允許的任何資料類型,包括文字、數值、資料陣列或物件。

  • 若要包含 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屬性的字串表示法。

提示

若要建立擴增的資訊清單檔案,請使用 SageMaker Ground Truth 來建立標籤工作。如需有關從標籤工作輸出的詳細資訊,請參閱標記任務輸出資料

使用增強型資訊清單檔案

下列各節說明如何在 Amazon SageMaker 訓練任務中使用擴增資訊清單檔案,無論是搭配 SageMaker AI 主控台,或是使用 SageMaker Python SDK 以程式設計方式使用。

使用擴增的資訊清單檔案 (主控台)

若要完成此程序,您需要:

  • 存放擴增資訊清單檔案之 S3 儲存貯體的 URL。

  • 將列在擴增資訊清單檔案中的資料存放在 S3 儲存貯體。

  • 用來存放工作輸出的 S3 儲存貯體的 URL。

在訓練任務中使用擴增的資訊清單檔案 (主控台)
  1. https://console.aws.amazon.com/sagemaker/:// 開啟 Amazon SageMaker AI 主控台。

  2. 在導覽窗格中,選擇訓練,然後選擇訓練工作

  3. 選擇建立訓練工作

  4. 提供訓練任務的名稱。名稱在 AWS 帳戶中的 AWS 區域內必須是唯一的。長度為 1 至 63 個字元。有效字元:a-z、A-Z、0-9 和 . : + = @ _ % - (連字號)。

  5. 選擇您想要使用的演算法。如需支援內建演算法的詳細資訊,請參閱Amazon SageMaker 中的內建演算法和預先訓練的模型。如果您想要使用自訂的演算法,請確定它與管道模式相容。

  6. (選用) 針對資源組態,接受預設值,或增加資源耗用量以降低運算時間。

    1. (選用) 針對執行個體類型,選擇您想要使用的機器學習 (ML) 運算執行個體類型。在大部分的情況下,ml.m4.xlarge 就足夠。

    2. 針對執行個體計數,使用預設值 1

    3. (選用) 針對 Additional volume per instance (GB) (每個執行個體的額外磁碟區 (GB)),選擇您要佈建的機器學習 (ML) 儲存磁碟區大小。在大多數情況下,您可以使用預設值 1。如要使用大型資料集,請使用較大的大小。

  7. 提供訓練資料集的輸入資料資訊。

    1. 針對通道名稱,接受預設值 (train) 或輸入更有意義的名稱,例如 training-augmented-manifest-file

    2. 針對 InputMode,選擇管道

    3. 針對 S3 data distribution type (S3 資料分佈類型),選擇 FullyReplicated。以增量方式訓練時,完全複寫會讓每個機器學習 (ML) 運算執行個體使用已擴展資料集的完整複本。針對神經型演算法,例如 神經主題模型 (NTM) 演算法,選擇 ShardedByS3Key

    4. 如是擴增資訊清單檔案中指定的資料未經壓縮,請將 Compression type (壓縮類型) 設為 None (無)。如果使用 gzip 壓縮資料,請將它設為 Gzip

    5. (選用) 針對 Content type (內容類型),指定適當的 MIME 類型。內容類型是資料的多用途網際網路郵件延伸 (MIME) 類型。

    6. 針對 Record wrapper (記錄包裝函式),如果擴增資訊清單檔案中指定的資料集使用 RecordIO 格式儲存,請選擇 RecordIO。如果您的資料集未儲存為 RecordIO 格式的檔案,請選擇

    7. 針對 S3 data type (S3 資料類型),選擇 AugmentedManifestFile

    8. 針對 S3 location (S3 位置),提供您存放擴增資訊清單檔案的儲存貯體路徑。

    9. 針對 AugmentedManifestFile 屬性名稱,指定您想要使用的屬性名稱。屬性名稱必須出現在擴增資訊清單檔案內,並區分大小寫。

    10. (選用) 若要新增更多屬性名稱,請選擇新增資料列,並指定每個屬性的其他屬性名稱。

    11. (選用) 如要調整屬性名稱的順序,請選擇名稱旁的向上或向下按鈕。使用擴增資訊清單檔案時,指定的屬性名稱順序很重要。

    12. 選擇完成

  8. 針對輸出資料組態,提供下列資訊:

    1. 針對 S3 位置,輸入您想要存放輸出資料的 S3 儲存貯體路徑。

    2. (選用) 您可以使用您的 AWS Key Management Service (AWS KMS) 加密金鑰來加密靜態輸出資料。針對加密金鑰,提供金鑰 ID 或其 Amazon Resource Name (ARN)。如需更多資訊,請參閱 KMS 受管加密金鑰

  9. (選用) 針對標籤,在訓練工作中新增一或多個標籤。標籤是您可以定義並指派給 AWS 資源的中繼資料。在這種情況下,您可以使用標籤協助管理您的訓練任務。標籤是由您定義的鍵和值構成。例如,您可能想要建立這樣的標籤:以 Project 做為鍵,而值為與訓練任務相關的專案,例如 Home value forecasts

  10. 選擇建立訓練工作。SageMaker AI 會建立和執行訓練任務。

訓練任務完成後,SageMaker AI 會將模型成品存放在儲存貯體中,而您在輸出資料組態欄位中為 S3 輸出路徑提供的路徑。若要部署模型以取得預測,請參閱將模型部署至 Amazon EC2

使用增強版資訊清單檔案 (API)

以下說明如何使用 SageMaker AI 高階 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