跳到正文
EN

LAB 01 / 基础与优化

GRPO快速启动

安装依赖、登录 PyTRIO 与 SwanLab,运行 GSM8K 上的 GRPO 训练,了解采样参数、三种 loss 与日志指标。

阅读算法拆解 → 查看代码 ↗

以下命令均从仓库根目录运行。项目要求 Python >=3.13。

bash
uv sync
trio login
swanlab login

1. 准备数据 ​

无需单独执行下载脚本。训练首次启动时会自动下载 openai/gsm8k 的 train split,并使用本地 Hugging Face 缓存。

2. 启动训练 ​

当前依赖版本下,直接使用同步入口:

bash
uv run python 01-grpo/01-demo-sync.py \
    --steps 10 \
    --batch-size 4 \
    --group-size 8 \
    --max-tokens 512 \
    --loss-fn importance_sampling \
    --swanlab-mode online

02-demo-async.py 仍包含旧版 PyTRIO 的 timeout 配置,更新该参数前会在启动阶段报错,因此快速指南暂不使用它。

3. 运行评测 ​

当前项目没有独立的 eval.py。训练过程会在终端和 SwanLab 中记录 reward、frac_degenerate、rollout/avg_gen_len、train_tokens 与 loss_mean,并在结束时打印保存的 sampler weights 路径。

比较不同 loss 时,保持其他参数一致,仅修改:

bash
--loss-fn importance_sampling
--loss-fn ppo
--loss-fn cispo

开放代码,记录实验,也记录边界。