avatar

Wang's Blog

Be Open, Share Knowledge, Keep Learning

  • 首页
  • 数理基础
  • 宇宙机
  • LLM
  • 管理与经济
  • 游戏
Home Qwen2.5-3B(GRPO)的复现实验记录
文章

Qwen2.5-3B(GRPO)的复现实验记录

Posted 2025-09-28 Updated 2025-09- 27
By Administrator
7~9 min read

github链接:hkust-nlp/simpleRL-reason: Simple RL training for reasoning

训练脚本主要参数含义

1.MAX_PROMPT_LENGTH=1024

含义:模型能处理的输入文本(提示词/Prompt)的最大长度

2.MAX_RESPONSE_LENGTH=3072

含义:模型能生成的输出文本(回答/Response)的最大长度

3.DATASET_NAME=simplelr_qwen_level3to5

含义:训练集名称

4.MODEL_NAME=Qwen2.5-3B

含义:训练的基础模型

5.TOTAL_EPOCHS=20

含义:训练的总轮数,代表一个完整的数据收集和模型更新周期

6.LEARNING_RATE=5e-7

含义:学习率,代表每次模型更新参数的步长

7.PPO_MINI_BATCH_SIZE=256

含义:PPO 算法中的小批量大小。在每次更新模型时,整个训练批次会分成这个大小的小块进行。模型每处理一个mini-batch,才会进行一次参数更新。

8.PPO_MICRO_BATCH_SIZE=2

含义:在单个GPU上进行一次forward/backward的数据大小。mini-batch会被再次切分为若干个micro-batch。例如在单卡上,PPO_MINI_BATCH_SIZE=256,PPO_MICRO_BATCH_SIZE=2,那么梯度累积的步数就是256/2=128,这意味着模型会运行128次forward得到loss,然后backward得到gradient。设置怎么小主要是为了防止显存溢出(OOM)

9.CLIP_RATIO=0.2

含义:PPO 的核心参数。它限制了新策略和旧策略之间的差异,防止模型在一次更新中变化太大

10.KL_LOSS_COEF=0.0001 和 KL_COEF=0.001

含义:这两个是 KL 散度(一种衡量两个概率分布差异的指标)的系数。它们控制了 PPO 在更新时对旧模型(或参考模型)的“偏离惩罚”。

11.ENTROPY_COEFFIENT=0.001

含义:熵系数。它鼓励模型在生成时保持一定的随机性,避免总是生成相同的、可预测的回答。

12.TRAIN_BATCH_SIZE=256 和 VAL_BATCH_SIZE=500

含义:训练与验证批次大小

13.ROLLOUT_GPU_MEMORY_UTIL=0.75

含义:告诉Ray,用来收集数据的 worker 只能使用 75% 的 GPU 显存

14.ROLLOUT_N=8

含义:每次收集数据(Rollout)时,并行生成多少个回答。

15.ROLLOUT_TENSOR_MODEL_PARALLEL_SIZE=2(TP_SIZE)

含义:张量模型并行大小。表示用多少个 GPU 来共同运行一个 SGLang engine。例如,TP_SIZE=4 表示将一个大模型的权重切成 4 份,由 4 个 GPU 协同完成推理。

16.MICRO_ROLLOUT_BATCH_SIZE=1024

含义:探索阶段单卡分配的experience数量,vLLM 等推理引擎内部的微批次大小

17.REMOVE_PREVIOUS_CKPT=False

含义:是否在每次保存新模型检查点时删除旧的

训练过程的问题

当我训练到了global_step_90的时候,在验证的过程中GPU显存不足,因此保留了global_step_80的模型,但是重新开始训练的时候,又出现数据结构对不上的问题,并且checkpoints文件夹下除了存放模型参数以外,还存在优化器参数,这个参数量巨大,加载到GPU后导致刚开始就出现显存不足的问题。

尝试的解决方案是:备份、删除优化器参数,尝试从checkpoints恢复训练,通过牺牲收敛速度换取显存。

LLM 的核心数据结构是权重(Weights)、配置(Config)和分词器(Tokenizer)

  • 权重:是模型的知识本身,它们必须被高效地加载和使用

  • 配置:是模型的骨架。它告诉加载器权重是如何组织起来的(层数、维度、专家数量等)

  • 分词器:是模型的接口。它定义了输入文本和模型Token之间的映射,是用户空间交互的唯一途径。(实现文本↔Token转换)

LLM
License:  CC BY 4.0
Share

Further Reading

Sep 28, 2025

代码阅读与运行1

RLHF 试着运行了一份非常基础的RLHF代码,来源于:https://github.com/lansinuote/Simple_RLHF_tiny B站上有对应视频 📁项目结构 Simple_RLHF_tiny-main/ ├── 🔧 核心代码文件 │ ├── util.py # 工具类:To

Sep 28, 2025

大模型入门(6)——Agent、MCP、FunctionCall

内容来自B站视频:【10分钟讲清楚 Prompt, Agent, MCP 是什么】https://www.bilibili.com/video/BV1aeLqzUE6L?vd_source=a704063646d181fb265230f6b49cca81 System Prompt和User Pro

Sep 28, 2025

代码阅读与运行2

这次运行的是大名鼎鼎的OpenRLHF 遇到的一些问题 自己的设备是colab提供的A100 GPU,显存40GB 安装的过程没有太大问题,都能顺利解决,安装之后按照README的顺序试着用以下命令启动SFT的训练(提供的脚本还没试过) !deepspeed --module openrlhf.cl

OLDER

MiniMind项目复现记录

NEWER

Ray

Recently Updated

  • C++
  • Hello World
  • 数据仓库复习整理
  • 代码阅读与运行1
  • 大模型入门(6)——Agent、MCP、FunctionCall

Trending Tags

Halo 前端 强化学习 Python obsidian

Contents

©2026 Wang's Blog. Some rights reserved.

Using the Halo theme Chirpy