VeRL
本章节主要描述训练所需的yaml配置文件、配置参数说明,用户可根据实际自行选择其需要的参数。
yaml文件配置
根据以下步骤修改yaml文件,以下参数aaa.bbb为aaa区域的bbb参数值,如backend_config.data.train_files指backend_config区域中data.train_files参数:
参数 |
示例值 |
参数说明 |
---|---|---|
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}) |