

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

# 建立演算法資源
<a name="sagemaker-mkt-create-algo"></a>

您可以建立演算法資源，以搭配使用 Amazon SageMaker AI 中的訓練任務，也可以將其發佈在 AWS Marketplace上。下列各節說明如何使用 AWS 管理主控台 和 SageMaker API 來執行此操作。

若要建立演算法資源，請指定下列資訊：
+ 包含訓練以及可選擇包含推論程式碼的 Docker 容器。
+ 您的演算法預期用於訓練的輸入資料之組態。
+ 您演算法支援的超參數。
+ 您的演算法在訓練工作期間傳送到 Amazon CloudWatch 的指標。
+ 您演算法支援用來進行訓練和推論的執行個體類型，以及其是否支援多個執行個體間的分散式訓練。
+ 驗證設定檔，是 SageMaker AI 用來測試您演算法之訓練程式碼的訓練任務，以及 SageMaker AI 為測試您的演算法之推論程式碼而執行的批次轉換工作。

  為了確保買方和賣方都能夠安心相信產品能在 SageMaker AI 中正常運作，我們需要您先驗證您的演算法，才能在 AWS Marketplace上列出演算法。 AWS Marketplace 只有在驗證成功時，您才能在 中列出產品。為了驗證您的演算法，SageMaker AI 會使用您的驗證設定檔及範例資料來執行下列驗證任務：

  1. 在您的帳戶中建立訓練任務，驗證您的訓練映像能搭配 SageMaker AI 運作。

  1. 若您在演算法中包含了推論程式碼，請使用演算法的推論映像和訓練工作所產生的模型成品，在您的帳戶中建立模型。

  1. 若您在演算法中包含推論程式碼，請使用模型在您的帳戶中建立轉換工作，來驗證您的推論映像能搭配 SageMaker AI 運作。

  當您列出您的產品時 AWS Marketplace，此驗證程序的輸入和輸出會保留為產品的一部分，並可供您的買方使用。這可協助買家在購買之前了解和評估產品。例如，買家可以檢查您使用的輸入資料、所產生的輸出，以及您程式碼發出的日誌和指標。您的驗證規格越完整，客戶便越能輕鬆地評估您的產品。
**注意**  
在您的驗證設定檔中，請只提供您要公開的資料。

  驗證可能需要耗費數小時。若要在您的帳戶中查看工作狀態，請在 SageMaker AI 主控台中，參閱**訓練任務**和**轉換工作**頁面。若驗證失敗，您可以從 SageMaker AI 主控台存取掃描和驗證報告。若發現任何任務，您將必須重新建立演算法。
**注意**  
若要在 上發佈您的演算法 AWS Marketplace，至少需要一個驗證設定檔。

您可以使用 SageMaker AI 主控台或 SageMaker AI API 建立演算法。

**Topics**
+ [建立演算法資源 (主控台)](#sagemaker-mkt-create-algo-console)
+ [建立演算法資源 (API)](#sagemaker-mkt-create-algo-api)

## 建立演算法資源 (主控台)
<a name="sagemaker-mkt-create-algo-console"></a>

**建立演算法資源 (主控台)**

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

1. 從左側選單中選擇**訓練**。

1. 從下拉式選單中選擇**演算法**，然後選擇**建立演算法**。

1. 在**訓練規格**頁面上，提供以下資訊：

   1. 針對**演算法名稱**，輸入您的演算法的名稱。演算法名稱在您的帳戶和 AWS 區域中必須是唯一的。名稱長度必須介於 1 至 64 個字元。有效字元為 a-z、A-Z、0-9 和 - (連字號)。

   1. 輸入您的演算法的描述。此描述會出現在 SageMaker AI 主控台和 AWS Marketplace中。

   1. 對於**訓練映像，請在 Amazon ECR 中輸入存放訓練容器的路徑**。

   1. 針對**支援分散式訓練**，若您的演算法支援在多個執行個體上進行訓練，請選擇**是**。否則請選擇**否**。

   1. 針對**支援用於訓練的執行個體類型**，請選擇您的演算法支援的執行個體類型。

   1. 針對**通道規格**，為您的演算法指定最多 8 個輸入資料通道。例如，您可以指定 3 個輸入通道，分別名為 `train`、`validation` 和 `test`。針對每個通道，指定下列資訊：

      1. 針對**通道名稱**，輸入通道的名稱。名稱長度必須介於 1 至 64 個字元。有效字元為 a-z、A-Z、0-9 和 - (連字號)。

      1. 若要使通道成為您演算法的必要項目，請選擇**需要通道**。

      1. 輸入通道的描述。

      1. 針對**支援的輸入模式**，若您的演算法支援串流輸入資料，請選擇**管道模式**；若您的演算法支援將輸入資料做為檔案下載，請選擇**檔案模式**。您可以同時選擇兩者。

      1. 針對**支援的內容類型**，請輸入您的演算法預期收到的輸入資料 MIME 類型。

      1. 針對**支援的壓縮類型**，若您的演算法支援 Gzip 壓縮，請選擇 **Gzip**。否則，請選擇**無**。

      1. 請選擇**新增通道**來新增其他資料輸入通道；或者，若您已完成新增通道，請選擇**下一步**。

1. 在**調校規格**頁面上，提供以下資訊：

   1. 針對**超參數規格**，請編輯 JSON 物件，指定您的演算法支援的超參數。針對您的演算法支援的每個超參數，請建構與以下內容類似的 JSON 區塊：

      ```
      {
      "DefaultValue": "5",
      "Description": "The first hyperparameter",
      "IsRequired": true,
      "IsTunable": false,
      "Name": "intRange",
      "Range": {
      "IntegerParameterRangeSpecification": {
      "MaxValue": "10",
      "MinValue": "1"
      },
      "Type": "Integer"
      }
      ```

      在 JSON 中，請提供以下項目：

      1. 針對 `DefaultValue`，請指定超參數的預設值 (若有的話)。

      1. 針對 `Description`，請指定超參數的描述。

      1. 針對 `IsRequired`，請指定是否需要超參數。

      1. 針對 `IsTunable`，若可在使用者執行使用此演算法的超參數調校工作時調校此超參數，請指定 `true`。如需相關資訊，請參閱[使用 SageMaker AI 執行自動模型調校](automatic-model-tuning.md)。

      1. 針對 `Name`，請指定超參數的名稱。

      1. 針對 `Range`，請指定下列其中一項：
         + `IntegerParameterRangeSpecification` - 超參數的值為整數。為超參數指定最小值及最大值。
         + 
         + `ContinuousParameterRangeSpecification` - 超參數的值為浮點數值。為超參數指定最小值及最大值。
         + `CategoricalParameterRangeSpecification` - 超參數的值為類別值。指定所有可能值的清單。

      1. 針對 `Type`，請指定 `Integer`、`Continuous` 或 `Categorical`。該值必須對應到您所指定的 `Range` 類型。

   1. 對於**指標定義**，請指定您希望演算法發出的任何訓練指標。SageMaker AI 會使用您指定的正規表示式，透過在訓練期間剖析訓練容器中的日誌來尋找指標。使用者可以在使用您的演算法執行訓練工作時檢視這些指標，並且可以在 Amazon CloudWatch 中監控和繪製指標。如需相關資訊，請參閱[用於監控和分析訓練任務的 Amazon CloudWatch 指標](training-metrics.md)。針對每個指標，請提供以下資訊：

      1. 針對**指標名稱**，輸入指標的名稱。

      1. 對於 `Regex`，輸入 SageMaker AI 用來剖析訓練日誌，以尋找指標值的正規表示式。

      1. 針對**目標指標支援**，若此指標可以用來做為超參數調校工作的目標指標，請選擇**是**。如需相關資訊，請參閱[使用 SageMaker AI 執行自動模型調校](automatic-model-tuning.md)。

      1. 請選擇**新增指標**來新增其他指標；或者，若您已完成新增指標，請選擇**下一步**。

1. 在**推論規格**頁面上，若您的演算法支援推論，請提供以下資訊：

   1. 對於**推論映像的位置**，請在 Amazon ECR 中輸入存放您的推論容器的路徑。

   1. 針對**容器 DNS 主機名稱**，輸入您的映像 DNS 主機名稱。

   1. 針對**即時推論支援的執行個體類型**，請選擇您的演算法對於作為 SageMaker AI 的託管端點部署的模型所支援的執行個體類型。如需相關資訊，請參閱[部署用於推論的模型](deploy-model.md)。

   1. 針對**批次轉換工作支援的執行個體類型**，請選擇您的演算法針對批次轉換工作所支援的執行個體類型。如需相關資訊，請參閱[使用 Amazon SageMaker AI 進行批次轉換以進行推論](batch-transform.md)。

   1. 針對**支援的內容類型**，請輸入您的演算法預期用於推論請求的輸入資料類型。

   1. 針對**支援的回應 MIME 類型**，請輸入您的演算法針對推論回應支援的 MIME 類型。

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

1. 在**驗證規格**頁面上，提供以下資訊：

   1. 對於在 **上發佈此演算法 AWS Marketplace**，選擇**是**以在 上發佈演算法 AWS Marketplace。

   1. 對於**驗證此資源**，如果您希望 SageMaker AI 執行訓練任務及／或批次轉換工作來測試演算法的訓練及／或推論程式碼，請選擇**是**。
**注意**  
若要在 上發佈您的演算法 AWS Marketplace，您的演算法必須經過驗證。

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

   1. 針對**驗證設定檔**，請指定下列項目：
      + 驗證設定檔的名稱。
      + **訓練工作定義**。這是描述訓練工作的 JSON 區塊。此處的格式與 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAlgorithm.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAlgorithm.html) API 的 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TrainingJobDefinition.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TrainingJobDefinition.html) 輸入參數相同。
      + **轉換工作定義**。此為描述批次轉換工作的 JSON 區塊。此處的格式與 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAlgorithm.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAlgorithm.html) API 的 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformJobDefinition.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformJobDefinition.html) 輸入參數相同。

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

## 建立演算法資源 (API)
<a name="sagemaker-mkt-create-algo-api"></a>

若要使用 SageMaker API 建立演算法資源，請呼叫 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAlgorithm.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAlgorithm.html) API。