

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在 AWS Clean Rooms ML 中使用分布式培训
<a name="use-distributed-training"></a>

先决条件：
+ 可以 AWS 账户 访问的 AWS Clean Rooms
+ 合作建立在 AWS Clean Rooms
+ 支持分布式训练的配置模型算法
+ 适用于分布式处理的大型数据集 
+ 在协作中创建和管理机器学习模型的适当权限
+ 有足够的 Amazon EC2 配额来运行多个实例进行分布式训练 

分布式训练利用许多并行运行的计算节点的强大功能来处理大量数据并有效地更新模型参数。

有关分布式训练的更多信息，请参阅 *Amazon A SageMaker I 开发人员指南*中的[分布式训练概念](https://docs.aws.amazon.com/sagemaker/latest/dg/distributed-training.html#distributed-training-basic-concepts)。

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

**运行分布式训练作业（控制台）**

1. 登录 AWS 管理控制台 并在 [https://console.aws.amazon.com/clean](https://console.aws.amazon.com/cleanrooms/home) room AWS Clean Rooms s 上打开控制台。

1. 在左侧导航窗格中，选择**协作**。

1. 在**协作**页面上，选择要在其中创建训练模型的协作。

1. 协作打开后，选择**机器学习模型**选项卡。

1. 在 “**自定义 ML 模型**” 下的 “**经过训练的模型**” 部分中，选择**创建经过训练的模型**。

1. 在**创建训练模型**页面上，为**关联模型算法**指定算法

1. 有关**训练模型的详细信息**，请输入以下内容：

   1. 在**名称**中，输入协作中模型的唯一名称。

   1. （可选）在**描述**中，输入训练模型的描述。

   1. 对于**训练数据输入模式**，请选择以下选项之一：
      + **如果您的数据集较小，可以容纳机器学习存储卷，并且您更喜欢使用传统的文件系统访问权限来访问训练脚本，请选择 “文件”。**
      + 对于大型数据集，选择 **Pip** e 可以直接从 S3 流式传输数据，无需将所有内容下载到磁盘，这样可以提高训练速度并降低存储需求。
      + **FastFile**如果要将从 S3 进行流式传输的优势与文件系统访问相结合，尤其是在顺序读取数据或处理较少文件以缩短启动时间时，请选择此选项。

1. 要了解 **ML 输入通道的详细信息**，请执行以下操作：

   1. 对于 **ML 输入通道**，请指定为模型算法提供数据的 ML 输入通道。

      要添加其他频道，请选择**添加另一个 ML 输入频道**。您最多可以添加 19 个额外的 ML 输入通道。

   1. 在**频道名称**中，输入 ML 输入频道的名称。

   1. 对于 **Amazon S3 数据分配类型**，请选择以下选项之一：
      + 选择 “**完全复制**”，为每个训练实例提供数据集的完整副本。当您的数据集足够小以容纳内存时，或者当每个实例都需要访问所有数据时，这种方法效果最好。
      + 选择 “**按 S3 密钥**分片”，根据 S3 密钥将您的数据集划分到训练实例。每个实例接收大约 S3 对象总数的 1/n，其中 'n' 是实例数。这最适合您想要并行处理的大型数据集。
**注意**  
选择分布类型时，请考虑您的数据集大小和训练要求。**完全复制**可提供完整的数据访问权限，但需要更多存储空间，而 **Sharded by 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"
        }
  
    ]
)
```

------

**注意**  
创建训练后的模型后，您无法对其进行编辑。要进行更改，请删除经过训练的模型并创建一个新模型。