在 SageMaker HyperPod 上对 Nova 2.0 进行持续预训练(CPT)
Amazon Nova Lite 2.0 是一款推理模型,其训练所用数据集相较于 Nova Lite 1.0 规模更大、种类更丰富。虽然 Nova Lite 2.0 模型规模更大,但其推理速度却快于 Nova Lite 1.0,同时具备更强的推理能力、更长的上下文长度以及更优的多语言处理性能。
借助 Nova 2.0 Lite 上的 CPT,您可通过自身领域专属数据拓展这些高级能力,在专业领域形成深度专长,同时保持模型出色的推理与分析能力。
以下是 CPT 配方示例。您可以在 GitHub 上的 SageMaker HyperPod recipes
# Note: # This recipe can run on p5.48xlarge # Run config run: name: "my-cpt-run" # A descriptive name for your training job model_type: "amazon.nova-2-lite-v1:0:256k" # Model variant specification, do not change model_name_or_path: "nova-lite-2/prod" # Base model path, do not change replicas: 8 # Number of compute instances for training, allowed values are 4, 8, 16, 32 data_s3_path: "" # Customer data paths validation_data_s3_path: "" # Customer validation data paths output_s3_path: "" # Output artifact path, SageMaker HyperPod job-specific configuration - not compatible with standard SageMaker Training Jobs mlflow_tracking_uri: "" # Required for MLFlow mlflow_experiment_name: "my-cpt-experiment" # Optional for MLFlow. Note: leave this field non-empty mlflow_run_name: "my-cpt-run" # Optional for MLFlow. Note: leave this field non-empty ## Training specific configs training_config: task_type: cpt max_length: 8192 # Maximum context window size (tokens) global_batch_size: 256 # Global batch size, allowed values are 32, 64, 128, 256. trainer: max_steps: 10 # The number of training steps to run total val_check_interval: 10 # The number of steps between running validation. Integer count or float percentage limit_val_batches: 2 # Batches of the validation set to use each trigger 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 optim: optimizer: adam 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 adam_beta1: 0.9 # Beta1 for Adam optimizer adam_beta2: 0.95 # Beta2 for Adam optimizer 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
在 SageMaker HyperPod 上启动持续预训练作业
准备数据
有关数据格式、支持的功能、限制条件以及准备 CPT 训练数据的最佳实践的信息,请参阅 为 Amazon Nova 2 上的 CPT 准备数据。
上传数据
将训练数据集与验证数据集上传到 S3 存储桶。在配方的 run 数据块中指定这些位置:
## Run config run: ... data_s3_path: "s3://<bucket-name>/<training-directory>/<training-file>.jsonl" validation_data_s3_path: "s3://<bucket-name>/<validation-directory>/<validation-file>.jsonl"
注意
将 <bucket-name>、<training-directory>、<validation-directory>、<training-file> 和 <validation-file> 替换为实际的 S3 路径。
定义您的配置
使用 run 数据块中的 model_type 和 model_name_or_path 字段定义基础模型:
## Run config run: ... model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: nova-lite-2/prod ...
CPT 调优参数
可用于 CPT 微调的参数包括:
运行配置
-
name:训练作业的描述性名称。这有助于在 AWS 管理控制台中识别对应作业。
-
model_type:要使用的 Amazon Nova 模型变体。可用选项为
amazon.nova-2-lite-v1:0:256k。 -
model_name_or_path:用于训练的基本模型的路径。可用选项为
nova-lite-2/prod,或训练后检查点的 S3 路径 (s3://customer-escrow-bucket-unique_id/training_run_name)。 -
replicas:要在分布式训练中使用的计算实例数。可用值因您所选的模型而异。Amazon Nova Lite 2.0 支持 4、8、16 或 32 个副本。
-
data_s3_path:训练数据集的 S3 位置,格式为 JSONL 文件。此文件必须与集群位于同一 AWS 账户和区域中。提供的所有 S3 位置必须位于同一账户和区域中。
-
validation_data_s3_path:(选填)验证数据集的 S3 位置,格式为 JSONL 文件。此文件必须与集群位于相同的账户和区域中。提供的所有 S3 位置必须位于同一账户和区域中。
-
output_s3_path:存储清单和 TensorBoard 日志的 S3 位置。提供的所有 S3 位置必须位于同一 AWS 账户和 AWS 区域中。
-
mlflow_tracking_uri:用于 MLflow 日志记录的 MLflow 应用程序的 ARN
-
mlflow_experiment_name:MLflow 实验名称
-
mlflow_run_name:MLflow 运行名称
训练配置
-
max_length:以词元为单位的最大序列长度。这决定了训练的上下文窗口大小。CPT 支持的最大值为 8192 个词元。
更长的序列将会提高训练效率,但会以增加内存需求为代价。建议将 max_length 参数设置为与数据分布相匹配。
-
global_batch_size:所有设备与 Worker 节点在一次前向及反向传播中共同处理的训练样本总数。
该值乘以每台设备的批量大小和设备数量。它会影响训练的稳定性和吞吐量。我们建议从适合您内存的批量大小开始,然后进行扩展。对于特定领域的数据,较大的批量大小可能会使梯度过于平滑。
训练器设置
-
max_steps:训练迭代步数。每一步训练模型所用的元素数量即
global_batch_size
模型设置
-
hidden_dropout:隐藏状态输出的丢弃概率。将该值增加约 0.0 到 0.2,以减少对较小数据集的过度拟合。有效值介于 0 到 1 之间(含两端值)。
-
attention_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 之间(含两端值),但必须小于学习率。