

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

# 使用 Amazon SageMaker AI 進行批次轉換以進行推論
<a name="batch-transform"></a>

當您需要執行下列動作時，請使用批次轉換：
+ 預先處理資料集，以移除干擾資料集訓練或推論的雜訊或偏差。
+ 從大型資料集取得推論。
+ 當您不需要持久性端點時，執行推論。
+ 將輸入記錄與推論建立關聯，以協助解讀結果。

若要先篩選輸入資料再執行推論，或建立輸入記錄和有關這些記錄推論的關聯性，請參閱[建立預測結果與輸入記錄的關聯性](batch-transform-data-processing.md)。例如，您可以篩選輸入資料，以提供用於建立和解譯輸出資料報告的內容。

**Topics**
+ [使用批次轉換從大型資料集取得推論](#batch-transform-large-datasets)
+ [加快批次轉換任務的速度](#batch-transform-reduce-time)
+ [使用批次轉換來測試生產變體](#batch-transform-test-variants)
+ [批次轉換範例筆記本](#batch-transform-notebooks)
+ [建立預測結果與輸入記錄的關聯性](batch-transform-data-processing.md)
+ [批次轉換中的儲存](batch-transform-storage.md)
+ [疑難排解](batch-transform-errors.md)

## 使用批次轉換從大型資料集取得推論
<a name="batch-transform-large-datasets"></a>

批次轉換會在指定的參數限制內，自動管理大型資料集的處理作業。例如，將資料集檔案 `input1.csv` 存放在 S3 儲存貯體中。輸入檔案的內容可能如下所示。

```
Record1-Attribute1, Record1-Attribute2, Record1-Attribute3, ..., Record1-AttributeM
Record2-Attribute1, Record2-Attribute2, Record2-Attribute3, ..., Record2-AttributeM
Record3-Attribute1, Record3-Attribute2, Record3-Attribute3, ..., Record3-AttributeM
...
RecordN-Attribute1, RecordN-Attribute2, RecordN-Attribute3, ..., RecordN-AttributeM
```

批次轉換工作開始時，SageMaker AI 會初始化運算執行個體，然後將推論或預先處理的工作負載分配給執行個體。批次轉換依據金鑰分區輸入中的 Amazon S3 物件，並將 Amazon S3 物件對應到執行個體。有多個檔案時，一個執行個體可能會處理 `input1.csv`，而另一個執行個體可能會處理名為 `input2.csv` 的檔案。如果您有一個輸入檔案，但初始化多個運算執行個體，則只有一個執行個體會處理輸入檔案。其餘執行個體處於閒置狀態。

您還可以將輸入檔案分割為微型批次。例如，您可能只包含兩個記錄，從 `input1.csv` 建立微批次。

```
Record3-Attribute1, Record3-Attribute2, Record3-Attribute3, ..., Record3-AttributeM
Record4-Attribute1, Record4-Attribute2, Record4-Attribute3, ..., Record4-AttributeM
```

**注意**  
SageMaker AI 會分別處理每個輸入檔案。為符合 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxPayloadInMB               ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxPayloadInMB               ) 限制，它不會合併不同輸入檔案的微型批次。

若要將輸入檔案分割成數個微型批次，則建立批次轉換工作時，請將 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformInput.html#SageMaker-Type-TransformInput-SplitType             ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformInput.html#SageMaker-Type-TransformInput-SplitType             ) 參數值設為 `Line`。SageMaker AI 會在單一請求中使用整個輸入檔案：
+ `SplitType` 已設定為 `None`。
+ 輸入檔案無法分割為迷你批次。

。請注意，批次轉換不支援包含內嵌新行字元的 CSV 格式輸入。您可以使用 `[BatchStrategy](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#sagemaker-CreateTransformJob-request-BatchStrategy)` 和 `[MaxPayloadInMB](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#sagemaker-CreateTransformJob-request-MaxPayloadInMB)` 參數控制微型批次的大小。`MaxPayloadInMB` 不得大於 100 MB。如果您指定選用的 `[MaxConcurrentTransforms](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#sagemaker-CreateTransformJob-request-MaxConcurrentTransforms)` 參數，則 `(MaxConcurrentTransforms * MaxPayloadInMB)` 的值也不得超過 100 MB。

如果批次轉換任務成功處理輸入檔中的所有記錄，它會建立輸出檔。輸出檔案具有相同的名稱和 `.out` 副檔名。對於 `input1.csv` 和 `input2.csv` 之類的多個輸入檔，系統會將輸出檔命名為 `input1.csv.out` 和 `input2.csv.out`。批次轉換工作會將輸出檔案儲存在 Amazon S3 的指定位置，例如 `s3://amzn-s3-demo-bucket/output/`。

系統會以輸入檔中對應記錄的相同順序來列出輸出檔的預測結果。根據前文所示的輸入檔內容，`input1.csv.out` 輸出檔的內容可能如下所示。

```
Inference1-Attribute1, Inference1-Attribute2, Inference1-Attribute3, ..., Inference1-AttributeM
Inference2-Attribute1, Inference2-Attribute2, Inference2-Attribute3, ..., Inference2-AttributeM
Inference3-Attribute1, Inference3-Attribute2, Inference3-Attribute3, ..., Inference3-AttributeM
...
InferenceN-Attribute1, InferenceN-Attribute2, InferenceN-Attribute3, ..., InferenceN-AttributeM
```

如果將 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformInput.html#SageMaker-Type-TransformInput-SplitType             ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformInput.html#SageMaker-Type-TransformInput-SplitType             ) 設定為 `Line`，您可以將 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformOutput.html#SageMaker-Type-TransformOutput-AssembleWith             ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformOutput.html#SageMaker-Type-TransformOutput-AssembleWith             ) 參數設定為 `Line`，以行分隔符號串連輸出記錄。串連不會改變輸出檔案的數量。輸出檔案的數量等於輸入檔案的數量，而且使用 `AssembleWith` 不合併檔案。如果您未指定 `AssembleWith` 參數，則依預設，輸出記錄會以二進位格式串連。

輸入資料非常大，且使用 HTTP 區塊編碼傳輸時，若要將資料串流至演算法，請將 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxPayloadInMB](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxPayloadInMB) 設為 `0`。Amazon SageMaker AI 的內建演算法不支援此功能。

如需使用 API 建立批次轉換任務的資訊，請參閱 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html) API。如需批次轉換輸入和輸出物件之間關係的更多資訊，請參閱 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_OutputDataConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_OutputDataConfig.html)。如需如何使用批次轉換的範例，請參閱[(選用) 使用批次轉換進行預測](ex1-model-deployment.md#ex1-batch-transform)。

## 加快批次轉換任務的速度
<a name="batch-transform-reduce-time"></a>

如果您使用的是 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html) API，則可以透過使用參數的最佳值來減少完成批次轉換作業所需的時間。這包括參數，例如 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxPayloadInMB](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxPayloadInMB)、[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxConcurrentTransforms](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxConcurrentTransforms) 或 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-BatchStrategy](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-BatchStrategy)。`MaxConcurrentTransforms` 的理想值等於批次轉換工作中的運算工作者的數量。

如果您使用的是 SageMaker AI 主控台，可以在**批次轉換工作組態**頁面的**其他組態**區段中指定這些最佳參數值。SageMaker AI 會自動尋找內建演算法的最佳參數設定。針對自訂演算法，請透過 [execution-parameters](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-batch-code.html#your-algorithms-batch-code-how-containe-serves-requests) 端點來提供這些值。

## 使用批次轉換來測試生產變體
<a name="batch-transform-test-variants"></a>

若要測試模型或超參數設定，請針對每個新模型變體建立不同的轉換任務，並使用驗證資料集。針對每個轉換任務，請為輸出檔案指定唯一的模型名稱和 Amazon S3 中的位置。若要分析結果，請使用 [推論管道日誌和指標](inference-pipeline-logs-metrics.md)。

## 批次轉換範例筆記本
<a name="batch-transform-notebooks"></a>

如需使用批次轉換的範例筆記本，請參閱[使用 PCA 和 DBSCAN 電影叢集進行批次轉換](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker_batch_transform/introduction_to_batch_transform/batch_transform_pca_dbscan_movie_clusters.html)。此筆記本使用具有主體元件分析 (PCA) 模型的批次轉換，以減少使用者項目檢閱矩陣中的資料。接著，應用具有雜訊 (DBSCAN) 演算法的密度型空間叢集應用程式來對電影進行分群。

 如需建立和存取您可以用來在 SageMaker AI 執行範例的 Jupyter 筆記本執行個體說明，請參閱[Amazon SageMaker 筆記本執行個體](nbi.md)。建立並開啟筆記本執行個體後，請選擇 **SageMaker 範例**標籤，查看所有 SageMaker AI 範例的清單。使用 NTM 演算法的主題模組化範例筆記本，位於**進階功能**一節。若要開啟筆記本，請選擇其**使用**標籤，然後選擇**建立複本**。