

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

# 使用演算法來執行訓練工作
<a name="sagemaker-mkt-algo-train"></a>

您可以使用 Amazon SageMaker AI 主控台、低層級 Amazon SageMaker API 或 [Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable)，使用演算法資源來建立訓練任務。

**注意**  
您的執行角色必須擁有您指定之演算法資源的`sagemaker:DescribeAlgorithm`許可。如需執行角色許可的詳細資訊，請參閱 [CreateTrainingJob API：執行角色許可](sagemaker-roles.md#sagemaker-roles-createtrainingjob-perms)。

**Topics**
+ [使用演算法來執行訓練工作 (主控台)](#sagemaker-mkt-algo-train-console)
+ [使用演算法來執行訓練工作 (API)](#sagemaker-mkt-algo-train-api)
+ [使用演算法來執行訓練工作 ([Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable))](#sagemaker-mkt-algo-train-sdk)

## 使用演算法來執行訓練工作 (主控台)
<a name="sagemaker-mkt-algo-train-console"></a>

**使用演算法來執行訓練工作 (主控台)**

1. 開啟位在 [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/) 的 SageMaker AI 主控台。

1. 選擇**演算法**。

1. 從**我的演算法**索引標籤的清單上選擇您建立的演算法，或在**AWS Marketplace 訂閱**索引標籤上選擇您訂閱的演算法。

1. 選擇**建立訓練工作**。

   會自動選取您選擇的演算法。

1. 在**建立訓練工作**頁面上，提供以下資訊：

   1. 針對**工作名稱**，輸入訓練工作的名稱。

   1. 針對 **IAM 角色**，請選擇擁有必要許可，能在 SageMaker AI 中執行訓練任務的 IAM 角色，或是選擇**建立新角色**來允許 SageMaker AI 建立已連接 `AmazonSageMakerFullAccess` 受管政策的角色。如需相關資訊，請參閱[如何使用 SageMaker AI 執行角色](sagemaker-roles.md)。

   1. 針對**資源組態**，提供下列資訊：

      1. 針對**執行個體類型**，選擇要用於訓練的執行個體類型。

      1. 針對**執行個體計數**，輸入要用於訓練工作的機器學習 (ML) 執行個體數量。

      1. 針對**每個執行個體的額外磁碟區 (GB)**，輸入您要佈建的機器學習 (ML) 儲存磁碟區大小。機器學習 (ML) 儲存磁碟區會存放模型成品及累加狀態。

      1. 對於**加密金鑰**，如果您希望 Amazon SageMaker AI 使用 AWS Key Management Service 金鑰來加密連接到訓練執行個體的 ML 儲存磁碟區中的資料，請指定金鑰。

      1. 針對**停止條件**，指定您希望訓練工作執行的時間上限 (以秒、分鐘、小時或天數為單位)。

   1. 針對 **VPC**，選擇您希望允許訓練容器存取的 Amazon VPC。如需詳細資訊，請參閱[讓 SageMaker AI 訓練任務可以存取 Amazon VPC 中的資源](train-vpc.md)。

   1. 針對**超參數**，指定要用於訓練工作的超參數值。

   1. 針對**輸入資料組態**，針對每個用於訓練工作的輸入資料通道，指定下列值。您可以在該演算法的**演算法摘要**頁面的**通道規格**區段下，查看您用於訓練支援的演算法通道，以及每個通道的內容類型、支援的壓縮類型和支援的輸入模式。

      1. 針對**通道名稱**，輸入輸入通道的名稱。

      1. 針對**內容類型**，輸入演算法針對通道所預期的資料內容類型。

      1. 針對**壓縮類型**，選擇要使用的資料壓縮類型 (若有的話)。

      1. 針對**記錄包裝函式**，若演算法預期 `RecordIO` 格式的資料，請選擇 `RecordIO`。

      1. 針對 **S3 資料類型**、**S3 資料分佈類型**及 **S3 位置**，請指定適當的值。如需這些值所代表意義的資訊，請參閱 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_S3DataSource.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_S3DataSource.html)。

      1. 針對**輸入模式**，選擇**檔案**來從所佈建的機器學習 (ML) 儲存磁碟區下載資料，並將目錄掛載到 Docker 磁碟區。選擇**管道**來直接從 Amazon S3 串流資料到容器。

      1. 若要新增另一個輸入通道，請選擇**新增通道**。若您已完成新增輸入通道，請選擇**完成**。

   1. 針對**輸出**位置，請指定下列值：

      1. 針對 **S3 輸出路徑**，選擇訓練工作存放輸出 (例如模型成品) 的 S3 位置。
**注意**  
您可以使用存放在此位置的模型成品，從訓練工作建立模型或模型套件。

      1. 對於**加密金鑰**，如果您希望 SageMaker AI 使用 AWS KMS 金鑰來加密 S3 位置的靜態輸出資料。

   1. 針對**標籤**，請指定一或多個標籤來管理訓練工作。每個標籤皆包含索引鍵與選用值。每個資源的標籤鍵必須是唯一的。

   1. 選擇**建立訓練工作**來執行訓練工作。

## 使用演算法來執行訓練工作 (API)
<a name="sagemaker-mkt-algo-train-api"></a>

若要使用 SageMaker API，利用演算法來執行訓練工作，請在您傳遞給 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html) 的 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AlgorithmSpecification.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AlgorithmSpecification.html) 物件的 `AlgorithmName` 欄位中，指定名稱或 Amazon Resource Name (ARN)。如需 SageMaker AI 中訓練模型的資訊，請參閱 [使用 Amazon SageMaker 訓練模型](how-it-works-training.md)。

## 使用演算法來執行訓練工作 ([Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable))
<a name="sagemaker-mkt-algo-train-sdk"></a>

使用您在 上建立或訂閱的演算法 AWS Marketplace 來建立訓練任務、建立`AlgorithmEstimator`物件，並將 Amazon Resource Name (ARN) 或演算法名稱指定為`algorithm_arn`引數的值。然後呼叫估算器的 `fit` 方法。例如：

```
from sagemaker import AlgorithmEstimator
data_path = os.path.join(DATA_DIR, 'marketplace', 'training')

algo = AlgorithmEstimator(
algorithm_arn='arn:aws:sagemaker:us-east-2:012345678901:algorithm/my-algorithm',
        role='SageMakerRole',
        instance_count=1,
        instance_type='ml.c4.xlarge',
        sagemaker_session=sagemaker_session,
        base_job_name='test-marketplace')

train_input = algo.sagemaker_session.upload_data(
path=data_path, key_prefix='integ-test-data/marketplace/train')

algo.fit({'training': train_input})
```