来源与复现边界
上游
- verl-recipe char_count,固定 revision
6d8d5c129334f40b463dc7e383cf269358352fd6。原始数据生成器保留 ByteDance 的 Apache-2.0 头。 - verl,本地保存的 clean checkout HEAD 为
1876b06d0a3e4e71e06230be10af14492ca8a75b。发布时已从公开 raw 地址核对uv.lock、pyproject.toml和基础启动脚本,均逐字节一致。 - 模型标识为
Qwen/Qwen3-1.7B;历史下载的具体 Hugging Face commit 未确认,没有声称已锁定权重 revision。
文件映射
| 发布文件 | 来源/改动 |
|---|---|
src/reward_tolerant.py |
历史实际使用的 reward 函数,逐字节保留 |
data/rl/*.parquet |
历史实际数据,逐字节保留 |
scripts/run_grpo_base.sh |
历史基础脚本,与固定 verl revision 一致 |
scripts/train.sh |
基于实际 launcher;保留训练参数,改成可移植路径,console 默认日志,环境安装移到 setup |
archive/launch_char_count.original.sanitized.sh |
原 launcher,仅替换内网 tracking URI 和个人目录 |
archive/create_dataset.original.py |
历史下载的数据生成器,无修改 |
scripts/create_dataset.py |
公开适配:增加 seed/输入检查,移除 verl import,修正文档中与实现不符的词源描述 |
archive/uv.lock、archive/verl-pyproject.toml |
固定 verl revision 的依赖文件快照 |
archive/training.sanitized.log |
包含 135M 与 Qwen 轮次;移除 ANSI 颜色、替换 IPv4/个人路径,保留换行及 CR |
results/metrics.csv |
既有 Qwen 轮次提取结果,发布时用新脚本逐字段复核 |
docs/conversation-excerpt.md |
用户可见对话选段,去掉交错的数学任务段落、隐藏思考、工具正文和私人路径 |
scripts/extract_metrics.py、scripts/plot_metrics.py、tests/ |
本次为开源整理新增的审计与可视化工具 |
SHA256SUMS 记录发布文件的字节摘要(不含自身和 Git 元数据)。
不能保证的复现部分
历史数据生成未设 random seed,因此复现历史数据应直接使用附带 parquet。训练配置中的 seed=42 并不能倒推出数据生成 seed。GPU/Ray/vLLM 的运行也不保证位级确定性。
历史容器镜像已删除,锁文件描述 Python 依赖,不等价于完整 OS/驱动镜像。原 launcher 在 frozen sync 后另装 MLflow 3.17.2,未保存该步骤之后的完整 pip freeze。重装仍需系统级 CUDA/编译依赖,未在本次整理中执行完整 GPU 环境安装。
默认关闭远程 MLflow,仅改变记录目的地;数据、模型和训练超参数按历史配置准备。任何新增 checkpoint 保存、生成新数据或更换环境都应作为新的运行记录,不能把旧的 54.4% 贴在新实验上。
数据交叉检查
逐题复算确认所有标签等于实际字符出现次数。按完整 prompt 文本去重,训练集有 8493 个唯一问题,验证集有 994 个唯一问题,二者交集为 62 个问题。生成器未强制跨 split 去重;公开数据保留历史原貌。