持续预训练 (CPT) - Amazon SageMaker AI

持续预训练 (CPT)

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

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

您应当在以下场景中使用 CPT:

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

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

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

数据格式要求

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

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

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

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

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

训练数据集和验证数据集必须是遵循 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

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

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

  • 运行配置

    • name:训练作业的描述性名称。这有助于您在 AWS 管理控制台中识别您的作业。

    • model_type:要使用的 Amazon Nova 模型变体。可用选项有 amazon.nova-micro-v1:0:128kamazon.nova-lite-v1:0:300kamazon.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:所有设备和 Worker 一次前向或后向传递中共计处理的训练样本总数。

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

    • max_epochs:遍历训练数据集的次数。

      通常,较大的数据集需要较少的 epoch 就能收敛,而较小的数据集则需要较多的 epoch 才能收敛。我们建议您根据数据大小调整 epoch 数,以防过度拟合。

  • 模型设置

    • 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 日志记录。