veRL 配置参数详解
1. FSDP 后端的 PPO 训练配置
1.1 数据部分(Data)
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: nulldata.train_files:训练集的 parquet 文件。可以是单个文件或文件列表。所有文件将在训练开始前加载到内存,因此文件总大小不应超过 100GB。支持本地路径或 HDFS 路径。对于 HDFS 路径,系统提供工具将其下载至 DRAM 并转换为本地路径。data.val_files: Valuation 集的 parquet 文件,支持单文件或文件列表。data.train_max_samples:训练集大小。如果设置为 -1,则使用所有数据。data.val_max_samples: Valuation 集大小。如果设置为 -1,则使用所有数据。data.prompt_key:数据集中提示词所在字段的名称,默认值为prompt。data.max_prompt_length:最大提示词长度。所有提示词将进行左侧填充至该长度。如果提示词过长将会报错。默认值为 512。data.max_response_length:最大响应长度。在强化学习算法(如 PPO)中生成的响应长度上限。默认值为 512。data.train_batch_size:每次训练迭代采样的 batch 大小。这个参数对应 OpenRLHF 中的 rollout_batch_size, 每次采样的 Prompt 数量, 默认值为 1024。data.return_raw_input_ids:是否返回未添加对话模板的原始input_ids。当策略模型与奖励模型的模板不同,需设置为 True,并先解码后再加上 RM 模板。 默认值为 False。data.return_raw_chat:是否返回原始聊天内容。默认值为 False。data.return_full_prompt:是否返回应用 Chat 模板的提示词。默认值为 False。data.shuffle:是否在数据加载器中打乱数据顺序。默认值为 True。data.filter_overlong_prompts:是否过滤过长提示词。默认关闭。对于小规模数据集可启用。大规模数据集建议关闭,并设置truncation='left'。data.filter_overlong_prompts_workers:过滤过长提示词的进程数, 当数据集较大时,可设置为大于 1 的值以加速处理。默认值为 1。data.truncation:当input_ids或提示词长度超出最大值max_prompt_length时的处理方式。默认值为error, 即不允许超过最大提示词长度,否则会报错。可选值包括:error:报错。left:从左侧截断超长提示词。right:从右侧截断超长提示词。middle:从中间截断超长提示词。当选择中间部分时,逻辑会将允许的最大长度大致分成两半,并保留序列的开头和结尾,从而有效地丢弃中间部分。
data.image_key:多模态数据集中图像字段的名称,默认值为images。data.trust_remote_code:如果远程分词器包含 Python 文件,我们可以使用此字段来允许使用远程分词器。例如: moonshotai/Moonlight-16B-A3B-Instruct。
1.2 自定义数据集(Customized Dataset)
custom_cls:
path: null
name: nulldata.custom_cls.path:包含自定义数据集类的文件路径。如果未指定,则使用默认实现的数据集类。data.custom_cls.name:指定文件中的数据集类名。
1.3 Actor / Rollout / Reference 配置
1.3.1 通用设置
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: Falseactor_rollout_ref.hybrid_engine:是否启用混合引擎,目前仅支持混合引擎。actor_rollout_ref.model.path: Hugging Face 模型路径,可以是本地路径或 HDFS 路径。对于 HDFS 路径,我们提供了工具将其下载到 DRAM 并转换为本地路径。actor_rollout_ref.model.external_lib:需要导入的额外 Python 包,用于将模型或分词器注册到 Hugging Face 系统中。actor_rollout_ref.model.override_config:用于覆盖模型原始配置(如 dropout)。attn_implementation:指定使用的注意力实现。可选值包括:flash_attention_2、eager、sdpa。model_config:用于覆盖模型配置的字典
actor_rollout_ref.model.enable_gradient_checkpointing:是否开启 Actor Model 梯度 checkpoint。actor_rollout_ref.model.enable_activation_offload:是否为 actor 启用激活卸载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,模型将在 input_ids 和 response_ids 中移除填充值。这有助于提高模型运行效率。
1.3.2 Actor 模型设置
actor_rollout_ref:
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 Importance Sampling (corrects distribution mismatch between rollout and training)
rollout_is: False # Enable IS correction
rollout_is_threshold: null # Upper threshold for IS weights (null to disable)
rollout_is_threshold_lower: null # Lower threshold (null = auto 1/upper)
rollout_is_level: token # Aggregation: token/sequence/geometric
rollout_is_mode: truncate # Bounding: truncate/mask
rollout_is_veto_threshold: null # Catastrophic outlier threshold (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}strategy:并行策略, FSDP 或 Megatron,当前为fsdp。ppo_mini_batch_size: PPO 更新时, Rollout 采样的数据被分割成多个子批量,批量大小为ppo_mini_batch_size。ppo_mini_batch_size是跨所有工作进程/GPU 的全局数量。ppo_micro_batch_size:[将被废弃,使用ppo_micro_batch_size_per_gpu] 类似于梯度累积,每个前向传播的micro_batch_size_per_gpu,以速度换取 GPU 内存。该值表示全局视图。ppo_micro_batch_size_per_gpu:类似于梯度累积,每个前向传播的micro_batch_size_per_gpu,以速度换取 GPU 内存。该值表示每个 GPU 的局部数量。grad_clip: Actor 模型的梯度裁剪阈值。默认值为 1.0。clip_ratio: PPO 中的裁剪比例。默认值为 0.2。entropy_coeff:计算 PPO 损失时熵的权重。默认值为 0.0。use_kl_loss:是否在 Actor 中使用 KL 损失。当启用时,我们不在奖励函数中应用 KL。默认值为 False。kl_loss_coef: KL 损失系数,默认为 0.001。kl_loss_type: KL 损失类型,可选项包括kl、abs、mse、low_var_kl、full。用于计算 Actor 和参考策略之间的 KL 散度。具体选项请参考core_algos.py中的kl_penalty()。use_torch_compile:是否启用 torch compile。ppo_epochs:对一组采样数据进行 PPO 更新的 Epoch 数。默认值为 1。data_loader_seed: 从 torch 2.6.0 开始, Megatron 后端可能会在 CP 等级之间生成错误的种子,并导致这些等级之间的数据对齐错误,因此我们需要手动设置种子以避免挂起问题。如果actor_rollout_ref.actor.shuffle不为 null,则必须设置此值。shuffle:是否在多个 epoch 中打乱数据顺序。ulysses_sequence_parallel_size:序列并行大小。optim: Actor 的优化器参数设置,包括学习率、warmup 等。fsdp_config: FSDP 相关配置,包括参数 offload、optimizer offload、wrap_policy 等。checkpoint: Actor 的 checkpoint 配置。save_contents: checkpoint 中保存的内容。默认情况下,我们在 checkpoint 中保存模型、优化器和额外信息。额外信息包括当前的 Rng 状态、FSDP 支持的 lr_scheduler, Megatron 的 opt_param_scheduler 即将推出。我们默认不在 checkpoint 中存储 hf_model,但我们在scripts/model_merge.py中提供了一个工具,用于将 checkpoint 格式转换为 hf 格式。load_contents: checkpoint 中要加载的内容,您可以指定不同的检查点加载内容。默认情况下,它与 save_checkpoint 相同。
1.3.3 Reference 模型设置
actor_rollout_ref:
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} #当actor.use_kl_loss或algorithm.use_kl_in_reward为 True 时,将启用参考模型。
ref: FSDP 配置与 Actor 相同。对于大于 7B 的模型,建议默认为参考模型启用 offload。ref.log_prob_micro_batch_size: [将被废弃,使用log_prob_micro_batch_size_per_gpu] 计算ref_log_prob时一个前向传播的批量大小。该值表示全局数量。ref.log_prob_micro_batch_size_per_gpu: 计算ref_log_prob时一个前向传播的批量大小。该值表示每个 GPU 的局部数量。
1.3.4 Rollout 模型设置
actor_rollout_ref:
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: nullrollout.name:支持hf、vllm、sglang。Rollout (自回归)参数。键应与 vLLM 的
SamplingParams中的属性名一致。temperature,top_k,top_p等:采样参数。dtype: Rollout 模型参数类型。应与 FSDP/Megatron 后端中的 Actor 模型参数类型一致。gpu_memory_utilization: 使用 vLLM 时,在其他模型初始化后,分配给 kv 缓存的 GPU 内存比例。tensor_model_parallel_size: Rollout 的 TP 大小,仅对 vLLM 有效。
actor_rollout_ref.ref.log_prob_micro_batch_size: [将被废弃,使用log_prob_micro_batch_size_per_gpu] 重新计算log_prob时一个前向传播的批量大小。该值表示全局数量。log_prob_micro_batch_size_per_gpu: 每个 GPU 的微批量大小(一个前向传播的批量大小),用于重新计算log_prob。该值表示每个 GPU 的局部数量。do_sample: 是否进行采样。如果设置为 False,则 rollout 模型将执行贪婪采样。在 Evaluation 阶段禁用do_sample。actor_rollout_ref.rollout.val_kwargs: 评估时的采样参数。top_k: Top-k 采样参数,默认值为-1 (vLLM)或 0 (HF)。top_p: Top-p 采样参数,默认值为 1.0 (禁用)。temperature: 采样温度,默认值为 0 (确定性贪婪)。n: 评估时生成的响应数量,默认值为 1。do_sample: 是否在评估时使用采样。默认值为 False
actor_rollout_ref.rollout.engine_kwargs: 推理引擎参数。actor_rollout_ref.rollout.engine_kwargs.vllm: 额外的 vLLM 引擎参数,请参阅 vLLM 官方文档以获取详细信息。actor_rollout_ref.rollout.engine_kwargs.sglang: 额外的 SGLang 引擎参数,请参阅 SGLang 官方文档以获取详细信息。actor_rollout_ref.rollout.ignore_eos: 是否忽略 EOS 标记并继续生成标记,直到生成 EOS 标记。actor_rollout_ref.rollout.free_cache_engine: 是否在生成阶段卸载 KV 缓存。默认为 True。当设置为 True 时,对于 vLLM v0.5.4 和 v0.6.3,需要禁用 CUDAGraph 的使用(将 enforce_eager 设置为 True)。actor_rollout_ref.rollout.enforce_eager: 是否在 vLLM 生成中使用 CUDAGraph。默认设置为 True 以禁用 CUDAGraph。actor_rollout_ref.rollout.load_format: 用于将 Actor 模型权重加载到 rollout 模型的权重加载器。auto: 使用 Megatron 权重加载器。megatron: 使用 Megatron 权重加载器。与 Megatron 后端一起部署。输入模型的state_dict()已经沿 TP 维度分割,并且已经沿 PP 维度聚集。此权重加载器要求 rollout 模型和 Actor 模型的参数形状和名称必须一致。dtensor: 使用 Hugging Face 权重加载器时的默认解决方案。与 FSDP 后端一起部署,state_dict_type为StateDictType.SHARDED_STATE_DICT。推荐使用此权重加载器。hf: 使用 Hugging Face 权重加载器。与 FSDP 后端一起部署,state_dict_type为StateDictType.FULL_STATE_DICT。此解决方案不需要为 vLLM 中实现的每个模型重写权重加载器,但会导致更大的峰值内存使用。dummy_hf,dummy_megatron,dummy_dtensor: 随机初始化。
注意:在此配置字段中,用户只需从dummy_megatron、dummy_dtensor、dummy_hf中选择用于 rollout 初始化,我们的混合引擎将在 Actor /rollout 权重同步期间选择对应的权重加载器(即megatron、dtensor、hf)。
1.4 Megatron Optimize
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 scheduler1.5 Critic 模型
Critic 模型配置大致与 Actor 模型相同。
1.6 奖励模型(Reward Model)
reward_model:
enable: False
model:
input_tokenizer: ${actor_rollout_ref.model.path}
path: ~/models/Anomy-RM-v0.1
external_lib: ${actor_rollout_ref.model.external_lib}
fsdp_config:
min_num_params: 0
param_offload: False
micro_batch_size_per_gpu: 16
max_length: null
reward_manager: naivereward_model.enable: 是否启用奖励模型。如果为 False,则仅使用用户定义的奖励函数计算奖励。在 GSM8K 和数学示例中,我们禁用了奖励模型。对于使用full_hh_rlhf的 RLHF 对齐示例,我们使用奖励模型来评估响应。如果为 False,则以下参数无效。reward_model.model:input_tokenizer: 输入分词器。如果奖励模型的聊天模板与策略不一致,则需要先解码为纯文本,然后应用奖励模型的聊天模板,再使用 RM 进行评分。如果聊天模板一致,则可以设置为 null。path: RM 的 HDFS 路径或本地路径。注意, RM 仅支持AutoModelForSequenceClassification。其他模型类型需要定义自己的RewardModelWorker并通过代码传递。
reward_model.reward_manager: 奖励管理器。定义计算基于规则的奖励和处理不同奖励源的机制。默认为naive。如果所有验证函数都是多进程安全的,则可以将奖励管理器设置为prime以进行并行验证。
1.7 自定义奖励函数(Customized Reward Function)
custom_reward_function:
path: null
name: compute_scorecustom_reward_function.path: 包含自定义奖励函数的文件路径。如果未指定,则使用预实现的奖励函数。custom_reward_function.name(可选):指定文件中的奖励函数名称。默认为compute_score。
1.8 算法配置 (Algorithm)
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 Importance Sampling
rollout_is: False
rollout_is_threshold: null
rollout_is_threshold_lower: null
rollout_is_level: token
rollout_is_mode: truncate
rollout_is_veto_threshold: null # Disabled by defaultgamma: 折扣因子(Discount Factor)。在强化学习中用于未来奖励的衰减系数,值越小越短视,值越大越看重长期回报。lam: GAE (广义优势估计)中的权衡参数,用于在偏差和方差之间取得平衡。adv_estimator: 优势估计器的类型,支持 GAE、GRPO、reinforce_plus_plus、reinforce_plus_plus_baseline、rloo。默认为gae(广义优势估计)。可选项还包括reward(仅使用奖励)、none(不使用优势估计)。use_kl_in_reward: 是否在奖励中加入 KL 惩罚项。默认为 False。若设置为 True,则 KL 散度的惩罚项将用于奖励计算中。kl_penalty: 用于估计 KL 散度的方法。可选项包括kl、abs、mse、low_var_kl和full。具体含义可参考core_algos.py中的kl_penalty()实现。kl_ctrl: 控制 KL 惩罚项的动态调整方式。type: 调整方式类型,目前支持fixed。kl_coef: KL 惩罚系数(常数类型下为固定值)。horizon: 控制 KL 目标的周期长度。target_kl: 目标 KL 散度。可在某些算法中用于动态调整 KL 惩罚力度。
rollout_is: 是否使用 Rollout Importance Sampling (RIS)。默认为 False。rollout_is_threshold: RIS 权重的上限阈值。默认为 null,表示不启用上限。rollout_is_threshold_lower: RIS 权重的下限阈值。默rollout_is_level: RIS 权重的聚合级别。可选项包括token(按标记级别)、sequence(按序列级别)和geometric(几何平均)。rollout_is_mode: RIS 权重的约束方式。可选项包括truncate(截断)、veto(vetoes)和none(无)。rollout_is_veto_threshold: RIS 权重的 veto 阈值。默认为 null,表示不启用 veto。
1.9 训练器配置 (Trainer)
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: 300total_epochs: 训练的轮数。project_name: 用于 wandb、swanlab、mlflow。experiment_name: 用于 wandb、swanlab、mlflow。logger: 支持 console、wandb、swanlab、mlflow、tensorboard。log_val_generations: Evaluation 期间记录的生成数量(默认为 0)。nnodes: 训练中使用的节点数。n_gpus_per_node: 每个节点的 GPU 数量。save_freq: 保存 Actor 和 Critic 模型 checkpoint 的频率(按迭代次数)。val_before_train: 是否在训练前运行 Evaluation。test_freq: Evaluation 的频率(按迭代次数)。critic_warmup: 在实际策略学习之前训练 Critic 模型的迭代次数。default_local_dir: 本地 checkpoint 保存路径。resume_mode: 恢复训练的模式。支持 disable、auto 和 resume_path。如果设置为 auto (默认),程序将自动从default_hdfs_dir中的最新 checkpoint 恢复。如果设置为 resume_path,则程序将从resume_from_path中指定的路径恢复。resume_from_path: 恢复训练的路径。仅在resume_mode设置为 resume_path 时有效。remove_previous_ckpt_in_save: 是否在保存目录中删除之前的 checkpoint,默认为 False。del_local_ckpt_after_load: 是否在加载后删除本地 checkpoint,默认为 False。ray_wait_register_center_timeout: 等待 Ray 注册中心准备就绪的超时时间,默认为 300 秒。
2. 评估配置(evaluation.YAML)
2.1 数据配置
data:
path: /tmp/math_Qwen2-7B-Instruct.parquet
prompt_key: prompt
response_key: responses
data_source_key: data_source
reward_model_key: reward_modeldata.path: 数据集文件路径(Parquet 格式)。data.prompt_key: 数据集中提示字段的名称,默认为prompt。data.response_key: 包含生成响应的键。这应该是一个字符串列表,表示响应。默认为responses。data.data_source_key: 用于分离不同数据源的指标计算,确保每个数据源的指标独立计算。data.reward_model_key: 包含参考答案的键。这些参考答案通常作为任务的基准或测试用例。
2.2 自定义奖励函数
custom_reward_function:
path: null
name: compute_scorecustom_reward_function.path: 包含自定义奖励函数的文件路径。如果未指定,则使用预实现的奖励函数。custom_reward_function.name(可选):指定文件中的奖励函数名称。默认为compute_score。
3. 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: nulloptim.optimizer: 优化器类型。支持 AdamW、Adam、SGD 等。optim.optimizer_impl: 优化器的实现类型。 支持 torch.optim 和 torchao.optim, bitsandbytes.optim.optim.lr: 优化器的学习率。optim.weight_decay: 优化器的权重衰减。optim.warmup_steps_ratio: 预热步骤与总训练步骤的比例。optim.clip_grad: 梯度裁剪值。optim.lr_scheduler: 学习率调度器类型。选项包括:cosine: 带有预热的余弦学习率调度器(默认)。wsd: 带有预热的余弦学习率调度器。
Model 配置:
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: Falsemodel.partial_pretrain: 预训练模型路径。支持本地路径和 HDFS 路径。对于 HDFS 路径,框架提供工具支持下载到内存并自动转换为本地路径。model.fsdp_config: FSDP 配置。model.fsdp_config.model_dtype: 模型数据类型。支持 FP32 和 BF16。- cpu_offload: False
- offload_params: False
lora: LoRA 配置。lora_rank: LoRA 秩。如果设置为 0,则不使用 LoRA。lora_alpha: LoRA 缩放系数。target_modules: 目标模块。指定要应用 LoRA 的模块。支持all-linear(所有线性层)和逗号分隔的模块名称列表。use_liger: 是否使用 LIGER 进行 LoRA 训练。
4. 其他补充说明
- 所有路径字段(如模型路径、数据路径)均支持本地路径和 HDFS 路径。对于 HDFS 路径,框架提供工具支持下载到内存并自动转换为本地路径。
- 大部分配置项使用默认值即可满足常规需求,若需要更细致的控制,可以参考源代码中各配置项的具体使用方式。
- 在多卡大模型训练场景中,合理设置
fsdp_config与offload选项有助于优化显存使用与训练性能。 - 所有带有
*_micro_batch_size和*_per_gpu后缀的字段建议设置为每张 GPU 上可承载的最小 batch size,以优化显存与吞吐。
5. 参数速览
6. Batch Size
| 参数名称 | 详细解释 |
|---|---|
data.train_batch_size | 作用:定义了单次训练发送给 Rollout Engine 的样本数量,也即这是在每个 PPO 迭代开始时,从训练数据集中采样的提示 (Prompt)数量。 详细解释:这个值是 RL 训练中的基本样本数量。例如,设置为 1024 意味着在一次迭代中会: 1. 从数据集中随机抽取 1024 个 prompt。 2. 将这 1024 个 prompt 发送给当前的 Rollout Engine 中,从而得到 1024 组完整的 trajectories (prompt, response)。 3. 接下来,这 1024 个 trajectories 进行经验计算(make experience),后续用于 Actor 和 Critic 模型的更新。 影响与权衡:影响总共训练的样本量。 |
data.val_batch_size (Deprecated) | 作用:在 Validation 阶段使用的批次大小。 详细解释:这与 train_batch_size 类似,但仅用于评估模型性能,不参与训练。如果设置为 null,会使用验证集的大小作为默认值。Note: 已经 deprecated,推荐设置为 null。此时,整个 validation dataset 一次性发给 SGLang engines,自行进行内存管理。 |
actor_rollout_ref.actor.ppo_mini_batch_size critic.ppo_mini_batch_size | 作用:定义了 PPO 训练更新中的 mini-batch 大小。 详细解释: data.train_batch_size 收集到的全部经验数据将被分割成多个 mini-batch,每块的大小就是 ppo_mini_batch_size。模型每处理完一个 mini-batch,才会进行一次参数更新。例如,如果 train_batch_size = 1024,ppo_mini_batch_size = 256,那么在一个 PPO Epoch 中,模型会进行 1024 / 256 = 4 次参数更新。影响与权衡:增大 mini-batch,单次更新的梯度更稳定,但更新频率更低,更新次数减少。 |
actor_rollout_ref.actor.ppo_micro_batch_size_per_gpu critic.ppo_micro_batch_size_per_gpu | 作用:定义了在单个 GPU 上进行一次 forward/backward 的数据大小。 详细解释:这是实现梯度累积的核心参数。mini-batch 会被再次切分为若干个 micro-batch。例如,在单卡上, ppo_mini_batch_size = 256,ppo_micro_batch_size_per_gpu = 32,那么梯度累积的步数就是 256 / 32 = 8。这意味着模型会运行 8 次 forward 得到 loss,然后 backward 的到 gradient。每次处理 32 个样本,直到累积完整个 mini-batch 计算出的梯度。此时,使用累积的总梯度,对模型参数进行一次更新(optimizer.step())。这个值必须根据显存大小来严格调整,是防止 OOM 的关键。影响与权衡:增大此值,减少了梯度累积的次数,可以提高训练的吞吐量,增大显存消耗。 |
actor_rollout_ref.actor.ppo_micro_batch_size critic.ppo_micro_batch_size(Deprecated) | 作用:已弃用,被 per_gpu 版本取代,因为它能更好地适应分布式训练环境。 |
7. Dynamic Batch Size
当样本长度差异很大时,按样本数量划分批次可能导致不同批次的计算量极不均衡,而基于 token 总数来控制 batch size 是一种平衡每个 batch 训练时间的方案。
| 参数名称 | 详细解释 |
|---|---|
actor_rollout_ref.actor.ppo_max_token_len_per_gpu critic.ppo_max_token_len_per_gpu | 作用:定义了一个 PPO micro batch size 中,单个 GPU 能处理的最大 Token 总数。 详细解释:这是 ppo_micro_batch_size_per_gpu 的替代方案,与 use_dynamic_bsz 配合使用。系统会自动打包样本,直到总 Token 量(prompt_len + response_len)接近这个阈值,形成一个动态的 micro batch size,从而稳定计算效率;无论长短样本,每个微批次的计算量都相对恒定。例如,设置为 actor_rollout_ref.actor.ppo_max_token_len_per_gpu = 16384,系统可能会打包 16 个长度为 1024 的样本(16 * 1024 = 16384)或者 64 个长度为 256 的样本(64 * 256 = 16384)。影响与权衡:通常比固定样本数的微批次效率更高,能更好地利用计算资源,减少 GPU 不稳定性。通常设置为 n * ({data.max_prompt_length} + {data.max_response_length}) |
reward_model.forward_max_token_len_per_gpu critic.forward_max_token_len_per_gpu actor_rollout_ref.ref.log_prob_max_token_len_per_gpu | 作用:只进行 forward 计算的 Model 的一个 micro-batch 的 token 最大数量。 详细解释:一些模型(Reward Model, Critic 求 value, Reference Model 求 log probs)在 make experience 阶段只有 forward 计算,此时 rollout engine 已经 offload 了,而 training engine 还没启动,显存占用是很少的。因此,可以为它们设置一个更大的 batch size 以加速计算。这些参数同样是 use_dynamic_bsz 的一部分,用于优化这些特定任务的执行效率。 |
critic.forward_micro_batch_size_per_gpu reward_model.micro_batch_size_per_gpu actor_rollout_ref.ref.log_prob_micro_batch_size_per_gpu | 作用:同样为只进行 forward 计算的 model 设置 micro-batch size。 详细解释:同上一行参数。 |
actor_rollout_ref.actor.use_dynamic_bsz critic.use_dynamic_bsz reward_model.use_dynamic_bsz | 作用:是否启用 Dynamic Batch Size。 详细解释:当此项为 True 时,系统会忽略基于样本数的 micro_batch_size_per_gpu 参数,转而使用基于 Token 数的 max_token_len_per_gpu 参数来构建 batch。 |
trainer.balance_batch | 作用:是否在分布式训练的各个 DP rank 间平衡 batch size。 详细解释:在 single controller 上将 data 重新排序使得每个 DP rank 获得相似数目的 token。 |
8. Rollout Sampling Parameters
| 参数名称 | 作用与解释 |
|---|---|
actor_rollout_ref.rollout.temperature | temperature 值越高,概率分布越平滑,生成结果更多样、更随机;值越低,分布越尖锐,生成结果更倾向于高概率词元,更确定、更保守。temperature=0 通常等同于 Greedy Decoding。 |
actor_rollout_ref.rollout.top_k | 在每一步生成时,只考虑概率最高的 K 个 token 进行采样。例如,top_k=50 表示只从概率前 50 的 token 中选择。- 禁用时:在 Hugging Face 中设置为 0 或 None,在 SGLang 中设置为 -1(此时从整个词汇表采样)。 |
actor_rollout_ref.rollout.top_p | 从概率最高的 token 开始累加,直到它们的总概率达到 P,然后从这个 nucleus token 集合中进行采样。是一种动态选择采样范围的方法。top_p=1.0 表示不限制。 |
actor_rollout_ref.rollout.use_fire_sampling | 是否使用 Fire Sampling,来自字节的论文。 |
actor_rollout_ref.rollout.n | 为每个 prompt 生成的 response 数量,也即 GRPO 中的 group size。 |
actor_rollout_ref.rollout.ignore_eos | 是否忽略 EOS (End-of-Sentence) 标记。如果为 True,即使模型生成了 EOS 标记,也会继续生成直到达到 max_response_length。 |
9. Performance and Resource Management
| 参数名称 | 作用与解释 |
|---|---|
actor_rollout_ref.rollout.prompt_length | 最大的 prompt 长度,过长则被截断。 |
actor_rollout_ref.rollout.response_length | 最大的 response 长度,到达最大长度时 SGLang engine 会直接返回。 |
actor_rollout_ref.rollout.dtype | 模型数据类型。例如 bfloat16, float16,需要与训练阶段的模型类型对齐,否则更新模型参数的时候还需要做量化。 |
actor_rollout_ref.rollout.gpu_memory_utilization | SGLang 中模型参数和 KV Cache 占显存的比例,如果使用 0.4.8.post1 以上版本 SGLang,则可以设置到 0.85,使用以下版本的 SGLang 则需要设置到 0.5 左右。 |
actor_rollout_ref.rollout.free_cache_engine | Rollout 后是否释放引擎缓存; SGLang 中启用此选项将触发 flush_cache() 操作:清空 KV Cache pool,将所有 slots 标记为可用。通过释放 KV Cache 的逻辑占用,但是不释放物理显存。为什么需要 flush KV Cache 可以参考此处。 |
actor_rollout_ref.rollout.load_format | 模型权重加载模式。例如 dummy_dtensor(随机初始化权重,用于快速调试)、hf、safetensors(推荐,安全且高效)。 |
actor_rollout_ref.rollout.tensor_model_parallel_size (TP_SIZE) | 张量并行大小,表示用多少个 GPU 来共同运行一个 SGLang engine。例如,TP_SIZE=4 表示将一个大模型的权重切成 4 份,由 4 个 GPU 协同完成推理。 |
actor_rollout_ref.rollout.max_model_len | 模型能处理的最大总长度(prompt + response);如果未设置,通常由模型配置决定。 |
actor_rollout_ref.rollout.max_num_seqs | 引擎能同时处理的最大请求量,或者说同时推理的最多 prompts 数量。 |
actor_rollout_ref.rollout.enable_chunked_prefill | 是否启用 Chunked Prefill,对于非常长的 Prompt,可以将其分块处理,减少显存峰值,但是降低吞吐量。 |
actor_rollout_ref.rollout.disable_log_stats | 是否禁用推理引擎的统计日志,以减少控制台输出。 |
9.1 SGLang 配置
| 参数名称 | 作用与解释 |
|---|---|
actor_rollout_ref.rollout.engine_kwargs.sglang.attention_backend | SGLang 使用的注意力后端。可以选择如 flashinfer, triton, flashmla, null 几种实现,以适应自身显卡。 |
9.2 multi-turn tool calling
这部分参数主要用于需要多轮交互的场景,如工具调用、连续对话等,由 SGLang Engine 支持。
| 参数名称 | 作用与解释 |
|---|---|
actor_rollout_ref.rollout.multi_turn.enable | 是否启用多轮对话模式。 |
actor_rollout_ref.rollout.multi_turn.max_turns | 最多进行 tool calling 的轮次, null 时会默认设置成 max_model_len // 3 来避免无限对话。 |
actor_rollout_ref.rollout.multi_turn.tool_config_path | 工具配置文件路径,定义模型可以调用的外部工具。 |
actor_rollout_ref.rollout.multi_turn.completion_callback | 自定义 callback function,在每轮生成后可以执行自定义逻辑。 |
actor_rollout_ref.rollout.multi_turn.use_inference_chat_template | 是否使用模型在 inference 阶段的 chat template。True 表示遵循 inference 阶段的模板格式。False 表示使用预训练中的模板,可能包含额外思考过程的完整 Token 序列。对于任何模型,一定要保证在 post training 和后续 inference 进行测试的阶段采用一致的模板。 |
actor_rollout_ref.rollout.multi_turn.enable_tokenization_sanity_check | 是否进行 tokenization 安全性检查,检查逐轮 tokenize 的结果与一次 tokenize 整个 chat history 的结果一致。 |
9.3 验证阶段配置
| 参数名称 | 作用与解释 |
|---|---|
actor_rollout_ref.rollout.val_kwargs.* | 验证阶段的 sampling parameters,这允许我们在 post training 和 validation 时使用不同的 sampling parameters。例如,验证时通常设置 temperature=0 和 do_sample=False 来进行贪心解码,以获得更稳定的评估结果。 |
9.4 Dataset
| 参数名称 | 作用与解释 |
|---|---|
data.tokenizer | Tokenizer 的类或路径。如果为 null,将从模型中自动推断。 |
data.use_shm | 是否使用共享内存(shared memory)来加载数据。 |
data.train_files | 训练集 parquet 文件。可以是列表或单个文件;路径可以是本地路径或 HDFS 路径。 |
data.val_files | 验证集 parquet 文件。可以是列表或单个文件。 |
data.prompt_key | 数据集中 prompt 的字段。默认为 prompt。 |
data.reward_fn_key | 用于选择奖励函数(如果每个样本使用不同奖励函数)的字段。 |
data.max_prompt_length | 最大提示长度。所有提示将向左填充到此长度。 |
data.return_raw_input_ids | 是否返回未添加聊天模板的原始 input_ids;当 Reward Model 的 chat template 与 Policy Model 不同时使用。 |
data.return_raw_chat | 是否返回未应用聊天模板的原始 response。 |
data.return_full_prompt | 是否返回带有聊天模板的完整 prompt。 |
data.shuffle | 是否在 DataLoader 中打乱数据。 |
data.validation_shuffle | 是否打乱验证集。 |
data.filter_overlong_prompts | 是否过滤超长的 prompt。 |
data.filter_overlong_prompts_workers | 过滤超长 prompt 的工作进程数。对于大型数据集,使用多进程加速。默认为 1。 |
data.truncation | 如果 input_ids 或 prompt 超过最大长度,则进行截断。 |
data.image_key | 多模态数据集中表示图像的字段。默认为 images。 |
data.video_key | 多模态数据集中表示视频的字段。 |
data.trust_remote_code | 是否信任本地的的 Hugging Face cache;注意,这个 remote 是相对 Hugging Face 而言的,所以这个参数考虑的是“是否信任本地”。 |
data.custom_cls.path | 包含自定义数据集类的文件路径。如果未指定,将使用预实现的默认数据集。 |
data.custom_cls.name | 指定文件中的数据集类名。 |
9.5 Actor, Rollout & Reference Worker 配置
Critic 和 Actor 的参数是非常一致的,不再赘述。
| 参数名称 | 描述 |
|---|---|
actor_rollout_ref.hybrid_engine | 目前只支持 hybird engine,将 actor 和 rollout 模型放在同一资源组上。 |
actor_rollout_ref.model.path | Hugging Face 模型路径。可以是本地路径或 HDFS 路径。 |
actor_rollout_ref.model.use_shm | 是否使用共享内存(SHM)来加速模型权重的加载。 |
actor_rollout_ref.model.external_lib | 用于注册 Hugging Face 模型/分词器的额外 Python 包。 |
actor_rollout_ref.model.override_config | 用于覆盖模型原始配置,主要用于 dropout。 |
actor_rollout_ref.model.enable_gradient_checkpointing | actor 训练过程是否重算梯度,以时间换空间。 |
actor_rollout_ref.model.enable_activation_offload | actor 训练是否将 activation offload 到 CPU。 |
actor_rollout_ref.model.use_remove_padding | 训练期间是否移除输入中的 padding 元。 |
actor_rollout_ref.model.use_liger | 是否使用 Liger kernel 进行线性层融合。 |
actor_rollout_ref.model.use_fused_kernels | 是否使用自定义 fused kernel (如 FlashAttention, fused MLP)。 |
actor_rollout_ref.model.fused_kernel_options.impl_backend | 融合核的实现后端, triton 或 torch。需要和 use_fused_kernels 配合使用 |
actor_rollout_ref.model.trust_remote_code | 是否信任本地的的 Hugging Face cache;注意,这个 remote 是相对 Hugging Face 而言的,所以这个参数考虑的是“是否信任本地”。 |
actor_rollout_ref.actor.strategy | 训练 backend FSDP, fsdp2 或 Megatron。 |
actor_rollout_ref.actor.grad_clip | Actor 更新的梯度裁剪。 |
actor_rollout_ref.actor.clip_ratio | PPO 裁剪比率。 |
actor_rollout_ref.actor.clip_ratio_low | 非对称裁剪的下界(用于 dual-clip PPO)。 |
actor_rollout_ref.actor.clip_ratio_high | 非对称裁剪的上界(用于 dual-clip PPO)。 |
actor_rollout_ref.actor.clip_ratio_c | Dual-clip PPO 中的常数 C;当优势 < -C 时进行裁剪。 |
actor_rollout_ref.actor.loss_agg_mode | 损失聚合模式:token-mean, seq-mean-token-sum, 或 seq-mean-token-mean。 |
actor_rollout_ref.actor.entropy_coeff | PPO 损失中的熵正则化系数。 |
actor_rollout_ref.actor.use_kl_loss | 是否使用 KL 损失代替 KL 奖励惩罚。对于 GRPO 为 True。 |
actor_rollout_ref.actor.use_torch_compile | 是否使用 torch.compile()。 |
actor_rollout_ref.actor.kl_loss_coef | 启用 use_kl_loss 时的 KL 损失系数,用于 GRPO。 |
actor_rollout_ref.actor.kl_loss_type | KL 散度损失的类型。选项:kl, abs, mse, low_var_kl, full。 |
actor_rollout_ref.actor.ppo_epochs | PPO 轮数。 |
actor_rollout_ref.actor.shuffle | 打乱训练数据。 |
actor_rollout_ref.actor.ulysses_sequence_parallel_size | Ulysses 类的 sequence parallel 大小。 |
actor_rollout_ref.actor.entropy_from_logits_with_chunking | 通过分块计算熵以减少显存峰值。 |
actor_rollout_ref.actor.entropy_checkpointing | 是否将 entropy 通过 checkpoint 存下来。 |
actor_rollout_ref.actor.checkpoint.save_contents | 保存的检查点中包含的内容。 |
actor_rollout_ref.actor.checkpoint.load_contents | 从检查点加载时指定的内容。 |
actor_rollout_ref.actor.optim.lr | 学习率。 |
actor_rollout_ref.actor.optim.lr_warmup_steps | 预热步数;负值则由 lr_warmup_steps_ratio 决定。 |
actor_rollout_ref.actor.optim.lr_warmup_steps_ratio | 预热步数比例(当 lr_warmup_steps 为负时使用)。 |
actor_rollout_ref.actor.optim.min_lr_ratio | 余弦调度器的最小学习率比例。 |
actor_rollout_ref.actor.optim.num_cycles | 学习率调度中的余弦周期数。 |
actor_rollout_ref.actor.optim.warmup_style | 学习率预热风格:constant 或 cosine。 |
actor_rollout_ref.actor.optim.total_training_steps | 总训练步数。 |
actor_rollout_ref.actor.optim.weight_decay | 权重衰减系数,控制训练过程中对权重施加的 L2 正则化的强度。 |
actor_rollout_ref.actor.fsdp_config.wrap_policy.min_num_params | 触发 FSDP 包装一个层的最小参数数量。 |
actor_rollout_ref.actor.fsdp_config.param_offload | 是否将模型参数卸载到 CPU (以速度换内存)。 |
actor_rollout_ref.actor.fsdp_config.optimizer_offload | 是否将优化器状态卸载到 CPU。 |
actor_rollout_ref.actor.fsdp_config.offload_policy | 仅用于 FSDP2:训练期间卸载参数/梯度/优化器。 |
actor_rollout_ref.actor.fsdp_config.reshard_after_forward | 仅用于 FSDP2:前向传播后重新分片以减少内存占用。 |
actor_rollout_ref.actor.fsdp_config.fsdp_size | 每个 FSDP 分片组中的 GPU 数量;-1 表示自动。 |
actor_rollout_ref.actor.fsdp_config.forward_prefetch | 仅用于 FSDP1:在前向计算完成前预取下一次前向传播的 all-gather。 |
actor_rollout_ref.actor.profiler.discrete | True 表示每个任务有自己的数据库, False 表示所有任务共享一个。 |
actor_rollout_ref.actor.profiler.all_ranks | 是否对所有 rank 进行性能分析。 |
actor_rollout_ref.actor.profiler.ranks | 将被分析的 rank。null 或 [0,1,...]。 |
actor_rollout_ref.ref.strategy | Reference 模型的 FSDP 配置,与 actor 相同。 |
actor_rollout_ref.ref.fsdp_config.param_offload | FSDP 中是否卸载参数。 |
actor_rollout_ref.ref.fsdp_config.reshard_after_forward | 仅用于 FSDP2:是否在模型前向传播后重新分片以节省内存。 |
actor_rollout_ref.ref.fsdp_config.forward_prefetch | 仅用于 FSDP1:在前向计算完成前预取下一次前向传播的 all-gather。 |
actor_rollout_ref.ref.fsdp_config.wrap_policy.min_num_params | FSDP 包装模块中的最小参数量。 |
actor_rollout_ref.ref.profiler.discrete | True 表示每个任务有自己的数据库, False 表示所有任务共享一个。 |
actor_rollout_ref.ref.profiler.all_ranks | 是否对所有 rank 进行性能分析。 |
actor_rollout_ref.ref.profiler.ranks | 将被分析的 rank。null 或 [0,1,...]。 |
9.6 Reward Model
| 参数名称 | 描述 |
|---|---|
reward_model.enable | 是否启用奖励模型。如果为 False,则仅使用用户定义的奖励函数计算奖励。 |
reward_model.strategy | FSDP 策略:fsdp 或 fsdp2或megatron。 |
reward_model.model.input_tokenizer | 输入分词器。如果奖励模型的聊天模板与策略不一致,则需要此项。 |
reward_model.model.path | RM 的 HDFS 路径或本地路径。仅支持 AutoModelForSequenceClassification。 |
reward_model.model.use_shm | 是否使用共享内存加载模型。 |
reward_model.model.external_lib | 外部模型实现(可选)。 |
reward_model.model.use_remove_padding | 使用移除填充优化(节省计算)。 |
reward_model.model.use_fused_kernels | 是否使用融合的奖励核以加速。 |
reward_model.model.trust_remote_code | 是否允许加载远程代码模型,默认为 False。 |
reward_model.model.fsdp_config.wrap_policy.min_num_params | 触发 FSDP 包装的最小参数数量。 |
reward_model.model.fsdp_config.param_offload | 是否将模型参数卸载到 CPU。 |
reward_model.model.fsdp_config.reshard_after_forward | 仅用于 FSDP2:前向传播后重新分片以减少内存占用。 |
reward_model.model.fsdp_config.fsdp_size | 每个 FSDP 分片组中的 GPU 数量;-1 表示自动。 |
reward_model.model.fsdp_config.forward_prefetch | 仅用于 FSDP1:在前向计算完成前预取下一次前向传播的 all-gather。 |
reward_model.reward_manager | 定义计算基于规则的奖励和处理不同奖励源的机制。 |
reward_model.launch_reward_fn_async | 是否在 log_prob 期间异步启动自定义奖励函数。 |
reward_model.sandbox_fusion.url | 用于远程 reward 函数的 URL。 |
reward_model.sandbox_fusion.max_concurrent | 允许到沙箱的最大并发请求数。 |
reward_model.profiler.discrete | True 表示每个任务有自己的数据库, False 表示所有任务共享一个。 |
9.7 Custom Reward Function
| 参数名称 | 描述 |
|---|---|
custom_reward_function.path | 包含自定义奖励函数的文件路径。 |
custom_reward_function.name | 指定文件中的奖励函数名称。默认为 compute_score。 |
9.8 Algorithm
| 参数名称 | 描述 |
|---|---|
algorithm.gamma | 未来奖励的折扣因子。 |
algorithm.lam | GAE 估计器中偏差和方差的权衡。 |
algorithm.adv_estimator | 优势估计器类型:gae, grpo, reinforce_plus_plus 等。 |
algorithm.norm_adv_by_std_in_grpo | 是否在 GRPO 中按标准差归一化优势。 |
algorithm.use_kl_in_reward | 是否在奖励中启用 KL 惩罚。 |
algorithm.kl_penalty | 如何估计 KL 散度:kl, abs, mse, low_var_kl, 或 full。 |
algorithm.kl_ctrl.type | KL 控制类型:fixed 或 adaptive。 |
algorithm.kl_ctrl.kl_coef | KL 惩罚的初始系数。 |
algorithm.kl_ctrl.horizon | 自适应控制器的 horizon 值(如果启用)。 |
algorithm.kl_ctrl.target_kl | 目标 KL 散度(用于自适应控制器)。 |
algorithm.use_pf_ppo | 是否启用偏好反馈 PPO。 |
algorithm.pf_ppo.reweight_method | 样本重加权方法:pow, max_min, 或 max_random。 |
algorithm.pf_ppo.weight_pow | pow 方法中用于权重缩放的幂。 |
9.9 Trainer
| 参数名称 | 描述 |
|---|---|
trainer.balance_batch | 是否在分布式工作节点间平衡批次大小。 |
trainer.total_epochs | 训练的总轮数。 |
trainer.total_training_steps | 总训练步数(可显式设置或从轮数派生)。 |
trainer.profile_steps | 将被分析的步骤。null 表示不进行分析。 |
trainer.controller_nsight_options.trace | 对于 controller 进程,选择要追踪的 API (比如 CUDA, nvtx, cublas, etc)。 |
trainer.controller_nsight_options.cuda-memory-usage | 对于 controller 进程,是否 profile CUDA 内存使用情况。必须是字符串 "true" 或 "false"。 |
trainer.controller_nsight_options.cuda-graph-trace | 对于 controller 进程,是否将 CUDA graphs 将被作为一个整体进行追踪。 |
trainer.worker_nsight_options.trace | 对于 worker 进程,选择要追踪的 API。 |
trainer.worker_nsight_options.cuda-memory-usage | 对于 worker 进程,是否 profile CUDA 内存使用情况。必须是字符串 "true" 或 "false"。 |
trainer.worker_nsight_options.cuda-graph-trace | 对于 worker 进程,是否 CUDA graphs 将被作为一个整体进行追踪。 |
trainer.worker_nsight_options.capture-range | 仅在 torch.CUDA.profiler.start 和 stop 范围内进行分析。默认值为 cudaProfilerApi,不要更改此配置。 |
trainer.worker_nsight_options.capture-range-end | 指定捕获范围结束时的期望行为。 |
trainer.worker_nsight_options.kill | 向目标应用程序的进程组发送信号。我们让程序自行退出。 |
trainer.project_name | 用于实验跟踪(如 wandb)的项目名称。 |
trainer.experiment_name | 用于在跟踪工具中识别运行的实验名称。 |
trainer.logger | 使用的日志后端:console, wandb 等。 |
trainer.log_val_generations | 验证期间要记录的生成数量。 |
trainer.rollout_data_dir | 用于记录 rollout 数据的目录;如果为 null 则不转储。 |
trainer.validation_data_dir | 用于记录验证数据的目录;如果为 null 则不转储。 |
trainer.nnodes | 训练中使用的节点数。 |
trainer.n_gpus_per_node | 每个节点的 GPU 数量。 |
trainer.save_freq | 模型检查点的保存频率(按迭代次数)。 |
trainer.resume_mode | 恢复模式:auto, disable, 或 resume_path。 |
trainer.resume_from_path | 从该路径恢复训练(仅当 resume_mode 为 resume_path 时使用)。 |
trainer.val_before_train | 是否在训练开始前运行验证。 |
trainer.val_only | 是否只运行验证。 |
trainer.test_freq | 验证频率(以训练迭代次数计)。 |
trainer.critic_warmup | 在更新策略之前预热 critic 的迭代次数。 |
trainer.default_hdfs_dir | 用于保存检查点的默认分布式文件系统路径。 |
trainer.del_local_ckpt_after_load | 加载后是否删除本地检查点。 |
trainer.default_local_dir | 用于保存检查点的默认本地目录。 |
trainer.max_actor_ckpt_to_keep | 保留的 actor 检查点的最大数量。 |
trainer.max_critic_ckpt_to_keep | 保留的 critic 检查点的最大数量。 |
trainer.ray_wait_register_center_timeout | Ray worker 等待注册的超时时间(秒)。 |
trainer.device | 运行训练的设备(如 cuda, cpu)。 |
9.10 Ray Init
| 参数名称 | 描述 |
|---|---|
ray_init.num_cpus | Ray 使用的 CPU 数量。使用 SLURM 时应使用固定数字而不是 null。 |
ray_init.timeline_json_file | 保存 Ray 时间线 JSON 文件以进行性能分析的路径。 |