持续预训练 (CPT) - 亚马逊 SageMaker AI

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

持续预训练 (CPT)

持续预训练 (CPT) 是使用相同的无监督目标(例如掩码语言建模或因果语言建模)根据新数据进一步训练预训练的基础模型的过程。它保留了以前学习的通用语言能力,同时适应了新的领域或分布变化。

CPT 不涉及架构变更或针对特定下游任务的微调。相反,它以领域感知的方式扩展了模型的语言理解能力。

您应该在以下情况下使用 CPT:

  • 您有特定于某个领域(例如医学或金融)的大规模、未标记的数据。

  • 您希望模型保留通用语言功能,同时改进特定领域的内容。

  • 您希望在不进行大量针对特定任务的微调的情况下提高专业领域的零镜头和少镜头性能。

数据格式要求

我们建议在执行 CPT 时遵守以下数据集特征:

  • 多样性:您的数据应涵盖目标域内的各种表达式,以避免过度拟合。

  • 表示法:您的数据应反映模型在推理期间将面临的分布。

  • 清洁度:数据中的噪音和冗余会降低性能。重复数据删除和文本标准化改进了模型训练。

  • 规模:较大的数据集会有所帮助,但是超过一定阈值(例如在有限的数据上运行多个时代),过度拟合的风险就会增加。

训练和验证数据集必须是遵循 Converse 格式的 JSONL 文件,其中每行都包含一个 JSON 对象,表示与必填字段和结构的对话。示例如下:

{"text": "AWS stands for Amazon Web Services"} {"text": "Amazon SageMaker is a fully managed machine learning service"} {"text": "Amazon Bedrock is a fully managed service for foundation models"}

文本条目应包含代表您的目标域的自然流畅的高质量内容。

数据集验证

要在提交 CPT 作业之前验证您的数据集,请检查以下条件:

  • 每行都必须包含一个有效的 JSON 对象。

  • 每个对象都有一个包含字符串数据的 “文本” 字段。

  • 除了 “文本” 以外没有其他字段。

  • 该文件是一个.jsonl扩展名。

训练时间

训练所花费的时间在很大程度上取决于数据集的大小、使用的实例数量和正在训练的模型。预计训练时间将线性扩展。下表提供了各种模型的一些训练时间示例。

模型类型

GBS

数据集中的样本数

P5 实例的数量

max_length

以小时为单位的大致训练时间

Amazon Nova Micro

256

100000

8

8192

4

Amazon Nova Lite

256

100000

16

8192

4

Amazon Nova Pro

256

100000

24

8192

10

训练和验证数据集必须是遵循 A mazon Bedrock Converse 操作格式的 JSONL 文件,其中每行都包含一个 JSON 对象,表示具有必填字段和结构的对话。

可用于 CPT 调整的 Amazon Nova 参数包括:

  • 运行配置

    • name: 您的训练作业的描述性名称。这有助于确定您的工作 AWS Management Console。

    • model_type: 要使用的亚马逊 Nova 型号变体。可用选项有amazon.nova-micro-v1:0:128kamazon.nova-lite-v1:0:300k、或amazon.nova-pro-v1:0:300k

    • model_name_or_path:用于训练的基础模型的路径。可用选项有nova-micro/prodnova-lite/prodnova-pro/prod、或训练后检查点的 S3 路径 (s3://customer-escrow-bucket-unique_id/training_run_name)。

    • replicas:用于分布式训练的计算实例数量。可用值因您选择的型号而异。Amazon Nova Micro 支持 2、4 或 8 个副本。Amazon Nova Lite 支持 4、8、16 或 32 个副本。Amazon Nova Pro 支持 6、12 或 24 个副本。

    • data_s3_path:训练数据集的 S3 位置,它是一个 JSONL 文件。此文件必须位于与集群相同的 AWS 账户 区域中。提供的所有 S3 地点都必须位于同一个账户和区域中。

    • validation_data_s3_path:(可选)验证数据集的 S3 位置,它是一个 JSONL 文件。此文件必须与集群位于相同的账户和区域中。提供的所有 S3 地点都必须位于同一个账户和区域中。

    • output_s3_path:存储清单和 TensorBoard 日志的 S3 位置。提供的所有 S3 位置都必须位于相同 AWS 账户 和 AWS 区域。

  • 训练配置

    • max_length:以令牌为单位的最大序列长度。这决定了训练的上下文窗口大小。CPT 支持的最大值为 8192 个代币。

      更长的序列会以增加内存需求为代价提高训练效率。我们建议您将max_length参数与您的数据分布进行匹配。

  • 教练设置

    • global_batch_size:所有设备和工作人员在一次向前或向后传递中一起处理的训练样本总数。

      该值乘以每台设备的批量大小和设备数量。它会影响训练的稳定性和吞吐量。我们建议您从容纳内存中的批量大小开始,然后从那里向上扩展。对于特定领域的数据,较大的批次可能会使梯度过于平滑。

    • max_epochs:通过训练数据集的完整传球次数。

      通常,较大的数据集需要较少的时代才能收集,而较小的数据集需要更多的时代才能收集。我们建议您根据数据的大小调整周期数,以防止过度拟合。

  • 模型设置

    • hidden_dropout: 丢弃隐藏状态输出的概率。将该值增加大约 0.0-0.2 以减少对较小数据集的过度拟合。有效值介于 0-1 之间(含)。

    • attention_dropout: 注意力权重下降的概率。此参数可以帮助进行概括。有效值介于 0-1 之间(含)。

    • ffn_dropout: 丢弃前馈网络输出的概率。有效值介于 0-1 之间(含)。

  • 优化器配置

    • lr: 学习速率,它控制优化期间的步长。为了获得良好的性能,我们建议使用介于 1e-6-1e-4 之间的值。有效值介于 0-1 之间(含)。

    • name:优化器算法。目前仅支持 distributed_fused_adam

    • weight_decay: L2 正则化强度。较高的值(介于 0.01-0.1 之间)会增加正则化。

    • warmup_steps: 逐步提高学习率的步骤数。这提高了训练的稳定性。有效值介于 1-20 之间(含)。

    • min_lr: 衰变结束时的最低学习率。有效值介于 0-1(含)之间,但必须小于学习率。

CPT 食谱

以下是CPT的秘诀。

## Run config run: name: "my-cpt-run" # A descriptive name for your training job model_type: "amazon.nova-lite-v1:0:300k" # Model variant specification, do not change model_name_or_path: "nova-lite/prod" # Base model path, do not change replicas: 4 # Number of compute instances for training, allowed values are 4, 8, 16 data_s3_path: [S3_PATH_TO_TRAIN_DATASET] validation_data_s3_path: (OPTIONAL)[S3_PATH_TO_VALIDATION_DATASET] output_s3_path: [S3_PATH_TO_STORE_MANIFEST] ## Training specific configs training_config: max_length: 8192 # Maximum context window size (tokens). global_batch_size: 256 # Global batch size, allowed values are 32, 64, 128, 256. trainer: max_epochs: 2 # Number of training epochs model: hidden_dropout: 0.0 # Dropout for hidden states, must be between 0.0 and 1.0 attention_dropout: 0.0 # Dropout for attention weights, must be between 0.0 and 1.0 ffn_dropout: 0.0 # Dropout for feed-forward networks, must be between 0.0 and 1.0 optim: lr: 1e-5 # Learning rate name: distributed_fused_adam # Optimizer algorithm, do not change adam_w_mode: true # Enable AdamW mode eps: 1e-06 # Epsilon for numerical stability weight_decay: 0.0 # L2 regularization strength, must be between 0.0 and 1.0 betas: # Adam optimizer betas, must be between 0.0 and 1.0 - 0.9 - 0.999 sched: warmup_steps: 10 # Learning rate warmup steps constant_steps: 0 # Steps at constant learning rate min_lr: 1e-6 # Minimum learning rate, must be lower than lr
限制

CPT 有以下限制:

  • 不支持多模式数据集。

  • 中间检查点不会保存以供评估,也无法从中间检查点恢复。仅保存最后一个检查点。

  • MLflow 不支持日志记录。