

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

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

先决条件：
+ 可以 AWS 账户 访问的 AWS Clean Rooms
+ 协作中现有的经过训练的模型 
+ 用于增量训练的新数据集或更新的数据集 
+ 在协作中创建和管理机器学习模型的适当权限
+ 熟悉现有模型的超参数和配置 

通过增量训练，您可以使用现有模型的构件和更新的数据集来训练新模型。增量训练可节省时间和资源。

使用增量训练可以：
+ 使用扩展的数据集训练新模型，该数据集具有早期训练中未考虑的底层模式。
+ 训练模型的多个变体，要么使用不同的超参数，要么使用不同的数据集。

------
#### [ 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. 有关**训练模型的详细信息**，请输入以下内容：

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

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

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

   1. 在**增量训练频道名称**中，输入增量训练频道的名称 
**注意**  
如果您指定**增量训练通道名称**但没有版本 ID，则系统将使用基础模型进行增量训练。

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. 在**实例类型**中，选择要运行的实例类型。

   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`）。

------

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