

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

# 在 AWS Clean Rooms ML 中使用分散式訓練
<a name="use-distributed-training"></a>

事前準備：
+  AWS 帳戶 可存取 的 AWS Clean Rooms
+ 在 中設定的協同合作 AWS Clean Rooms
+ 支援分散式訓練的已設定模型演算法
+ 適合分散式處理的大型資料集 
+ 在協同合作中建立和管理 ML 模型的適當許可
+ 足以執行多個執行個體以進行分散式訓練的 Amazon EC2 配額 

分散式訓練利用許多運算節點的強大功能並行運作，以有效率地處理大量資料和更新模型參數。

如需分散式訓練的詳細資訊，請參閱《*Amazon SageMaker AI 開發人員指南*》中的[分散式訓練概念](https://docs.aws.amazon.com/sagemaker/latest/dg/distributed-training.html#distributed-training-basic-concepts)。

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

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. 針對**執行個體類型**，選擇您要執行的執行個體類型。

      分散式訓練支援的執行個體類型如下：
      + ml.m5.4xlarge
      + ml.m5.12xlarge 
      + ml.m5.2xlarge
      + ml.g5.12xlarge
      + ml.g5.24xlarge

   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',
    trainingInputMode: "File",
    resourceConfig={
        'instanceCount': "3"
        'instanceType': "ml.m5.xlarge",
        'volumeSizeInGB': 3
    },
    dataChannels=[
        {
            "mlInputChannelArn": channel_arn_1,
            "channelName": "channel_name", 
            "S3DataDistributionType:" "FullyReplicated"
        }
  
    ]
)
```

------

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