

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

# 在 AWS Clean Rooms ML 中使用增量訓練
<a name="use-incremental-training"></a>

事前準備：
+  AWS 帳戶 可存取 的 AWS Clean Rooms
+ 協作中的現有訓練模型 
+ 用於增量訓練的新資料集或更新的資料集 
+ 在協同合作中建立和管理 ML 模型的適當許可
+ 熟悉現有模型的超參數和組態 

透過增量訓練，您可以使用現有模型的成品和更新的資料集來訓練新模型。增量訓練可節省時間和資源。

使用增量訓練時，可執行下列作業：
+ 使用已擴展的資料集來訓練新模型，該資料集具有先前訓練中未說明的基礎模式。
+ 使用不同的超參數或使用不同的資料集來訓練模型的數個變體。

------
#### [ Console ]

**執行增量訓練任務 （主控台）**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/cleanrooms](https://console.aws.amazon.com/cleanrooms/home) 開啟 AWS Clean Rooms 主控台。

1. 在左側導覽窗格中，選擇**協同合作**。

1. 在**協同**合作頁面上，選擇您要用於增量訓練的模型成品存在的協同合作。

1. 協同合作開啟後，選擇 **ML 模型**索引標籤。

1. 在**自訂 ML 模型**下，在**訓練模型**區段中，選擇您要遞增訓練之模型旁的選項按鈕。

1. 在**概觀**頁面**的版本**下，

   1. 選擇您要增量訓練之訓練模型旁的選項按鈕。

   1. 選擇**從版本訓練**。

1. 在**從版本建立訓練模型**頁面上，針對**訓練模型版本**，選擇版本。

   會自動選取基礎模型版本。如果有其他版本存在，您可以變更此版本。

1. 如需**訓練模型的詳細資訊**，請輸入下列項目：

   1. 在**名稱**中，輸入協同合作中模型的唯一名稱。

   1. （選用） 針對**描述**，輸入訓練模型的描述。

   1. 針對**訓練資料輸入模式**，選擇下列其中一項：
      + 如果您有適合 ML 儲存磁碟區的較小資料集，而且您偏好訓練指令碼的傳統檔案系統存取，請選取**檔案**。
      + 選取**管道**讓大型資料集直接從 S3 串流資料，避免將所有資料下載到磁碟，從而提高訓練速度並減少儲存需求。
      + 如果您想要將 S3 串流的優點與檔案系統存取結合，請選取 **FastFile**，特別是循序讀取資料或處理較少的檔案以加快啟動時間時。

   1. 針對**增量訓練頻道名稱**，輸入增量訓練頻道的名稱 
**注意**  
如果您指定沒有版本 ID **的增量訓練頻道名稱**，系統會使用基本模型進行增量訓練。

1. 對於 **ML 輸入通道詳細資訊**，請執行下列動作：

   1. 針對 **ML 輸入通道**，指定將資料提供給模型演算法的 ML 輸入通道。

      若要新增另一個頻道，請選擇**新增另一個 ML 輸入頻道**。您最多可以新增 19 個額外的 ML 輸入通道。

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

   1. 針對 **Amazon S3 資料分佈類型**，選擇下列其中一項：
      + 選取**完整複寫**，為每個訓練執行個體提供完整的資料集副本。當您的資料集夠小而足以容納在記憶體中，或每個執行個體都需要存取所有資料時，這最適合使用。
      + 選取**依 S3 金鑰分割**，根據 S3 金鑰跨訓練執行個體分割資料集。每個執行個體會收到大約總 S3 物件的 1/n，其中 'n' 是執行個體的數量。這最適合您要平行處理的大型資料集。
**注意**  
選取分佈類型時，請考慮您的資料集大小和訓練需求。**完全複寫**可提供完整的資料存取，但需要更多儲存空間，而**由 S3 金鑰碎片**可分散式處理大型資料集。

1. 針對**訓練持續時間上限**，選擇您想要訓練模型的時間上限。

1. 對於**超參數**，指定任何演算法特定的參數及其預期值。超參數專屬於要訓練的模型，並用於微調模型訓練。

1. 針對**環境變數**，指定任何演算法特定的變數及其預期值。環境變數是在 Docker 容器中設定。

1. 針對**加密**，若要使用自訂 AWS KMS key，請選取**使用自訂 KMS 金鑰加密秘密**核取方塊。

1. 針對 **EC2 資源組態**，指定用於模型訓練之運算資源的相關資訊。

   1. 針對**執行個體類型**，選擇您要執行的執行個體類型。

   1. 針對**執行個體計數**，輸入執行個體的數量。

   1. 對於以 **GB 為單位的磁碟區大小**，輸入 ML 儲存磁碟區大小。

1. 選擇**從 版本建立訓練過的模型**。

------
#### [ API ]

執行增量訓練任務 (API)

使用特定參數執行下列程式碼：

```
import boto3 
acr_ml_client= boto3.client('cleanroomsml')
 
acr_ml_client.create_trained_model(
    membershipIdentifier= 'membership_id',
    configuredModelAlgorithmAssociationArn = 'arn:aws:cleanrooms-ml:region:account:membership/membershipIdentifier/configured-model-algorithm-association/identifier',
    name='trained_model_name',
    resourceConfig={
        'instanceType': 'ml.m5.xlarge',
        'volumeSizeInGB': 1
    },
    incrementalTrainingDataChannels=[
        {
            'trainedModelArn': trained_model_arn,
            'channelName': 'channel_name'
        },
    ]
    dataChannels=[
        {
            'mlInputChannelArn': channel_arn_1,
            'channelName': 'channel_name'
        },
        {
            'mlInputChannelArn': channel_arn_2,
            'channelName': 'channel_name'
        }
    ]
)
```

**注意**  
限制：總計最多 20 個頻道 （包括 `dataChannels`和 `incrementalTrainingDataChannels`)。

------

**注意**  
建立訓練模型後，您無法編輯模型。若要進行變更，請刪除訓練過的模型並建立新的模型。