2025最火免费LLM训练库:verl让你的AI模型推理能力提升3倍

2025最火免费LLM训练库:verl让你的AI模型推理能力提升3倍

【免费下载链接】verl verl: Volcano Engine Reinforcement Learning for LLMs 【免费下载链接】verl 项目地址: https://gitcode.com/GitHub_Trending/ve/verl

你是否还在为大语言模型(LLM)的推理能力不足而烦恼?是否想让你的AI在数学、代码等复杂任务上表现更出色?本文将带你探索一个免费且高效的解决方案——verl(Volcano Engine Reinforcement Learning for LLMs),这是一个由字节跳动Seed团队发起并由社区维护的强化学习训练库,能够帮助你轻松提升LLM的推理能力。

为什么选择verl?

verl是一个灵活、高效且可用于生产环境的LLM强化学习训练库,它基于论文《HybridFlow: A Flexible and Efficient RLHF Framework》开发,具有以下核心优势:

  • 灵活扩展多种RL算法:混合控制器编程模型支持复杂训练流程的灵活表示和高效执行,只需几行代码即可构建GRPO、PPO等RL流程。
  • 与现有LLM基础设施无缝集成:通过模块化API解耦计算和数据依赖,可与FSDP、Megatron-LM、vLLM、SGLang等现有LLM框架无缝集成。
  • 灵活的设备映射:支持将模型部署到不同GPU集,实现高效资源利用和跨集群扩展。
  • 与HuggingFace模型兼容:可直接使用热门的HuggingFace模型进行训练。

项目架构

快速上手:使用verl训练你的第一个LLM

下面我们将通过一个简单的例子,展示如何使用verl对Qwen2.5-0.5B-Instruct模型进行PPO训练,以提升其在GSM8K数学问题数据集上的表现。

步骤1:准备数据集

首先,我们需要将GSM8K数据集预处理为parquet格式,以便于计算RL奖励和提高读取速度。

python3 examples/data_preprocess/gsm8k.py --local_save_dir ~/data/gsm8k

详细代码请参考examples/data_preprocess/gsm8k.py

步骤2:下载基础模型

我们将使用Qwen2.5-0.5B-Instruct模型作为起点。如果需要在RL之前进行监督微调(SFT),可以参考SFT目录SFT Trainer

python3 -c "import transformers; transformers.pipeline('text-generation', model='Qwen/Qwen2.5-0.5B-Instruct')"

步骤3:执行PPO训练

奖励模型/函数

我们使用一个预定义的基于规则的奖励模型。该模型要求输出的最终答案以4个"#"开头,通过正则表达式匹配从解决方案和模型输出中提取最终答案。正确答案得1分,错误答案得0.0分,无答案得0分。

更多细节请参考verl/utils/reward_score/gsm8k.py

训练脚本

现在,让我们使用上述数据集和模型运行PPO训练:

PYTHONUNBUFFERED=1 python3 -m verl.trainer.main_ppo \
 data.train_files=$HOME/data/gsm8k/train.parquet \
 data.val_files=$HOME/data/gsm8k/test.parquet \
 data.train_batch_size=256 \
 data.max_prompt_length=512 \
 data.max_response_length=256 \
 actor_rollout_ref.model.path=Qwen/Qwen2.5-0.5B-Instruct \
 actor_rollout_ref.actor.optim.lr=1e-6 \
 actor_rollout_ref.actor.ppo_mini_batch_size=64 \
 actor_rollout_ref.actor.ppo_micro_batch_size_per_gpu=4 \
 actor_rollout_ref.rollout.name=vllm \
 actor_rollout_ref.rollout.log_prob_micro_batch_size_per_gpu=8 \
 actor_rollout_ref.rollout.tensor_model_parallel_size=1 \
 actor_rollout_ref.rollout.gpu_memory_utilization=0.4 \
 actor_rollout_ref.ref.log_prob_micro_batch_size_per_gpu=4 \
 critic.optim.lr=1e-5 \
 critic.model.path=Qwen/Qwen2.5-0.5B-Instruct \
 critic.ppo_micro_batch_size_per_gpu=4 \
 algorithm.kl_ctrl.kl_coef=0.001 \
 trainer.logger=console \
 trainer.val_before_train=False \
 trainer.n_gpus_per_node=1 \
 trainer.nnodes=1 \
 trainer.save_freq=10 \
 trainer.test_freq=10 \
 trainer.total_epochs=15 2>&1 | tee verl_demo.log

你将看到类似以下的日志,表明训练正在进行中。关键指标val/test_score/openai/gsm8k将每trainer.test_freq步计算一次:

step:0 - timing/gen:21.470 - timing/ref:4.360 - timing/values:5.800 - actor/reward_kl_penalty:0.000 - actor/reward_kl_penalty_coeff:0.001 - timing/adv:0.109 - timing/update_critic:15.664 - critic/vf_loss:14.947 - critic/vf_clipfrac:0.000 - critic/vpred_mean:-2.056 - critic/grad_norm:1023.278 - critic/lr(1e-4):0.100 - timing/update_actor:20.314 - actor/entropy_loss:0.433 - actor/pg_loss:-0.005 - actor/pg_clipfrac:0.000 - actor/ppo_kl:0.000 - actor/grad_norm:1.992 - actor/lr(1e-4):0.010 - critic/score/mean:0.004 - critic/score/max:1.000 - critic/score/min:0.000 - critic/rewards/mean:0.004 - critic/rewards/max:1.000 - critic/rewards/min:0.000 - critic/advantages/mean:-0.000 - critic/advantages/max:2.360 - critic/advantages/min:-2.280 - critic/returns/mean:0.003 - critic/returns/max:0.000 - critic/returns/min:0.000 - critic/values/mean:-2.045 - critic/values/max:9.500 - critic/values/min:-14.000 - response_length/mean:239.133 - response_length/max:256.000 - response_length/min:77.000 - prompt_length/mean:104.883 - prompt_length/max:175.000 - prompt_length/min:68.000

步骤4:模型合并与导出

训练完成后, checkpoint默认保存在checkpoints/${trainer.project_name}/${trainer.experiment_name}目录。你可以使用verl.model_merger模块将保存的checkpoint合并为HuggingFace模型:

python3 -m verl.model_merger merge \
    --backend fsdp \
    --local_dir checkpoints/${trainer.project_name}/${trainer.experiment_name}/global_step_1/actor \
    --target_dir checkpoints/${trainer.project_name}/${trainer.experiment_name}/global_step_1/actor/huggingface

更多关于checkpoint和模型合并的细节,请参考checkpoint-page

高级功能与优化

实验跟踪

要启用wandb进行实验跟踪,设置以下配置:

trainer.logger='["console","wandb"]' \
trainer.project_name=$YOUR_PROJECT_NAME \
trainer.experiment_name=$YOUR_RUN_NAME \

内存优化

如果使用HBM小于32GB的GPU遇到内存不足问题,启用以下配置会有所帮助:

actor_rollout_ref.actor.ppo_micro_batch_size_per_gpu=1 \
critic.ppo_micro_batch_size_per_gpu=1 \

总结与展望

通过本文的介绍,你已经了解了如何使用verl对LLM进行强化学习训练,以提升其在数学推理等复杂任务上的表现。verl的强大之处在于其灵活性和高效性,能够支持多种RL算法和LLM框架,同时提供了丰富的优化选项。

想要深入了解verl的更多功能和高级用法,可以参考以下资源:

现在,轮到你动手尝试了!下载verl,开始训练你的第一个强化学习增强的LLM模型吧!

【免费下载链接】verl verl: Volcano Engine Reinforcement Learning for LLMs 【免费下载链接】verl 项目地址: https://gitcode.com/GitHub_Trending/ve/verl

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值