配置解释 ========ba
最后更新:06/18/2025 。
ppo_trainer.yaml 用于 RL FSDP 后端
数据
data:
tokenizer: null
train_files: ~/data/rlhf/gsm8k/train.parquet
val_files: ~/data/rlhf/gsm8k/test.parquet
train_max_samples: -1 # set to -1 to use full dataset
val_max_samples: -1 # set to -1 to use full dataset
prompt_key: prompt
max_prompt_length: 512
max_response_length: 512
train_batch_size: 1024
return_raw_input_ids: False # This should be set to true when the tokenizer between policy and rm differs
return_raw_chat: False
return_full_prompt: False
shuffle: True
seed: 42
filter_overlong_prompts: False
filter_overlong_prompts_workers: 1
truncation: error
image_key: images
trust_remote_code: True
custom_cls:
path: null
name: null
data.train_files:训练数据集的 parquet 文件。可以是列表或单个文件。程序会将所有文件读入内存,因此文件总量不得超过 100 GB。路径可以是本地路径或 HDFS 路径。对于 HDFS 路径,我们提供了工具将它下载到 DRAM 并转换为本地路径。data.val_files:验证数据集的 parquet 文件。可以是列表或单个文件。data.train_max_samples:从训练数据集中使用的最大样本数量。设置为 -1 以使用完整数据集。data.val_max_samples:从验证数据集中使用的最大样本数量。设置为 -1 以使用完整数据集。data.prompt_key:数据集中包含提示(prompt)的字段。默认值为 ‘prompt’。data.max_prompt_length:最大提示长度。所有提示将被左填充到此长度。如果长度过长,则会报告错误。data.max_response_length:最大响应长度。在 RL 算法(如 PPO)中,生成响应时会达到此长度。data.train_batch_size:单个训练迭代中不同 RL 算法采样的批次大小。data.return_raw_input_ids:是否返回未添加聊天模板的原始 input_ids。主要用于适应策略(policy)和奖励模型(rm)的聊天模板不同的情况。它需要先解码,然后应用 RM 的聊天模板。如果使用基于模型的 RM,并且策略和 RM 的聊天模板不同,则需要设置此标志。data.return_raw_chat:是否返回未应用聊天模板的原始聊天(提示)。data.return_full_prompt:是否返回带有聊天模板的完整提示。data.shuffle:是否在数据加载器中打乱数据。data.seed:用于打乱数据的整数种子。如果未设置或设置为 null,则数据打乱将不会种子化,导致每次运行数据顺序不同。data.filter_overlong_prompts:是否过滤过长的提示。默认不过滤。data.filter_overlong_prompts_workers:对于大规模数据集,过滤过长提示可能很耗时。您可以使用filter_overlong_prompts_workers设置为多进程加速。默认值为 1。data.truncation:当 input_ids 或提示长度超过 max_prompt_length 时截断。默认值为 ‘error’,不允许超过 max_prompt_length。用户应该增加 max_prompt_length 如果抛出错误。您也可以设置为left、right或middle。当选择middle时,逻辑将允许的最大长度大致一分为二,保留序列的头部和尾部,有效地丢弃中间部分。data.image_key:多模态数据集中包含图像的字段。默认值为 ‘images’。data.trust_remote_code:如果远程分词器有 Python 文件,我们可以使用此字段来允许使用远程分词器。例如:moonshotai/Moonlight-16B-A3B-Instruct
自定义数据集
自定义数据集扩展针对 SFT 训练器实现,并可以扩展到其他具有类似变化的训练器。
custom_cls:
path: null
name: null
data.custom_cls.path:包含自定义数据集类的文件的路径。如果未指定,将使用预实现的 dataset。data.custom_cls.name:指定文件中的数据集类名称。
执行者/生成/参考策略
actor_rollout_ref:
hybrid_engine: True
model:
path: ~/models/deepseek-llm-7b-chat
external_lib: null
override_config:
attn_implementation: flash_attention_2 # or eager, sdpa - attention implementation override
model_config: {}
moe_config: # Megatron only, can adjust moe configuration
freeze_moe_router: False # Megatron only, can freeze moe router (no grad)
enable_gradient_checkpointing: False
enable_activation_offload: False
trust_remote_code: False
use_remove_padding: False
actor:
strategy: fsdp # This is for backward-compatibility
ppo_mini_batch_size: 256
ppo_micro_batch_size: null # will be deprecated, use ppo_micro_batch_size_per_gpu
ppo_micro_batch_size_per_gpu: 8
use_dynamic_bsz: False
ppo_max_token_len_per_gpu: 16384 # n * ${data.max_prompt_length} + ${data.max_response_length}
grad_clip: 1.0
clip_ratio: 0.2
entropy_coeff: 0.0
use_kl_loss: False # True for GRPO
# Rollout Correction (corrects distribution mismatch between rollout and training)
rollout_correction:
rollout_is: token # IS weights: token/sequence/null
rollout_is_threshold: 2.0 # Upper threshold for IS weights
rollout_rs: null # Rejection sampling: token/sequence/geometric/null
rollout_rs_threshold: null # RS upper threshold
rollout_rs_threshold_lower: null # RS lower threshold
rollout_token_veto_threshold: null # Per-token veto (null to disable)
use_torch_compile: True # False to disable torch compile
kl_loss_coef: 0.001 # for grpo
kl_loss_type: low_var_kl # for grpo
ppo_epochs: 1
data_loader_seed: null
shuffle: False
ulysses_sequence_parallel_size: 1 # sp size
optim:
lr: 1e-6
lr_warmup_steps: -1 # Prioritized. Negative values mean delegating to lr_warmup_steps_ratio.
lr_warmup_steps_ratio: 0. # the total steps will be injected during runtime
min_lr_ratio: 0.0 # only used with cosine lr scheduler, default to 0.0
num_cycles: 0.5 # only used with cosine lr scheduler, default to 0.5
lr_scheduler_type: constant # select from constant/cosine
total_training_steps: -1 # must be override by program
fsdp_config:
wrap_policy:
# transformer_layer_cls_to_wrap: None
min_num_params: 0
param_offload: False
optimizer_offload: False
fsdp_size: -1
checkpoint:
# What to include in saved checkpoints
# with 'hf_model' you can save whole model as hf format, now only use sharded model checkpoint to save space
save_contents: ['model', 'optimizer', 'extra']
# For more flexibility, you can specify the contents to load from the checkpoint.
load_contents: ${actor_rollout_ref.actor.checkpoint.save_contents}
ref:
fsdp_config:
param_offload: False
wrap_policy:
# transformer_layer_cls_to_wrap: None
min_num_params: 0
log_prob_micro_batch_size: null # will be deprecated, use log_prob_micro_batch_size_per_gpu
log_prob_micro_batch_size_per_gpu: 16
log_prob_use_dynamic_bsz: ${actor_rollout_ref.actor.use_dynamic_bsz}
log_prob_max_token_len_per_gpu: ${actor_rollout_ref.actor.ppo_max_token_len_per_gpu}
ulysses_sequence_parallel_size: ${actor_rollout_ref.actor.ulysses_sequence_parallel_size} # sp size
rollout:
name: vllm
temperature: 1.0
top_k: -1 # 0 for hf rollout, -1 for vllm rollout
top_p: 1
prompt_length: ${data.max_prompt_length} # not use for opensource
response_length: ${data.max_response_length}
# for vllm rollout
dtype: bfloat16 # should align with FSDP
gpu_memory_utilization: 0.5
ignore_eos: False
enforce_eager: True
free_cache_engine: True
load_format: dummy_dtensor
tensor_model_parallel_size: 2
max_num_batched_tokens: 8192
max_num_seqs: 1024
log_prob_micro_batch_size: null # will be deprecated, use log_prob_micro_batch_size_per_gpu
log_prob_micro_batch_size_per_gpu: 16
log_prob_use_dynamic_bsz: ${actor_rollout_ref.actor.use_dynamic_bsz}
log_prob_max_token_len_per_gpu: ${actor_rollout_ref.actor.ppo_max_token_len_per_gpu}
# for hf rollout
do_sample: True
engine_kwargs: # inference engine parameters, please refer vllm/sglang official doc for detail
vllm: {}
sglang: {}
n: 1 # for each prompt, sample n responses (i.e. num sample times). set it to values > 1 for grpo, rloo
calculate_log_probs: False # set to True for computing log probs via rollouts
val_kwargs:
# sampling parameters for validation
top_k: -1 # 0 for hf rollout, -1 for vllm rollout
top_p: 1.0
temperature: 0
n: 1
do_sample: False # default eager for validation
agent:
custom_async_server: # Use custom async server implementation for rollout
path: null
name: null
执行者、生成和参考模型的通用配置
actor_rollout_ref.hybrid_engine:是否为混合引擎。目前只支持混合引擎。actor_rollout_ref.model.path:Huggingface 模型路径。这可以是本地路径或 HDFS 路径。对于 HDFS 路径,我们提供了工具将它下载到 DRAM 并转换为本地路径。actor_rollout_ref.model.external_libs:需要导入的额外 Python 包。用于将模型或分词器注册到 Huggingface 系统。actor_rollout_ref.model.override_config:用于覆盖模型的原始配置。常见的覆盖包括:attn_implementation:覆盖注意力实现。默认值为flash_attention_2。 支持的值:flash_attention_2、eager、sdpa。使用eager进行调试或兼容性问题。请参阅 注意力实现覆盖 了解详细用法。
actor_rollout_ref.model.enable_gradient_checkpointing:仅限 FSDP,决定是否为执行者启用梯度检查点,Megatron 使用override_transformer_config中的 recompute 选项来设置这个。actor_rollout_ref.model.enable_activation_offload:是否为执行者启用激活卸载。actor_rollout_ref.model.trust_remote_code:是否启用加载远程代码模型。actor_rollout_ref.model.use_fused_kernels:是否在模型中使用融合内核。如果设置为 True,则将使用以下参数。actor_rollout_ref.model.fused_kernel_options.impl_backend:融合内核的实现后端。选项:”triton” 或 “torch”。默认值为 “torch”。 在 megatron 中,我们只支持 “triton” 作为实现后端,因此无需此选项。
actor_rollout_ref.model.use_remove_padding:是否在模型中使用移除填充。如果设置为 True,模型将移除输入中的填充标记,以帮助提高模型运行效率。
执行者模型
actor_rollout_ref.actor.strategy:fsdp 或 megatron。在此示例中,我们使用 fsdp 后端。actor_rollout_ref.actor.ppo_mini_batch_size:一个样本被分成多个子批次,用于 PPO 更新的批次大小为 ppo_mini_batch_size。这个 ppo_mini_batch_size 是所有工作者/GPU 的全局数量。actor_rollout_ref.actor.ppo_micro_batch_size:[即将弃用,使用 ppo_micro_batch_size_per_gpu] 与梯度累积类似,一个前向传递的 micro_batch_size_per_gpu,以速度换取 GPU 内存。这个值代表全局视图。actor_rollout_ref.actor.ppo_micro_batch_size_per_gpu:与梯度累积类似,一个前向传递的 micro_batch_size_per_gpu,以速度换取 GPU 内存。这个值代表每 GPU 的本地数量。actor_rollout_ref.actor.grad_clip:执行者更新的梯度裁剪。actor_rollout_ref.actor.use_kl_loss:是否在执行者中使用 KL 损失。当使用时,我们不在奖励函数中应用 KL。actor_rollout_ref.actor.clip_ratio:PPO 裁剪比率。actor_rollout_ref.actor.use_torch_compile:是否在执行者中使用 Torch 编译。actor_rollout_ref.actor.entropy_coeff:计算 PPO 损失时熵的权重。从 v0.3.x 开始,默认值改为 0.0。actor_rollout_ref.actor.ppo_epochs:对一组采样数据进行 PPO 更新的轮数。actor_rollout_ref.actor.data_loader_seed:从 torch 2.6.0 开始,Megatron 后端可在 cp 排名之间生成错误的种子,并导致这些排名之间的数据错位,因此我们应手动设置种子以避免挂起问题。如果actor_rollout_ref.actor.shuffle不为 null,则必须设置此项。actor_rollout_ref.actor.shuffle:在有多个轮次时,是否打乱数据。actor_rollout_ref.actor.optim:执行者的优化器参数。actor_rollout_ref.actor.fsdp_config:执行者训练的 FSDP 配置。wrap_policy:FSDP 包装策略。默认使用 Huggingface 的包装策略,即按 DecoderLayer 包装。无需设置 transformer_layer_cls_to_wrap,因此我们将其注释。
*_offload:是否启用参数、梯度和优化器的卸载。以速度换取 GPU 内存。
actor_rollout_ref.actor.use_kl_loss:是否启用 KL 损失。默认值为 False。actor_rollout_ref.actor.kl_loss_coef:KL 损失的系数。默认值为 0.001。actor_rollout_ref.actor.kl_loss_type:支持kl(k1)、abs、mse(k2)、low_var_kl(k3) 和full。在末尾附加+(例如k1+和k3+) 将使用无偏梯度估计的直通,而不管 KL 值估计如何(详见 https://github.com/volcengine/verl/pull/2953#issuecomment-3162113848)。如何计算执行者和参考策略之间的 KL 散度。具体选项请参考 core_algos.py 中的 kl_penalty() 。有关详细分析,请参见此博客文章:http://joschu.net/blog/kl-approx.htmlactor_rollout_ref.actor.checkpoint:执行者检查点功能的配置。save_contents:保存到检查点的内容。默认情况下,我们在检查点中保存模型、优化器和额外信息。额外信息目前包括 Rng 状态、FSDP 支持的 lr_scheduler,以及即将支持的 Megatron opt_param_scheduler。我们默认不存储 hf_model,但我们在scripts/model_merge.py中提供了一个工具来将检查点格式转换为 hf 格式。load_contents:从检查点加载的内容。您可以指定不同的检查点加载内容。默认情况下,与save_checkpoint相同。
参考模型
当 actor.use_kl_loss 或/and algorithm.use_kl_in_reward 为 True 时,参考模型将被启用。
actor_rollout_ref.ref:与执行者相同的 FSDP 配置。对于超过 7B 的模型,默认建议为 ref 开启卸载。actor_rollout_ref.ref.log_prob_micro_batch_size:[即将弃用,使用 log_prob_micro_batch_size_per_gpu] 计算ref_log_prob时一个前向传递的批次大小。这个值代表全局数量。actor_rollout_ref.ref.log_prob_micro_batch_size_per_gpu:计算ref_log_prob时一个前向传递的批次大小。这个值代表每 GPU 的本地数量。
生成模型
actor_rollout_ref.rollout.name:hf/vllm/sglang。(自动回归)生成参数。这些键应等于 vLLM 的
SamplingParams中的属性名称。temperature、top_k、top_p等:在SamplingParams中的采样参数。
actor_rollout_ref.rollout.dtype:生成模型参数类型。这应与 FSDP/Megatron 后端的执行者模型参数类型对齐。actor_rollout_ref.rollout.gpu_memory_utilization:对于 vLLM v0.7.0 及更高版本:总 GPU 内存使用的占比。
对于 SGLang:对应
mem_fraction_static,表示用于静态内存(如模型权重和 KV 缓存)的可用 GPU 内存占比。
actor_rollout_ref.rollout.tensor_model_parallel_size:生成模型的 TP 大小。仅在 vllm 中有效。actor_rollout_ref.rollout.log_prob_micro_batch_size:[即将弃用,使用 log_prob_micro_batch_size_per_gpu] 计算log_prob时一个前向传递的批次大小。这个值代表全局数量。actor_rollout_ref.rollout.log_prob_micro_batch_size_per_gpu:用于重新计算log_prob的每 GPU 微批次大小(一个前向传递的批次大小)。这个值代表每 GPU 的本地数量。actor_rollout_ref.rollout.do_sample:是否在训练生成期间采样。如果设置为 False,则生成模型将执行贪婪采样。actor_rollout_ref.rollout.val_kwargs:专门用于验证的采样参数。top_k:Top-k 采样参数。默认为 vLLM 生成的 -1 或 HF 生成的 0。top_p:Top-p 采样参数。默认为 1.0 (禁用)。temperature:采样温度。默认为 0 (确定性贪婪)。n:在验证期间为每个提示生成的响应数量。默认为 1。do_sample:是否在验证期间使用采样。默认为 False(确定性输出)。当设置为 True 时,生成将使用actor_rollout_ref.rollout.val_kwargs参数(top_k、top_p、temperature)来控制采样行为。
actor_rollout_ref.rollout.engine_kwargs.vllm:额外的 vllm 引擎参数,请参考官方文档。actor_rollout_ref.rollout.engine_kwargs.sglang:额外的 sglang 引擎参数,请参考官方文档。actor_rollout_ref.rollout.ignore_eos:是否忽略 EOS 标记并在生成 EOS 标记后继续生成标记。actor_rollout_ref.rollout.free_cache_engine:在生成阶段后卸载 KVCache。默认值为 True。当设置为 True 时,对于 vllm v0.5.4 和 v0.6.3,我们需要在enforce_eager设置为 True 时禁用 CUDAGraph 使用。actor_rollout_ref.rollout.enforce_eager:是否在 vLLM 生成中使用 CUDAGraph。默认设置为 True 以禁用 CUDAGraph。actor_rollout_ref.rollout.load_format:用于将执行者模型权重加载到生成模型的权重加载器类型。auto:使用 Megatron 权重加载器。megatron:使用 Megatron 权重加载器。部署于 Megatron 后端。输入模型state_dict()已在 TP 维度沿分区并已在 PP 维度聚集。这个权重加载器要求生成模型和执行者模型的参数形状和名称相同。dtensor:使用 Huggingface 权重加载器的默认解决方案。部署于 FSDP 后端,state_dict_type 为StateDictType.SHARDED_STATE_DICT。推荐使用此权重加载器。hf:使用 Huggingface 权重加载器。部署于 FSDP 后端,state_dict_type 为StateDictType.FULL_STATE_DICT。此解决方案不需要为每个 vLLM 中实现的模型重写权重加载器,但会导致更大的峰值内存使用。dummy_hf、dummy_megatron、dummy_dtensor:随机初始化。
Note
注意事项:在此配置字段中,用户只需从 dummy_megatron、 dummy_dtensor、 dummy_hf 中选择生成初始化,我们的混合引擎将在执行者/生成权重同步期间选择相应的权重加载器(即 megatron、 dtensor、 hf)。
Megatron 优化器和优化器参数调度器
optim:
optimizer: adam
lr: 1e-6
clip_grad: 1.0
total_training_steps: -1 # must be override by program
lr_warmup_init: 0.0 # initial learning rate for warmup, default to 0.0
lr_warmup_steps: -1 # Prioritized. Negative values mean delegating to lr_warmup_steps_ratio.
lr_warmup_steps_ratio: 0. # the total steps will be injected during runtime
lr_decay_steps: null
lr_decay_style: constant # select from constant/linear/cosine/inverse_square_root
min_lr: 0.0 # minimum learning rate, default to 0.0
weight_decay: 0.01
weight_decay_incr_style: constant # select from constant/linear/cosine
lr_wsd_decay_style: exponential # select from constant/exponential/cosine
lr_wsd_decay_steps: null
use_checkpoint_opt_param_scheduler: False # use checkpoint optimizer parameter scheduler
请注意,Megatron 优化器和 FSDP 优化器在 API 上有一些差异。
Megatron 优化器调度器将 lr_warmup 后的时段命名为 lr_decay_steps,因此
lr_scheduler_type实际上意味着 warmup 后学习率衰减的风格。Megatron 优化器还支持权重衰减衰减机制。
use_checkpoint_opt_param_scheduler决定是否使用检查点优化器参数调度器。如果设置为 True,优化器参数调度器将在保存到检查点并在恢复训练期间从检查点加载。
对于学习率衰减,原始的 Megatron pretrain 默认选项 lr_decay_style 为 linear,
意味着学习率将在 lr_decay_steps 内从初始学习率线性衰减到 min_lr。但是,在 verl 中,为了与 FSDP 的默认行为对齐,我们将默认的
lr_decay_style 设置为 constant,意味着学习率将在 warmup 阶段后保持恒定。
评论家模型
评论家模型的大部分参数与执行者模型相似。
奖励模型
reward_model:
enable: False
model:
input_tokenizer: ${actor_rollout_ref.model.path} # set this to null if the chat template is identical
path: ~/models/Anomy-RM-v0.1
external_lib: ${actor_rollout_ref.model.external_lib}
trust_remote_code: False
fsdp_config:
min_num_params: 0
param_offload: False
micro_batch_size_per_gpu: 16
max_length: null
reward_manager: naive
reward_model.enable:是否启用奖励模型。如果为 False,我们仅使用用户定义的奖励函数计算奖励。在 GSM8K 和数学示例中,我们禁用奖励模型。对于使用 full_hh_rlhf 的 RLHF 对齐示例,我们利用奖励模型来评估响应。如果为 False,以下参数无效。reward_model.modelinput_tokenizer:输入分词器。如果奖励模型的聊天模板与策略不同,我们需要首先解码为纯文本,然后应用 rm 的聊天模板。然后用 RM 评分。如果聊天模板一致,可以设置为 null。path:RM 的 HDFS 路径或本地路径。请注意,RM 仅支持 AutoModelForSequenceClassification。其他模型类型需要定义自己的 RewardModelWorker,并通过代码传递。trust_remote_code:是否启用加载远程代码模型。默认值为 False。
reward_model.reward_manager:奖励管理器。这定义了计算基于规则的奖励和处理不同奖励源的机制。默认值为naive。如果所有验证函数都是多进程安全的,则奖励管理器可以设置为prime以进行并行验证。
自定义奖励函数
custom_reward_function:
path: null
name: compute_score
custom_reward_function.path:包含自定义奖励函数的文件的路径。如果未指定,将使用预实现的奖励函数。custom_reward_function.name(可选):指定文件中的奖励函数名称。默认值为 ‘compute_score’。
算法
algorithm:
gamma: 1.0
lam: 1.0
adv_estimator: gae
use_kl_in_reward: False
kl_penalty: kl # how to estimate kl divergence
kl_ctrl:
type: fixed
kl_coef: 0.005
horizon: 10000
target_kl: 0.1
# Rollout Correction
rollout_correction:
rollout_is: null # IS weights: token/sequence/null
rollout_is_threshold: 2.0 # Upper threshold for IS weights
rollout_rs: null # Rejection sampling: token/sequence/geometric/null
rollout_rs_threshold: null # RS upper threshold
rollout_rs_threshold_lower: null # RS lower threshold
rollout_token_veto_threshold: null # Per-token veto (null to disable)
gamma:折扣因子。lam:在 GAE 估计器中偏差与方差之间的权衡。adv_estimator:支持gae、grpo、reinforce_plus_plus、reinforce_plus_plus_baseline、rloo、rloo_vectorized、grpo_vectorized。use_kl_in_reward:是否启用奖励内 KL 惩罚。默认值为 False。kl_penalty:支持kl、abs、mse、low_var_kl和full。如何计算执行者和参考策略之间的 KL 散度。具体选项请参考 core_algos.py 中的 kl_penalty() 。kl_ctrl:奖励内 kl_penalty 控制器的配置。kl_coef:奖励内 kl_penalty 的(初始)系数。默认值为 0.001。type:’fixed’ 用于 FixedKLController 和 ‘adaptive’ 用于 AdaptiveKLController。horizon和target_kl:请参阅 AdaptiveKLController 的源代码以了解详细信息。
rollout_correction:生成纠错配置(嵌套字典)。设置为null以禁用。当启用时,包含:rollout_is:IS 权重聚合级别:token、sequence或null以禁用 IS 权重。rollout_is_threshold:IS 重量的上限阈值(例如 2.0)。rollout_rs:拒绝采样模式:token、sequence、geometric或null以禁用 RS。rollout_rs_threshold:RS 上限阈值。rollout_rs_threshold_lower:RS 下限阈值(null = 自动倒数)。rollout_token_veto_threshold:灾难性异常值的每个标记否决阈值(null = 禁用)。
注意:生成纠错需要设置
actor_rollout_ref.rollout.calculate_log_probs=True。
训练器
trainer:
total_epochs: 30
project_name: verl_examples
experiment_name: gsm8k
logger: ['console', 'wandb']
log_val_generations: 0
nnodes: 1
n_gpus_per_node: 8
save_freq: -1
val_before_train: True
test_freq: 2
critic_warmup: 0
default_hdfs_dir: null # hdfs checkpoint path
default_local_dir: checkpoints/${trainer.project_name}/${trainer.experiment_name} # local checkpoint path
resume_mode: auto # or disable or resume_path if resume_from_path is set
resume_from_path: null
remove_previous_ckpt_in_save: False
del_local_ckpt_after_load: False
ray_wait_register_center_timeout: 300
trainer.total_epochs:训练的总轮次。trainer.project_name:用于 wandb、 swanlab、 mlflow。trainer.experiment_name:用于 wandb、 swanlab、 mlflow。trainer.logger:支持 console 和 wandb、 swanlab、 mlflow、 tensorboard、 trackio。trainer.log_val_generations:验证期间记录的生成数量(默认0)。trainer.nnodes:使用的节点数量。trainer.n_gpus_per_node:每个节点的 GPU 数量。trainer.save_freq:(按迭代)保存执行者和评论家模型检查点的频率。trainer.val_before_train:是否在训练前运行验证。trainer.test_freq:(按迭代)验证频率。trainer.critic_warmup:在实际策略学习前训练评论家模型的迭代次数。trainer.resume_mode:恢复训练的模式。支持disable、auto和resume_path。如果设置为auto作为默认,程序将自动从default_local_dir中的最新检查点恢复。如果设置为resume_path,程序将从resume_from_path中指定的路径恢复。trainer.resume_from_path:从其恢复训练的路径。仅在resume_mode设置为resume_path时有效。trainer.remove_previous_ckpt_in_save:是否在保存目录中移除之前的检查点。默认值为 False。trainer.del_local_ckpt_after_load:是否在加载后删除本地检查点。默认值为 False。trainer.ray_wait_register_center_timeout:等待 ray 注册中心就绪的超时时间。默认值为 300 秒。
此图说明了配置如何影响训练。
https://excalidraw.com/#json=pfhkRmiLm1jnnRli9VFhb,Ut4E8peALlgAUpr7E5pPCA
evaluation.yaml
数据
data:
path: /tmp/math_Qwen2-7B-Instruct.parquet
prompt_key: prompt
response_key: responses
data_source_key: data_source
reward_model_key: reward_model
data.path:数据集文件的路径(Parquet 格式)。data.prompt_key:数据集中包含提示的字段。默认值为 ‘prompt’。data.response_key:包含生成响应的键。这应该是一个字符串列表,表示响应。默认值为 ‘responses’。data.data_source_key:用于根据不同数据源分离指标计算,确保每个源的指标独立计算。data.reward_model_key:包含参考答案的键。这些参考答案通常作为任务的 ground truth 或测试用例。
自定义奖励函数
custom_reward_function:
path: null
name: compute_score
custom_reward_function.path:包含自定义奖励函数的文件的路径。如果未指定,将使用预实现的奖励函数。custom_reward_function.name(可选):指定文件中的奖励函数名称。默认值为 ‘compute_score’。
sft_trainer.yaml 用于 SFT FSDP 后端
优化器
optim:
optimizer: AdamW
optimizer_impl: torch.optim
lr: 1e-5
weight_decay: 0.01
lr_warmup_steps_ratio: 0.1
clip_grad: 1.0
lr_scheduler: cosine
override_optimizer_config: null
optimizer:优化器类名(例如"AdamW"、"AdamW8bit"、"_AdamW")。模块中的类名。optimizer_impl:从中导入优化器的模块路径(例如"torch.optim"、"torchao.optim"、"bitsandbytes.optim")。optim.lr:优化器的学习率。optim.weight_decay:优化器的权重衰减。optim.lr_warmup_steps_ratio:warmup 步骤占总训练步骤的比例。optim.clip_grad:梯度裁剪值。optim.lr_scheduler:学习率调度器类型。选项:cosine:带 warmup 的余弦学习率调度器(默认)。wsd:在 warmup 和 decay 阶段之间提供稳定学习率阶段的 Warmup-Stable-Decay 调度器。
override_optimizer_config:额外的优化器特定关键字参数字典。例如,要使用torchao.optim的_AdamW和 BF16 随机舍入:{"bf16_stochastic_round": true}
模型
模型的大部分参数与奖励模型相似。
model:
partial_pretrain: ~/models/gemma-1.1-7b-it
fsdp_config:
model_dtype: fp32
wrap_policy:
min_num_params: 0
cpu_offload: False
offload_params: False
external_lib: null
enable_gradient_checkpointing: False
trust_remote_code: False
lora_rank: 0
lora_alpha: 16
target_modules: all-linear
use_liger: False
partial_pretrain:预训练模型的 HDFS 路径或本地路径。fsdp_configmodel_dtype:模型参数类型,默认值为fp32。 支持:bf16、fp16、fp32。cpu_offload:是否为 FSDP 启用 CPU 卸载。如果为 True,则使用 offload_params 作为参数。offload_params:是否在计算未涉及时将参数卸载到 CPU。如果为 True,则梯度也将卸载到 CPU,这意味着优化器步骤在 CPU 上运行。
lora_rank:LoRA 模型的 rank,默认值为 0。如果lora_rank>0,我们将训练 LoRA 模块而不是调整完整模型。lora_alpha:LoRA 缩放的 alpha 参数,默认值为 16。target_modules:应用适配器的模块名称,默认值为all-linear。请参阅 peft 文档 以了解详情。use_liger:是否启用 Liger 内核,默认值为 False。如果为 True,我们将 Liger 内核应用到模型中(取决于 liger-kernel)。