持续预训练 (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 实例的数量 |
|
以小时为单位的大致训练时间 |
|---|---|---|---|---|---|
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:128k、amazon.nova-lite-v1:0:300k或amazon.nova-pro-v1:0:300k。 -
model_name_or_path:用于训练的基本模型的路径。可用选项有nova-micro/prod、nova-lite/prod、nova-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 日志记录。