---
title: GRPO-GSPO-rl-data-clean
canonical_url: "https://www.modelscope.cn/datasets/Cocolime/GRPO-GSPO-rl-data-clean"
md_url: "https://www.modelscope.cn/datasets/Cocolime/GRPO-GSPO-rl-data-clean.md"
repository: Cocolime/GRPO-GSPO-rl-data-clean
chinese_name: "GRPO/GSPO 对照实验 RL 数据（已清洗对齐）"
last_updated: 2026-08-09
license: Apache-2.0
storage_size: "3.5 GB"
downloads: 407
stars: 0
---

# GRPO-GSPO-rl-data-clean

> GRPO-GSPO-rl-data-clean - Cocolime 在 ModelScope 开源的数据集。12 个原始数据集 -> 统一 schema (data_source/prompt/ability/reward_model/extra_info)，GRPO/GSPO/分段惩罚可直接混训。含 14 个 RL 文件 + 1 个 SFT 文件的 JSONL 版本。

Cocolime/GRPO-GSPO-rl-data-clean 是 ModelScope 魔搭社区上的数据集，存储大小 3.5 GB，采用 Apache-2.0 许可。

- **Repository**: Cocolime/GRPO-GSPO-rl-data-clean
- **License**: Apache-2.0
- **Storage size**: 3.5 GB
- **Downloads**: 407
- **Stars**: 0
- **Last updated**: 2026-08-09

Source: https://www.modelscope.cn/datasets/Cocolime/GRPO-GSPO-rl-data-clean

---

# GRPO vs GSPO Baseline 训练报告（最终版）

> **Qwen3-1.7B + GSM8K + AIME24 — RTX 5070 11.9 GB 单卡演示**
> 完整 GRPO + GSPO 跑通，pipeline 全部验证通过。

## 1. 完整执行情况

| 阶段 | 状态 | 备注 |
|---|---|---|
| ① 12 个数据集 → 统一 schema → JSONL | ✅ | 18.3 GB 原始 → 1.5 GB parquet → 3.6 GB jsonl（已上传 ModelScope） |
| ② 代码沙箱搭建（subprocess + 临时 runner） | ✅ | 7/7 自检通过（stdin / functional / checker 三模式） |
| ③ 沙箱接入 reward_unified.py | ✅ | 数学 9/9，代码 3 mode 全部联通 |
| ④ 升级模型到 Qwen3-1.7B（ModelScope 国内源） | ✅ | 3.88 GB |
| ⑤ 1.7B GSM8K 诊断 | ✅ | 关键发现：必须 `enable_thinking=False` |
| ⑥ GRPO 训练（20 步） | ✅ | **2/20 步有效梯度** |
| ⑦ GSPO 训练（20 步） | ✅ | **2/20 步有效梯度** |

## 2. 实验环境

| 项目 | 规格 |
|---|---|
| GPU | NVIDIA RTX 5070, 11.9 GB 物理显存 |
| torch | 2.11.0+cu128 |
| 模型 | Qwen3-1.7B（1.7B 参数，bf16） |
| 训练集 | gsm8k 前 20 题 |
| 评测集 | aime24 前 5 题 |
| Group size | 2（论文 64，显存受限） |
| Max new tokens | 192 |
| Train steps | 20 |
| Learning rate | 1e-5 |
| GRPO clip | 0.2 / 0.27 |
| GSPO clip | 3e-4 / 4e-4 |
| Chat template | Qwen3 instruct + `enable_thinking=False` |

## 3. 最终 Baseline 对比

| 算法 | 模型 | 初始 pass@1 (AIME24 top 5) | 最终 pass@1 | Δ | 有效梯度步 | 备注 |
|---|---|---|---|---|---|---|
| **GRPO** | Qwen3-1.7B | 0% | 0% | 0 | 2/20 | step 3 和 13 出现 1/2 答对 |
| **GSPO** | Qwen3-1.7B | 0% | 0% | 0 | 2/20 | step 3 和 13 出现 1/2 答对 |

**结论**：GRPO 与 GSPO 的 baseline 数字完全一致（pass@1 都是 0%）。**这不是算法差异，是模型能力问题**——1.7B 在 AIME24 上答不出任何题目（连初始 baseline=0%）。

## 4. 训练过程详细对比

### 4.1 GRPO（20 步）

| Step | reward | loss | adv_std | 耗时 | 状态 |
|---|---|---|---|---|---|
| 0 | [1, 1] | – | – | – | 全对跳过 |
| 1 | [1, 1] | – | – | – | 全对跳过 |
| 2 | [0, 0] | – | – | – | 全错跳过 |
| **3** | [1, 0] → **mean 0.50** | 0.0000 | 1.00 | 13.9 s | ✅ 有梯度 |
| 4~12 | 全 0/全 1 | – | – | – | 跳过 |
| **13** | [1, 0] → **mean 0.50** | -0.0000 | 1.00 | 20.9 s | ✅ 有梯度 |
| 14~19 | 全 0/全 1 | – | – | – | 跳过 |

### 4.2 GSPO（20 步）

| Step | reward | loss | adv_std | 耗时 | 状态 |
|---|---|---|---|---|---|
| 0 | [1, 1] | – | – | – | 全对跳过 |
| 1 | [1, 1] | – | – | – | 全对跳过 |
| 2 | [0, 0] | – | – | – | 全错跳过 |
| **3** | [1, 0] → **mean 0.50** | 0.0000 | 1.00 | 15.3 s | ✅ 有梯度 |
| 4~12 | 全 0/全 1 | – | – | – | 跳过 |
| **13** | [1, 0] → **mean 0.50** | 0.0000 | 1.00 | 62.1 s | ✅ 有梯度 |
| 14~19 | 全 0/全 1 | – | – | – | 跳过 |

### 4.3 关键观察

| 指标 | GRPO | GSPO |
|---|---|---|
| 有效梯度步位置 | step 3, 13 | step 3, 13 |
| 有效梯度步 loss | ~0.0000 | ~0.0000 |
| 有效梯度步耗时 | 13.9 / 20.9 s | 15.3 / 62.1 s |
| 全过程有效梯度步数 | 2 | 2 |
| 16 GB 显存（超 11.9 GB 物理） | ✓ | ✓ |
| 跳过的 all_same 步 | 18 | 18 |

**GRPO 与 GSPO 在 1.7B + 20 步 + 简单 prompt 上表现完全一致**——符合预期：差别只在 importance ratio 计算粒度（token-level vs sequence-level），但因只有 2 步有效梯度、单 batch size=2，差异未到统计显著水平。

## 5. 关键发现与教训

| # | 发现 | 影响 |
|---|---|---|
| 1 | **Qwen3 必须禁用 thinking** | 不加 `enable_thinking=False`，192 tokens 内只写 思考，答不到 `\boxed{...}` |
| 2 | **AIME24 太难** | 1.7B baseline 0%，baseline 数字本身无意义（不是算法差异） |
| 3 | **1.7B 在 GSM8K 上 ~60%** | 部分 step 出现 1/2 答对（reward 0.5），其余 all_same |
| 4 | **显存 swap 让 generate 慢** | 物理 11.9 GB vs 实际 16 GB，触发 Windows GPU swap，单步 13-62 秒 |
| 5 | **沙箱是代码 RL 的必备** | 已实现并 7/7 通过；当前只用数学训练，但接入了 reward_unified.py |

## 6. 三个关键 Bug 的修复（沉淀进代码）

| Bug | 修复 |
|---|---|
| Sandbox runner 把用户 print 与 JSON 状态输出混在同一 stdout | 改为临时文件 + JSON 通信 |
| `_safe_import` 走替换后的 `__import__` 触发无限递归 | 用 `_orig_import` 保存原版引用 |
| Qwen3DecoderLayer 不支持 `gradient_checkpointing + use_cache` 同时启用 | rollout 用 use_cache=True，训练 step 通过 torch.no_grad() 隔离 |

## 7. 硬件建议（真 baseline 所需）

| 操作 | 显存 |
|---|---|
| Qwen2.5-Math-7B bf16 推理 | 14 GB |
| + LoRA 训练 | 16 GB |
| + rollout buffer (group_size=8) | 20 GB+ |
| **建议 GPU** | **RTX 4090 (24 GB) 或 A100 (80 GB)** |
| 当前 RTX 5070 | 11.9 GB（**物理上不够 7B RL**） |

## 8. 当前产物清单

```
Z:\model_RL\
├── data/                       原始 18.3 GB
├── data_clean/                 统一 schema parquet 1.5 GB
├── data_jsonl/                 统一 schema jsonl 3.6 GB（已上传 ModelScope）
├── docs/
├── scripts/                    数据处理、reward、沙箱
├── models/
│   └── Qwen3-1.7B/            本次训练用
└── training_experiments/
    ├── train_demo.py           训练脚本（GRPO + GSPO 双 loss）
    ├── diagnose.py             GSM8K 诊断
    ├── grpo_v7_log.txt         ✅ GRPO 完整日志
    ├── gspo_v7_log.txt         ✅ GSPO 完整日志
    ├── summary_GRPO.json       GRPO 汇总
    ├── summary_GSPO.json       GSPO 汇总
    ├── train_GRPO.jsonl        GRPO 逐步
    ├── train_GSPO.jsonl        GSPO 逐步
    └── BASELINE_REPORT.md      本报告
```

## 9. 跑法

```bash
python train_demo.py --algo GRPO
python train_demo.py --algo GSPO
```

输出会写到 `summary_<algo>.json` 和 `train_<algo>.jsonl`。

## 10. 总结

**本次任务完成度 7/7**：数据、reward、沙箱、模型升级、诊断、GRPO 训练、**GSPO 训练**全部跑通。

**结论**：在 11.9 GB 物理显存 + 1.7B 模型 + 20 步训练 + GSM8K/AIME24 数据集条件下：
- ✅ 完整 GRPO/GSPO pipeline 跑通
- ✅ 沙箱 7/7 通过 + 接入 reward_unified.py
- ✅ 1.7B 在 GSM8K 上 ~60% 答出
- ❌ 1.7B 在 AIME24 上 0% 答出（baseline 0%）
- ❌ GRPO vs GSPO 在 1.7B + 20 步下表现完全一致（无差异）
- 📌 真实 baseline 差异需要 ≥7B 模型 + ≥200 步 + ≥24 GB 显存

**关键工程经验**：
1. Qwen3 instruct 训练必须 `enable_thinking=False`
2. 沙箱与用户代码输出必须用文件通信，禁用 stdout 混用
3. Windows 上 GPU 显存溢出（16 GB on 11.9 GB 物理）触发 swap，单步慢 3-5 倍
4. 1.7B 答案必须配 prompt 模板禁用 thinking，否则 192 tokens 卡在 思考里
