VeRL
本章节主要描述训练所需的yaml配置文件(通过ascendfactory-cli config 命令生成)、配置参数说明,用户可根据实际自行选择其需要的参数。
yaml文件配置
根据以下步骤修改yaml文件。

参数 | 示例值 | 参数说明 |
|---|---|---|
af_output_dir | /home/ma-user/verl | 【必修改】训练输出结果 |
backend_config.data.train_files | /data/geometry3k/train.parquet | 【必修改】预处理完成后的训练集 |
backend_config.data.val_files | /data/geometry3k/test.parquet | 【必修改】预处理完成后的验证集 |
backend_config.actor_rollout_ref.model.path | /model/Qwen2.5-VL-32B-Instruct | 【必修改】Huggingface模型路径。这可以是本地路径或 HDFS路径。 |
backend_config.data.train_batch_size | 32 | 一次训练采样的批量大小。 |
backend_config.actor_rollout_ref.actor.ppo_mini_batch_size | 8 | 批量大小拆分为多个子批次。 |
backend_config.actor_rollout_ref.actor.ppo_micro_batch_size_per_gpu | 1 | 训练 Actor 时,在单个设备上进行一次 前向传播 的数据量大小。 |
backend_config.actor_rollout_ref.rollout.log_prob_micro_batch_size_per_gpu | 1 | 在Rollout过程中,每一步计算Log Probability时,在单个设备上进行一次前向传播的数据量大小。 |
backend_config.actor_rollout_ref.ref.log_prob_micro_batch_size_per_gpu | 1 | 在参考策略(Reference Policy)的 Log Probability 计算中,在单个设备上进行一次 前向传播 的数据量大小。 |
backend_config.trainer.total_epochs | 5 | 【可选】训练轮数,用户根据自己实际选择训练轮数。 |
backend_config.actor_rollout_ref.rollout.tensor_model_parallel_size | 4 | vllm推理时模型切分。 |
backend_config.data.image_key | images | 【多模态模型】数据集中图像所在的字段。默认值为'images。 |
engine_kwargs.vllm.disable_mm_preprocessor_cache | True | 【多模态模型】是否禁用多模态模型的预处理器缓存。默认值为False。 |
backend_config.data.max_prompt_length | 1024 | 最大提示长度。所有提示都将是left-padded到此长度。 |
backend_config.data.max_response_length | 1024 | 最大响应长度。RL算法中Rollout阶段最大的生成长度 |
backend_config.actor_rollout_ref.rollout.max_num_batched_tokens | 18432 | max_response_length+max_prompt_length大于8k,长序列时设置为两参数之和,默认为8192 |
backend_config.actor_rollout_ref.actor.ulysses_sequence_parallel_size | 1 | 序列并行,长序列使用,默认1,max_response_length值>8K时,取值一般为(max_response_length/2048)取整 |
backend_config.data.shuffle | True | 是否对dataloader中的数据进行shuffle。 |
backend_config.data.truncation | 'error' | 如果 input_ids 或 prompt length 超过 max_prompt_length,则进行截断。默认值为 'error',不允许超过 max_prompt_length。 |
backend_config.actor_rollout_ref.actor.optim.lr | 1e-6 | actor学习率 |
backend_config.actor_rollout_ref.model.use_remove_padding | True | 是否移除padding。
|
backend_config.actor_rollout_ref.actor.use_kl_loss | True | 是否Actor中使用KL loss,如果使用则不会在奖励功能中使用 KL。默认为True。 |
backend_config.actor_rollout_ref.actor.kl_loss_coef | 0.01 | kl 损失的系数。默认值为 0.001 |
backend_config.actor_rollout_ref.actor.kl_loss_type | low_var_kl | 如何计算参与者和参考策略之间的 kl 散度;默认选择low_var_kl |
backend_config.actor_rollout_ref.actor.entropy_coeff | 0 | 计算PPO损失,一般设置为0 |
backend_config.actor_rollout_ref.actor.use_torch_compile | False | 是否JIT编译加速,支持False |
backend_config.actor_rollout_ref.model.enable_gradient_checkpointing | True | 是否为 Actor 启用 Gradient Checkpointing |
backend_config.actor_rollout_ref.rollout.name | vllm | 推理框架名称 vllm |
backend_config.actor_rollout_ref.rollout.gpu_memory_utilization | 0.4 | 用于 vLLM 实例的总 device内存的比例 |
backend_config.actor_rollout_ref.rollout.n | 4 | 将一个批次的数据重复 n 次(并且在重复过程中进行交错) |
backend_config.trainer.logger | ['console','tensorboard'] | 日志后台,可选择【'wandb', 'console' ,'tensorboard'】 |
backend_config.trainer.val_before_train | False | 是否在训练开始前跑验证集测试
|
backend_config.trainer.resume_mode | auto | 默认值为auto。如果设置为"auto",将自动从默认保存的路径加载中断时最新保存训练权重继续训练,开启【断点续训】,如需指定权重参数加载路径则设置为“resume_path”,并设置resume_from_path参数值;如果设置为"disable",表示关闭【断点续训】模式。 |
backend_config.trainer.resume_from_path | null | 默认值为null。如果开启【断点续训】模式,需指定权重参数加载路径可设置此值,目的方便用户指定权重基于此权重继续训练。 |
backend_config.trainer.save_freq | -1 | 模型权重参数的保存频率(按迭代次数)。默认值为-1,不保存权重参数。 |
backend_config.actor_rollout_ref.actor.ppo_max_token_len_per_gpu | 2048 | 一个 PPO micro batch size 中,单个 GPU 能处理的最大 Token 总数。通常设置为 n * ({data.max_prompt_length} + {data.max_response_length}) |
backend_config.critic.model.path | /model/Qwen2.5-VL-32B-Instruct | 【PPO算法必修改】Huggingface模型路径。这可以是本地路径或 HDFS路径。 |
backend_config.reward_model.model.path | /model/Qwen2.5-VL-32B-Instruct | 【PPO算法必修改】reward模型,不建议设置为训练模型。Huggingface模型路径,这可以是本地路径或 HDFS路径。 |
backend_config.actor_rollout_ref.rollout.mode | async | 【多轮对话Agent训练必修改】 是否启用异步推理。默认值为sync。 |
backend_config.actor_rollout_ref.rollout.multi_turn.enable | true | 【多轮对话Agent训练必修改】是否启用多轮对话模式。默认值为False。 |
backend_config.actor_rollout_ref.rollout.multi_turn.tool_config_path | "/home/ma-user/AscendFactory/src/open_source/verl/examples/sglang_multiturn/config/tool_config/gsm8k_tool_config.yaml" | 【多轮对话Agent训练必修改】工具配置文件路径,定义模型可以调用的外部工具。 |
backend_config.data.return_raw_chat | true | 【多轮对话Agent训练必修改】是否返回未应用聊天模板的原始 response。默认值为False。 |
backend_config.actor_rollout_ref.rollout.multi_turn.max_assistant_turns | 5 | 【多轮对话Agent训练】用于限制助手(系统)在对话中的最大参与轮数。在多轮对话场景中,助手每次轮次需要调用外部工具或执行复杂推理,设置该参数可避免助手过度参与导致系统资源消耗过大或对话过程失控。 |
backend_config.actor_rollout_ref.rollout.multi_turn.max_user_turns | 5 | 【多轮对话Agent训练】用于限制用户(或提问者)的最大参与轮数。在实际应用中,用户通常需要完成多轮提问、补充说明或验证结果,该参数确保对话不会因用户持续提问而无限延长。 |
backend_config.actor_rollout_ref.model.lora_rank | 32 | 【Lora】Lora适配器矩阵的秩,值越小表明引入的参数越少。 |
backend_config.actor_rollout_ref.model.lora_alpha | 32 | 【Lora】Lora适配器的缩放系数,LoRA 中的低秩矩阵会乘以 α / rank 来对权重进行缩放,用于调节微调的强度。 |
backend_config.actor_rollout_ref.model.target_modules | all-linear | 【Lora】将 LoRA 适配器应用于模型中所有线性层,目前verl必须设置all-linear。 |
backend_config.actor_rollout_ref.rollout.load_format | safetensors | 【Lora】在加载模型时使用 safetensors 格式, verl lora下会对vllm打patch,直接通过safetensors的形式给vllm传lora传输,所以lora下必须设置为safetensors。 |
backend_config.trainer.n_gpus_per_node | 4 | 【one-step-off-policy】训推分离后每个节点分配给训练的NPU卡数。 |
backend_config.rollout.n_gpus_per_node | 12 | 【one-step-off-policy】训推分离后每个节点分配给推理的NPU卡数。 |

