本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
向具有擴增資訊清單檔案的訓練任務提供資料集中繼資料
使用擴增的資訊清單檔案,在訓練任務中包含具有您資料集的中繼資料。使用擴增的資訊清單檔案時,您的資料集必須存放在 Amazon Simple Storage Service (Amazon S3),而且您必須設定訓練任務使用存放於此的資料集。您要針對一或多個 Channel
指定此資料集的位置和格式。擴增資訊清單只能支援管道輸入模式。Channel
若要進一步瞭解管道輸入模式,InputMode請參閱〈〉一節。
指定通道的參數時,您指定的檔案路徑稱為 S3Uri
。Amazon 根據S3DataType
中S3DataSource
指定的來 SageMaker 解釋此 URI。AugmentedManifestFile
選項定義的資訊清單格式,包括具有輸入資料的中繼資料。當您有標籤資料時,也可以使用擴增的資訊清單檔案預先處理。針對使用標籤日期的訓練任務,您通常需要預先處理資料集,結合輸入資料和中繼資料後再訓練。如果您的訓練資料集很大,預先處理費時又費錢。
擴增的資訊清單檔案格式
擴增的資訊清單檔案格式必須為 JSON 行
在訓練期間,會 SageMaker 剖析每個 JSON 行,並將其部分或全部屬性傳送至訓練演算法。您要使用 CreateTrainingJob
API 的 AttributeNames
參數指定傳遞的屬性內容和順序。AttributeNames
參數是屬性名稱的順序清單,會在 JSON 物件中 SageMaker 尋找以用作訓練輸入。
例如,如果您針對 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 忽略未列出的屬性名稱,即使它們在列出的屬性之前、跟隨或位於之間。
使用擴增的資訊清單檔案時,請遵循下列指導方針:
-
屬性在
AttributeNames
參數中的列示順序,會決定屬性在訓練任務中傳遞到演算法的順序。 -
列出的
AttributeNames
可以是 JSON 行中所有屬性的子集。 SageMaker 會忽略檔案中未列出的屬性。 -
您可以在
AttributeNames
中指定 JSON 格式允許的任何資料類型,包括文字、數值、資料陣列或物件。 -
若要包含 S3 URI 做為屬性名稱,請為其新增尾碼
-ref
。
如果屬性名稱包含尾碼 -ref
,則屬性值必須為訓練任務可存取之資料檔案的 S3 URI。例如,如果 AttributeNames
包含 ["image-ref", "is-a-cat"]
,下列範例會顯示有效的擴增資訊清單檔案:
{"image-ref": "s3://mybucket/sample01/image1.jpg", "is-a-cat": 1} {"image-ref": "s3://mybucket/sample02/image2.jpg", "is-a-cat": 0}
如果是此資訊清單檔案的第一個 JSON 行, SageMaker 會從中擷取image1.jpg
檔案以s3://mybucket/sample01/
及圖像分類is-a-cat
屬性"1"
的字串表示。
提示
若要建立增強資訊清單檔案,請使用 Amazon SageMaker Ground Truth 並建立標籤任務。如需有關從標籤工作輸出的詳細資訊,請參閱輸出資料。
串流擴增的資訊清單檔案資料
擴增的資訊清單格式可讓您在管道模式中使用檔案進行訓練,而無需建立 RecordIO 檔案。您需要為 CreateTrainingJob
請求的 InputDataConfig
參數值指定訓練和驗證通道。僅支援使用管道輸入模式之通道的擴增資訊清單檔案。每個通道的資料都是從它的擴增資訊清單檔案擷取,並透過通道的具名管道 (依序) 串流至演算法。管道模式使用先入先出 (FIFO),所以記錄會依其佇列順序處理。如需管道輸入模式的資訊,請參閱 Input Mode
。
屬性名稱與 "-ref"
尾碼指向預先格式化的二進位資料。在某些情況下,演算法知道如何剖析資料。但有時候您可能需要包裝資料,針對演算法分隔記錄。如果演算法與 RecordIO 格式的資料RecordWrapperType
指定 RecordIO
可解決這個問題。如果演算法與 RecordIO
格式不相容,請針對 RecordWrapperType
指定 None
,確保您的資料針對演算法正確剖析。
以 ["image-ref", "is-a-cat"]
為例,如果您使用 RecordIO 包裝,則以下的資料串流會傳送到佇列:
recordio_formatted(s3://mybucket/foo/image1.jpg)recordio_formatted("1")recordio_formatted(s3://mybucket/bar/image2.jpg)recordio_formatted("0")
未使用 RecordIO 格式包裝的影像,會和對應的 is-a-cat
屬性值串流為一筆記錄。這會導致問題,因為演算法可能不會正確分隔影像和屬性。有關使用增強清單文件進行影像分類的詳細資訊,請參閱使用增強清單圖像格式進行訓練。
在一般情況下使用擴增資訊清單檔案和管道模式,EBS 磁碟區的大小限制並不適用。此情況包括必須在 S3DataDistributionType
這類 EBS 磁碟區大小限制內的設定。如需管道模式及其使用方法的詳細資訊,請參閱使用自有的訓練演算法 – 輸入資料組態。
使用擴增的資訊清單檔案 (主控台)
若要完成此程序,您需要:
-
存放擴增資訊清單檔案之 S3 儲存貯體的 URL。
-
將列在擴增資訊清單檔案中的資料存放在 S3 儲存貯體。
-
用來存放工作輸出的 S3 儲存貯體的 URL。
在訓練任務中使用擴增的資訊清單檔案 (主控台)
在 https://console.aws.amazon.com/sagemaker/
打開 Amazon SageMaker 控制台。 -
在導覽窗格中,選擇訓練,然後選擇訓練工作。
-
選擇建立訓練工作。
-
提供訓練任務的名稱。該名稱在 AWS 帳戶中的 AWS 區域中必須是唯一的。長度為 1 至 63 個字元。有效字元:a-z、A-Z、0-9 和 . : + = @ _ % - (連字號)。
-
選擇您想要使用的演算法。如需支援內建演算法的詳細資訊,請參閱使用 Amazon SageMaker 內建演算法或預先訓練的模型。如果您想要使用自訂的演算法,請確定它與管道模式相容。
-
(選用) 針對資源組態,接受預設值,或增加資源耗用量以降低運算時間。
-
(選用) 針對執行個體類型,選擇您想要使用的機器學習 (ML) 運算執行個體類型。在大部分的情況下,ml.m4.xlarge 就足夠。
-
針對執行個體計數,使用預設值
1
。 -
(選用) 針對 Additional volume per instance (GB) (每個執行個體的額外磁碟區 (GB)),選擇您要佈建的機器學習 (ML) 儲存磁碟區大小。在大多數情況下,您可以使用預設值
1
。如要使用大型資料集,請使用較大的大小。
-
-
提供訓練資料集的輸入資料資訊。
-
針對通道名稱,接受預設值 (
train
) 或輸入更有意義的名稱,例如training-augmented-manifest-file
。 -
對於 InputMode,選擇「管」。
-
對於 S3 資料分發類型,請選擇FullyReplicated。以增量方式訓練時,完全複寫會讓每個機器學習 (ML) 運算執行個體使用已擴展資料集的完整複本。針對神經型演算法,例如 神經主題模型 (NTM) 演算法,選擇
ShardedByS3Key
。 -
如是擴增資訊清單檔案中指定的資料未經壓縮,請將 Compression type (壓縮類型) 設為 None (無)。如果使用 gzip 壓縮資料,請將它設為 Gzip。
-
(選用) 針對 Content type (內容類型),指定適當的 MIME 類型。內容類型是資料的多用途網際網路郵件延伸 (MIME) 類型。
-
針對 Record wrapper (記錄包裝函式),如果擴增資訊清單檔案中指定的資料集使用 RecordIO 格式儲存,請選擇 RecordIO。如果您的資料集未儲存為 RecordIO 格式的檔案,請選擇無。
-
對於 S3 資料類型,請選擇AugmentedManifestFile。
-
針對 S3 location (S3 位置),提供您存放擴增資訊清單檔案的儲存貯體路徑。
-
對於AugmentedManifestFile 屬性名稱,請指定您要使用的屬性名稱。屬性名稱必須出現在擴增資訊清單檔案內,並區分大小寫。
-
(選用) 若要新增更多屬性名稱,請選擇新增資料列,並指定每個屬性的其他屬性名稱。
-
(選用) 如要調整屬性名稱的順序,請選擇名稱旁的向上或向下按鈕。使用擴增資訊清單檔案時,指定的屬性名稱順序很重要。
-
選擇完成。
-
-
針對輸出資料組態,提供下列資訊:
-
針對 S3 位置,輸入您想要存放輸出資料的 S3 儲存貯體路徑。
-
(選擇性) 您可以使用 AWS Key Management Service (AWS KMS) 加密金鑰來加密靜態輸出資料。針對加密金鑰,提供金鑰 ID 或其 Amazon Resource Name (ARN)。如需更多資訊,請參閱 KMS 受管加密金鑰。
-
-
(選用) 針對標籤,在訓練工作中新增一或多個標籤。標籤是您可以定義並指派給 AWS 資源的中繼資料。在這種情況下,您可以使用標籤協助管理您的訓練任務。標籤是由您定義的鍵和值構成。例如,您可能想要建立這樣的標籤:以
Project
做為鍵,而值為與訓練任務相關的專案,例如Home value forecasts
。 -
選擇 [建立訓練工作]。 SageMaker 建立並執行訓練工作。
訓練任務完成後,將模型成品 SageMaker 儲存在您為 S3 輸出路徑提供的儲存貯體中的「輸出資料組態」欄位中。若要部署模型以取得預測,請參閱步驟 5:將模型部署至 Amazon EC2。
使用增強版資訊清單檔案 (API)
下面顯示了如何使用 SageMaker 高級 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 儲存在您為 S3 輸出路徑提供的儲存貯體中的「輸出資料組態」欄位中。若要部署模型以取得預測,請參閱步驟 5:將模型部署至 Amazon EC2。