

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

# 演算法及模型套件資源的使用
<a name="sagemaker-mkt-buy"></a>

您可以在您的 Amazon SageMaker AI 帳戶中，建立演算法和模型套件作為資源，並且可以在 AWS Marketplace 上尋找及訂閱演算法和模型套件。

使用演算法來：
+ 執行訓練工作。如需相關資訊，請參閱[使用演算法來執行訓練工作](sagemaker-mkt-algo-train.md)。
+ 執行超參數調校工作。如需相關資訊，請參閱[使用演算法來執行超參數調校工作](sagemaker-mkt-algo-tune.md)。
+ 建立模型套件。在您使用演算法資源執行訓練工作或超參數調校工作後，您可以使用這些工作輸出的模型成品及演算法，建立模型套件。如需相關資訊，請參閱[建立模型套件資源](sagemaker-mkt-create-model-package.md)。
**注意**  
如果您訂閱 AWS Marketplace 上的演算法，您必須建立模型套件，才能透過建立託管端點或執行批次轉換工作，使用該套件來取得推論。

![\[市場買方工作流程。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/mkt-buyer-workflow.png)


使用模型套件來：
+ 建立模型，用來取得即時推論或執行批次轉換工作。如需相關資訊，請參閱[使用模型套件來建立模型](sagemaker-mkt-model-pkg-model.md)。
+ 建立託管端點，取得即時推論。如需相關資訊，請參閱[將模型部署至 SageMaker AI 託管服務](ex1-model-deployment.md#ex1-deploy-model)。
+ 建立批次轉換工作。如需相關資訊，請參閱[(選用) 使用批次轉換進行預測](ex1-model-deployment.md#ex1-batch-transform)。

**Topics**
+ [使用演算法來執行訓練工作](sagemaker-mkt-algo-train.md)
+ [使用演算法來執行超參數調校工作](sagemaker-mkt-algo-tune.md)
+ [使用模型套件來建立模型](sagemaker-mkt-model-pkg-model.md)

# 使用演算法來執行訓練工作
<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})
```

# 使用演算法來執行超參數調校工作
<a name="sagemaker-mkt-algo-tune"></a>

下一節說明如何使用演算法資源在 Amazon SageMaker AI 中執行超參數調校任務。超參數調校工作會透過在您的資料集上，使用您指定的演算法和超參數範圍執行許多訓練工作，來尋找最佳版本的模型。它接著會根據您選擇的指標，選擇可讓模型取得最佳執行結果的超參數值。如需詳細資訊，請參閱[使用 SageMaker AI 執行自動模型調校](automatic-model-tuning.md)。

您可以使用 Amazon SageMaker AI 主控台、低層級 Amazon SageMaker API 或 [Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable)，使用演算法資源來建立超參數調校工作。

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

## 使用演算法來執行超參數調校工作 (主控台)
<a name="sagemaker-mkt-algo-tune-console"></a>

**使用演算法來執行超參數調校工作 (主控台)**

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

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

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

1. 選擇**建立超參數調校工作**。

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

1. 在**建立超參數調校工作**頁面上，提供以下資訊：

   1. 針對**暖啟動**，選擇**啟用暖啟動**來使用先前超參數調校工作的資訊做為此超參數調校工作的起點。如需詳細資訊，請參閱[執行超參數調校任務的暖啟動](automatic-model-tuning-warm-start.md)。

      1. 若您的輸入資料與此超參數調校工作的父系工作相同，請選擇**相同資料及演算法**，或是選擇**傳輸學習**來針對此超參數調校工作使用額外或不同的輸入資料。

      1. 針對**父系超參數調校工作**，選擇最多 5 個超參數調校工作，做為此超參數調校工作的父系。

   1. 針對**超參數調校工作名稱**，輸入調校工作的名稱。

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

   1. 針對 **VPC**，選擇您想要允許調校工作啟動以進行存取的訓練工作的 Amazon VPC。如需詳細資訊，請參閱[讓 SageMaker AI 訓練任務可以存取 Amazon VPC 中的資源](train-vpc.md)。

   1. 選擇**下一步**。

   1. 針對**目標指標**，選擇超參數調校工作用來判斷最佳超參數組合的指標，然後選擇是否要最小或最大化此指標。如需詳細資訊，請參閱[檢視最佳訓練任務](automatic-model-tuning-ex-tuning-job.md#automatic-model-tuning-best-training-job)。

   1. 針對**超參數組態**，選擇您希望調校工作搜尋之可調校的超參數範圍，並設定您希望在所有超參數調校工作所啟動訓練工作中維持一致的超參數值。如需詳細資訊，請參閱[定義超參數範圍](automatic-model-tuning-define-ranges.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. 針對**執行個體類型**，選擇要針對每個超參數調校工作所啟動訓練工作使用的執行個體類型。

      1. 針對**執行個體計數**，輸入要針對每個超參數調校工作所啟動訓練工作使用的機器學習 (ML) 執行個體數量。

      1. 針對**每個執行個體的額外磁碟區 (GB)**，輸入您希望佈建超參數調校工作所啟動每個訓練工作的機器學習 (ML) 儲存磁碟區大小。機器學習 (ML) 儲存磁碟區會存放模型成品及累加狀態。

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

   1. 針對**資源限制**，提供下列資訊：

      1. 針對**訓練工作數量上限**，指定您希望超參數調校工作啟動的訓練工作數量上限。超參數調校工作最多能啟動 500 個訓練任務。

      1. 針對**平行訓練工作數量上限**，指定您希望超參數調校工作啟動的同時訓練工作數量上限。超參數調校工作最多能啟動 10 個同時訓練工作。

      1. 針對**停止條件**，指定您希望超參數調校工作所啟動的每個訓練工作執行時間上限 (秒、分鐘、小時或天數)。

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

   1. 選擇**建立任務**來執行超參數調校工作。

## 使用演算法來執行超參數調校工作 (API)
<a name="sagemaker-mkt-algo-tune-api"></a>

若要使用 SageMaker API，利用演算法來執行超參數調校工作，請在您傳遞給 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.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 中超參數調校的資訊，請參閱 [使用 SageMaker AI 執行自動模型調校](automatic-model-tuning.md)。

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

使用您在 上建立或訂閱的演算法 AWS Marketplace 來建立超參數調校任務、建立 `AlgorithmEstimator` 物件，並將 Amazon Resource Name (ARN) 或演算法名稱指定為`algorithm_arn`引數的值。然後，使用您建立的 `AlgorithmEstimator` 做為 `estimator` 引數的值，初始化 `HyperparameterTuner` 物件。最後，呼叫 `AlgorithmEstimator` 的 `fit` 方法。例如：

```
from sagemaker import AlgorithmEstimator
from sagemaker.tuner import HyperparameterTuner

data_path = os.path.join(DATA_DIR, 'marketplace', 'training')

algo = AlgorithmEstimator(
            algorithm_arn='arn:aws:sagemaker:us-east-2:764419575721:algorithm/scikit-decision-trees-1542410022',
            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.set_hyperparameters(max_leaf_nodes=10)
tuner = HyperparameterTuner(estimator=algo, base_tuning_job_name='some-name',
                                objective_metric_name='validation:accuracy',
                                hyperparameter_ranges=hyperparameter_ranges,
                                max_jobs=2, max_parallel_jobs=2)

tuner.fit({'training': train_input}, include_cls_metadata=False)
tuner.wait()
```

# 使用模型套件來建立模型
<a name="sagemaker-mkt-model-pkg-model"></a>

使用模型套件來建立可部署模型，用來建立託管端點或執行批次轉換工作以取得即時推論。您可以使用 Amazon SageMaker AI 主控台、低層級 SageMaker API，或是 [Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable)，從模型套件建立可部署模型。

**Topics**
+ [使用模型套件來建立模型 (主控台)](#sagemaker-mkt-model-pkg-model-console)
+ [使用模型套件來建立模型 (API)](#sagemaker-mkt-model-pkg-model-api)
+ [使用模型套件來建立模型 ([Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable))](#sagemaker-mkt-model-pkg-model-sdk)

## 使用模型套件來建立模型 (主控台)
<a name="sagemaker-mkt-model-pkg-model-console"></a>

**從模型套件建立可部署模型 (主控台)**

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

1. 選擇**模型套件**。

1. 從**我的模型套件**索引標籤上的清單中選擇您建立的模型套件，或在 **AWS Marketplace 訂閱**索引標籤上選擇您訂閱的模型套件。

1. 選擇**建立模型**。

1. 針對**模型名稱**，輸入模型的名稱。

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

1. 針對 **VPC**，選擇您希望允許模型存取的 Amazon VPC。如需詳細資訊，請參閱[讓 SageMaker AI 託管的端點可以存取 Amazon VPC 中的資源](host-vpc.md)。

1. 保留**容器輸入選項** 及**選擇模型套件**的預設值。

1. 針對環境變數，請提供您希望傳遞給模型容器的環境變數名稱及值。

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

1. 選擇**建立模型**。

在您建立可部署模型後，您可以用它來為即時推論設定端點，或是建立批次轉換工作來取得整個資料集的推論。如需在 SageMaker AI 中託管端點的相關資訊，請參閱[部署用於推論的模型](https://docs.aws.amazon.com/sagemaker/latest/dg/deploy-model.html)。

## 使用模型套件來建立模型 (API)
<a name="sagemaker-mkt-model-pkg-model-api"></a>

若要使用 SageMaker API，利用模型套件來建立可部署模型，請在您傳遞給 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html) API 的 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ContainerDefinition.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ContainerDefinition.html) 物件的 `ModelPackageName` 欄位中，指定模型套件的名稱或 Amazon Resource Name (ARN)。

在您建立可部署模型後，您可以用它來為即時推論設定端點，或是建立批次轉換工作來取得整個資料集的推論。如需 SageMaker AI 中託管端點的相關資訊，請參閱[部署用於推論的模型](https://docs.aws.amazon.com/sagemaker/latest/dg/deploy-model.html)。

## 使用模型套件來建立模型 ([Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable))
<a name="sagemaker-mkt-model-pkg-model-sdk"></a>

若要使用 SageMaker AI Python SDK，利用模型套件建立可部署模型，請初始化 `ModelPackage` 物件，並將模型套件的 Amazon Resource Name (ARN) 作為 `model_package_arn` 引數傳遞。例如：

```
from sagemaker import ModelPackage
model = ModelPackage(role='SageMakerRole',
         model_package_arn='training-job-scikit-decision-trees-1542660466-6f92',
         sagemaker_session=sagemaker_session)
```

在您建立可部署模型後，您可以用它來為即時推論設定端點，或是建立批次轉換工作來取得整個資料集的推論。如需在 SageMaker AI 中託管端點的相關資訊，請參閱[部署用於推論的模型](https://docs.aws.amazon.com/sagemaker/latest/dg/deploy-model.html)。