

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

# 在 AWS Clean Rooms ML 中建立 ML 輸入通道
<a name="create-ml-input-channel"></a>

**先決條件：**
+  AWS 帳戶 可存取 的 AWS Clean Rooms
+ 要在 AWS Clean Rooms 其中建立 ML 輸入通道的協同合作設定
+ 在協同合作中查詢資料和建立 ML 輸入通道的許可。
+ （選用） 要與 ML 輸入通道建立關聯的現有模型演算法，或建立新的模型演算法的許可
+ （選用） 具有分析規則的資料表，可針對您指定的模型執行。
+ （選用） 用於產生資料集的現有 SQL 查詢或分析範本
+ （選用） 具有適當許可的現有服務角色，或建立新服務角色的許可
+ （選用） 如果您想要使用自己的加密 AWS KMS 金鑰的自訂金鑰
+ 在協同合作中建立和管理 ML 模型的適當許可

*ML 輸入通道*是從特定資料查詢建立的資料集。能夠查詢資料的成員可以透過建立 ML 輸入通道來準備其資料以進行訓練和推論。建立 ML 輸入通道可讓該資料在相同的協同合作中用於不同的訓練模型。您應該為訓練和推論建立個別的 ML 輸入通道。

若要建立 ML 輸入通道，您必須指定用來查詢輸入資料的 SQL 查詢，並建立 ML 輸入通道。此查詢的結果絕不會與任何成員共用，並保持在 Clean Rooms ML 的界限內。參考 Amazon Resource Name (ARN) 用於後續步驟，以訓練模型或執行推論。

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

**建立 ML 輸入通道 （主控台）**

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

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

1. 在**協同**合作頁面上，選擇您要建立 ML 輸入通道的協同合作。

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

1. 在**自訂 ML 模型**的 **ML 輸入通道**區段中，選擇**建立 ML 輸入通道**。

1. 在**建立 ML 輸入通道**頁面上，針對 **ML 輸入通道詳細資訊**執行下列動作：

   1. 在**名稱**中，輸入頻道的唯一名稱。

   1. （選用） 針對**描述**，輸入頻道的描述。

   1. 針對**關聯的模型演算法**，選取要使用的演算法。

      選擇**關聯模型演算法**以新增。

1. 針對**資料集**，選擇產生訓練資料集的方法：
   + 選擇 **SQL 查詢**以使用 SQL 查詢的結果做為訓練資料集。

     如果您選擇 **SQL 查詢**，請在 **SQL 查詢欄位中輸入您的查詢**。

     （選用） 若要匯入您最近使用的查詢，請選擇**從最近的查詢匯入**。
   + 選擇**分析範本**以使用分析範本的結果做為訓練資料集。
**警告**  
合成資料產生可防止推斷個別屬性，無論原始資料集中是否存在特定個人，或這些個人的學習屬性是否存在。不過，它不會阻止原始資料集的常值，包括個人身分識別資訊 (PII) 出現在合成資料集中。  
我們建議您避免輸入資料集中的值僅與一個資料主體相關聯，因為這些值可能會重新識別資料主體。例如，如果只有一個使用者住在郵遞區號中，則合成資料集中是否存在該郵遞區號，會確認該使用者位於原始資料集中。可以使用截斷高精確度值或將不常見目錄取代為*其他* 等技術來降低此風險。這些轉換可以是用來建立 ML 輸入通道之查詢的一部分。

   1. 如果沒有相關聯的資料表，請選擇**關聯資料表**以新增具有可對指定模型執行之分析規則的資料表。

   1. 選擇建立此資料通道時要使用**的工作者類型**。預設工作者類型為 **CR.1X**。指定要使用的**工作者數量**。預設工作者編號為 **16**。若要指定 **Spark 屬性**：

      1. 展開 **Spark 屬性**。

      1. 選擇**新增 Spark 屬性**。

      1. 在 **Spark 屬性**對話方塊中，從下拉式清單中選擇**屬性名稱**，然後輸入**值**。

      下表提供每個屬性的定義。

      如需 Spark 屬性的詳細資訊，請參閱 Apache Spark 文件中的 Spark [屬性](https://spark.apache.org/docs/latest/configuration.html#spark-properties)。
**注意**  
您最多可以設定 50 個 Spark 屬性。每個屬性值最多可達 500 個字元。    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/clean-rooms/latest/userguide/create-ml-input-channel.html)    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/clean-rooms/latest/userguide/create-ml-input-channel.html)

   1. 對於以**天為單位的資料保留**，輸入保留資料的天數。

   1. 針對**結果格式，**選擇 **CSV** 或 **Parquet** 做為 ML 輸入通道應使用的資料格式。

1. 針對**服務存取**，選擇將用於存取此表格的**現有服務角色名稱**，或選擇**建立並使用新的服務角色**。

1. 針對**加密**，選擇**使用自訂 KMS 金鑰加密秘密**，以指定您自己的 KMS 金鑰和相關資訊。否則，Clean Rooms ML 會管理加密。

1. 選擇**建立 ML 輸入通道**。

   建立 ML 輸入通道需要幾分鐘的時間。您可以在 ML **模型索引標籤上查看 ML** 輸入通道的清單。

**注意**  
建立 ML 輸入通道之後，您就無法編輯它。

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

建立 ML 輸入通道 (API)

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

```
import boto3 
acr_client = boto3.client('cleanroomsml')

acr_client.create_ml_input_channel(
    name="{{ml_input_channel_name}}",
    membershipIdentifier='{{membership_id}}',
    configuredModelAlgorithmAssociations=[{{configured_model_algorithm_association_arn}}],
    retentionInDays={{1}},
    inputChannel={
        "dataSource": {
            "protectedQueryInputParameters": {
                "sqlParameters": {
                    "queryString": "select * from {{table}}",
                    "computeConfiguration": {
                        "worker": {
                            "type": "{{CR.1X}}",
                            "number": {{16}},
                            "properties": {
                                "spark": {
                                    "{{spark configuration key}}": "{{spark configuration value}}",
                                }
                            }   
                        }
                    },
                    "resultFormat": "{{PARQUET}}"
                }
            }
        },
        "roleArn": "arn:aws:iam::{{111122223333}}:role/{{role_name}}"
    }
)
channel_arn = resp['{{ML Input Channel ARN}}']
```

------