Project LLM RLVR checkpoint:project-llm-rlvr-v1-step-50
本仓库是统一多环境RLVR模型轨迹中的完整BF16权重保存点。目录中的step表示已经完成的optimizer update,不是rollout批次数、样本行数或epoch。
当前仓库身份
| 字段 | 值 |
|---|---|
| Hugging Face repo | vosldtgbj/project-llm-rlvr-v1-step-50 |
| 阶段 | RLVR v1 |
| 阶段内step | 50 |
| 累计RLVR step | 50 |
| 直接参数父模型 | vosldtgbj/project-llm-rlvr-v1-step-25 |
| 下一个公开保存点 | project-llm-rlvr-v1-step-75 |
| 采样方式 | 标准采样(Dynamic Sampling关闭) |
| 当前阶段学习率 | 1e-6 |
| 算法 | synchronous GRPO |
| 每题rollout数 | 16 |
| 每次更新 | 30个有效prompt group / 480条rollout |
| 权重 | 完整BF16模型,5个Safetensors分片 |
怎样解释这个保存点
当前仓库处于一条连续的模型参数轨迹中。v1 step 25/50/75/100/125来自同一个v1 run;v2从v1 step125权重启动,之后v2各保存点来自同一个v2 run。公开保存点之间相隔25次optimizer update,最终v2 step149与前一个step125相隔24次更新。
该checkpoint没有被赋予一个来自其他step的独立validation分数。训练日志中的rollout reward描述当时采样数据上的在线信号,受题目难度、Dynamic Sampling和policy共同影响;它不是冻结离线Agent Eval,不能直接用于跨checkpoint排名。正确比较方法是对全部11个保存点执行同一套冻结eval与相同推理参数。
本仓库位于v1标准采样阶段。v1固定取30个prompt、每题生成16条rollout;全0或全1的group仍消耗生成预算,但其归一化组内优势不提供有效策略梯度差异。
整个模型谱系
google/gemma-4-12B-it
├─ CPT 第一轮:20 个 0.5-epoch 独立实验
├─ CPT 第二轮:10 个 1.0-epoch 独立重训实验
│ ├─ top10-01-full-02-1ep ─┬─ SFT v3 F3 × {0.5, 1.0, 2.0 epoch}
│ │ └─ SFT v3 L5 × {0.5, 1.0, 2.0 epoch}
│ └─ top10-02-lora-15-1ep ─── SFT v3 L2 × {0.5, 1.0, 2.0 epoch}
│ └─ L2 h2p0
│ └─ RLVR v1 steps 25→50→75→100→125
│ └─ RLVR Dynamic v2 local steps 25→50→75→100→125→149
└─ 原始基座只作为评测控制组,没有由本项目重新上传
必须区分两种“关系”:
- 配方对应关系:CPT 1.0 epoch 的十个模型与第一轮十个优选唯一配方一一对应,但它们从原始基座独立重训,没有继承 0.5 epoch 模型参数。
- 参数继承关系:SFT 从明确的 CPT 1.0 epoch 权重开始;RLVR v1 从明确的 SFT 权重开始;RLVR v2 从 v1 step 125 权重开始。这些才是实际模型参数的父子谱系。
架构、精度与导出形式
这 50 个仓库使用同一模型结构,区别在训练后参数值及所处训练阶段:
| 项目 | 值 |
|---|---|
| 原始模型 | google/gemma-4-12B-it |
| Transformers 架构 | Gemma4UnifiedForConditionalGeneration |
model_type | gemma4_unified |
| 总参数量 | 12,484,280,320 |
| 文本层数 | 48 |
| 文本 hidden size | 3,840 |
| vocabulary size | 262,144 |
| 正式导出精度 | BF16 |
| 单仓库权重体积 | 约 23.92 GB(十进制),约 22.3 GiB |
| 权重格式 | 5 个分片 Safetensors + model.safetensors.index.json |
训练只针对文本任务。视觉塔、音频塔和多模态投影资产保持冻结;主要参数变化发生在文本语言模型。LoRA/RSLoRA 实验仓库保存的是已经合并回基座的完整模型权重,不是仅含低秩矩阵的 adapter,因此加载时不需要额外寻找基座或执行 adapter merge。
每个仓库还包含模型配置、generation config、tokenizer、processor、chat template 和 Safetensors 索引。归档不包含 optimizer、scheduler、随机数状态、dataloader cursor、FSDP/DTensor shard 或 Ray 状态,所以适合推理、统一评测及作为新训练的初始化权重,不支持原训练作业的位级精确断点续训。
SFT v3 数据谱系
九个 SFT 正式模型共同使用 SFT v3 的 official_90_10 冻结视图。公开数据卡见 SF-SFT-v3。它由 SFT v2 canonical 经过确定性引用净化,再按 assistant 监督 token 重新冻结 90% 项目域与 10% 多语言、多能力通用数据。
| split | 项目域记录 / 监督 token | 通用记录 / 监督 token | 合计记录 / 监督 token |
|---|---|---|---|
| train | 64,263 / 3,674,850 | 2,932 / 408,317 | 67,195 / 4,083,167 |
| eval | 16,083 / 917,764 | 889 / 101,973 | 16,972 / 1,019,737 |
正式训练包将 67,195 条记录打包为 5,824 个长度 8,192 的 pack;总输入 token 为 44,084,610,assistant 监督 token 为 4,083,167,packing efficiency 为 0.9240。训练只对 assistant 回答、工具调用及明确指定的控制 span 计算 loss。
项目域任务覆盖九类能力:单文档问答、跨文档推理、时间与版本冲突、正常工具轨迹、工具故障恢复、澄清/不可回答/停止、结构化输出、注入与权限边界、通用能力锚点。通用部分覆盖英语和多语言的 instruction、agent/tool、code、math/science、safety 与 structured output。
v3 的关键变化是从监督输出中移除持久内部路径、哈希、行号式引用;需要引用时只保留请求内短编号或自然表达。这是确定性数据转换,不是逐条人工改写,也不是再次调用教师模型生成。
九个 SFT run 使用相同 train/eval 包,但 0.5、1.0、2.0 epoch 都从各自固定 CPT 起点独立启动,并使用各自完整的 cosine 学习率时域;它们不是从一条 2-epoch 轨迹截取的三个中途点。
RLVR 任务、环境与数据谱系
RLVR 使用统一冻结训练集 SF-RLVR-Unified-v2:30,000 条项目域任务与 7,500 条公开通用任务,按任务条数为 80%/20%。项目域母集见 SF-RLVR-Domain-v1。
项目域任务来自相同的 104 份公开日文白书,但与 CPT token cache、SFT 回答数据是独立构建管线。每条 RLVR 任务保存可见 prompt、隐藏结构化参考、verifier_id 和 reward_contract_id;回答在训练时由当前 policy 在线生成,并由确定性检查器或受约束 judge 产生 reward。
| 大类 | family | 条数 |
|---|---|---|
| 项目域 | single-document grounded / multi-document reasoning / abstention / structured output / source conflict / temporal version | 30,000 |
| 通用 | instruction following / ReasoningGym / competitive coding / structured outputs / open math / arithmetic / MCQA / prompt injection / QA abstention | 7,500 |
| 合计 | 15 个可验证 family | 37,500 |
框架实际读取的是转换成 NeMo Gym execution schema 的 train.jsonl。长度门禁确定性替换了 34 条超长公开任务,各 family 配额不变。locked eval 为 4,700 条,validation core 是其中冻结的 470 条;二者不参与梯度。项目假设不进行互联网搜索。
统一 RLVR 配方
| 参数 | 值 |
|---|---|
| 算法 | synchronous GRPO |
| 每个 optimizer step 的有效 prompt group | 30 |
| 每个 prompt 的 rollout 数 | 16 |
| 每步用于更新的 rollout 总数 | 480 |
| 最大交互轮数 | 5 |
| 输入 / 生成 / 总长度上限 | 8,192 / 2,048 / 10,240 tokens |
| rollout temperature / top-p | 0.7 / 1.0 |
| train global / micro batch size | 480 / 1 |
| 优化器 | Transformer Engine FusedAdam |
| Adam betas / eps | 0.9, 0.999 / 1e-8 |
| weight decay / max grad norm | 0.1 / 1.0 |
| PPO ratio clip | 0.2~0.28 |
| truncated importance-sampling ratio | 2.0 |
| reference-policy KL penalty | 0 |
| checkpoint / validation 周期 | 25 / 50 optimizer steps |
| 训练硬件 | hgpn117 + hgpn126,共 16 张 H100 SXM |
| rollout 后端 | vLLM,tensor parallel size 2 |
部分 reward contract 使用部署在 konst154 的 Nemotron 3 Ultra judge。judge 只是奖励系统的一部分;大量数值、枚举、schema、引用、拒答和代码任务由相应确定性 verifier 或环境执行结果验证。
v1 与 v2 的精确边界
- v1 从 SFT v3
L2 h2p0开始,学习率1e-6,use_dynamic_sampling=false,完成 125 次参数更新并消费静态训练序列前 3,750 个 prompt。 - v2 从 v1 step 125 的模型权重开始,重置 optimizer 与 10-step warmup,学习率改为
5e-7,use_dynamic_sampling=true。 - v2 输入是剩余 33,750 条 prompt 的 family 平滑重排视图。Dynamic Sampling 最多尝试 32 个生成批次来凑齐30个具有非平凡组内 reward 差异的 prompt group。
- v2 完成149次更新,实际消耗33,480条原始数据行并让4,470个 prompt group进入更新。最后剩余270条只产生352条合格 rollout,少于一次更新所需的480条,所以不存在 v2 optimizer step 150。
- v1→v2 是连续的模型参数轨迹,但不是同一 optimizer state 的精确续训,也不是只改变 Dynamic Sampling 的严格单变量 A/B 实验。
RLVR 全部保存点
| 阶段 | 局部step | 累计step | 采样方式 | 学习率 | 仓库 |
|---|---|---|---|---|---|
| v1 | 25 | 25 | 标准采样 | 1e-6 | project-llm-rlvr-v1-step-25 |
| v1 | 50 | 50 | 标准采样 | 1e-6 | project-llm-rlvr-v1-step-50(当前) |
| v1 | 75 | 75 | 标准采样 | 1e-6 | project-llm-rlvr-v1-step-75 |
| v1 | 100 | 100 | 标准采样 | 1e-6 | project-llm-rlvr-v1-step-100 |
| v1 | 125 | 125 | 标准采样 | 1e-6 | project-llm-rlvr-v1-step-125 |
| v2 | 25 | 150 | Dynamic Sampling | 5e-7 | project-llm-rlvr-dynamic-v2-step-25 |
| v2 | 50 | 175 | Dynamic Sampling | 5e-7 | project-llm-rlvr-dynamic-v2-step-50 |
| v2 | 75 | 200 | Dynamic Sampling | 5e-7 | project-llm-rlvr-dynamic-v2-step-75 |
| v2 | 100 | 225 | Dynamic Sampling | 5e-7 | project-llm-rlvr-dynamic-v2-step-100 |
| v2 | 125 | 250 | Dynamic Sampling | 5e-7 | project-llm-rlvr-dynamic-v2-step-125 |
| v2 | 149 | 274 | Dynamic Sampling | 5e-7 | project-llm-rlvr-dynamic-v2-step-149-final |
这些点用于之后在同一冻结评测上画性能随累计更新步数变化的曲线。并非每个保存点都恰好执行独立validation,因此不能把缺少validation记录解释为checkpoint无效。
RLVR reward 与参数更新的含义
每个prompt生成16条候选响应,环境把每条响应路由到数据中声明的verifier/reward contract。对于可判定任务,verifier检查数值、单位、枚举、schema、证据、拒答条件或代码执行结果;需要语义判断的合约才调用外部judge。得到16个reward后,GRPO在同一prompt组内构造相对优势;正确且优于同组候选的token log-probability被提升,较差候选被压低。全0或全1组没有组内差异,因此v1中通常只耗费生成计算而几乎不产生策略学习信号;v2通过Dynamic Sampling减少这类group进入更新的比例。
训练更新的是语言模型,视觉与音频塔冻结。reward不是对整个答案做SFT token loss,也不会把隐藏参考答案直接喂给policy作为监督文本。隐藏参考只供verifier判断rollout。
端到端 Agent Eval 的统一口径
项目对原始基座、10 个 CPT 1.0 epoch 模型和9个 SFT v3模型执行过同一套 stage-gate-v1 Agent Eval:每模型2,000题,product-v1 工具面,temperature=0,固定 seed,每题一次确定性 rollout。所有模型使用相同 task/passages 快照;judge 使用同一 Nemotron 3 Ultra NVFP4 revision、prompt、schema和生成策略。
这项通过率衡量模型在受控 agent 环境里搜索、打开依据、调用工具、恢复错误、遵守结构和给出最终答案的综合能力。它不同于 teacher-forced token loss:较低 loss 不保证较高 Agent Eval,通过率也不等于开放世界通用能力。当前评测每题仅一次 rollout,Wilson 区间只反映题目抽样误差,不包含多次采样方差;它是阶段筛选集,不是最终私有 release holdout。
20个 0.5 epoch CPT checkpoint 没有执行这套 Agent Eval,因此对应 README 会明确留空,不能把同配方1.0 epoch模型的结果回填给0.5 epoch模型。
本项目已公开的 50 个模型 checkpoint
CPT 0.5 epoch(20)
- full-01
- full-02
- lora-01
- lora-02
- lora-03
- lora-04
- lora-05
- lora-06
- lora-07
- lora-08
- lora-09
- lora-10
- lora-11
- lora-12
- lora-13
- lora-14
- lora-15
- lora-16
- lora-17
- lora-18
CPT 1.0 epoch(10)
- top10-01-full-02-1ep
- top10-02-lora-15-1ep
- top10-03-lora-03-1ep
- top10-04-lora-04-1ep
- top10-05-lora-08-1ep
- top10-06-lora-05-1ep
- top10-07-lora-06-1ep
- top10-08-lora-01-1ep
- top10-09-lora-17-1ep
- top10-10-lora-09-1ep
SFT v3(9)
- L2--h0p5--seed20261006
- L2--h1p0--seed20261006
- L2--h2p0--seed20261006
- L5--h0p5--seed20261006
- L5--h1p0--seed20261006
- L5--h2p0--seed20261006
- F3--h0p5--seed20261006
- F3--h1p0--seed20261006
- F3--h2p0--seed20261006
RLVR(11)
- v1 local step 25 / cumulative 25
- v1 local step 50 / cumulative 50 ← 当前仓库
- v1 local step 75 / cumulative 75
- v1 local step 100 / cumulative 100
- v1 local step 125 / cumulative 125
- v2 local step 25 / cumulative 150
- v2 local step 50 / cumulative 175
- v2 local step 75 / cumulative 200
- v2 local step 100 / cumulative 225
- v2 local step 125 / cumulative 250
- v2 local step 149 / cumulative 274
这些仓库各自是独立的完整权重快照。数量50表示50个发布点,不表示50种架构。
加载与推理
需要使用支持 gemma4_unified 的 Transformers 版本:
from transformers import AutoProcessor, AutoModelForMultimodalLM
repo_id = "vosldtgbj/project-llm-rlvr-v1-step-50"
processor = AutoProcessor.from_pretrained(repo_id)
model = AutoModelForMultimodalLM.from_pretrained(
repo_id,
torch_dtype="auto",
device_map="auto",
)
Tokenizer、processor 与 chat template 应从同一仓库加载,不应擅自替换成其他 Gemma 版本。部署时应先用小批请求验证模型实现是否识别 Gemma4UnifiedForConditionalGeneration。该模型约12.48B参数;实际显存需求还取决于推理精度、KV cache、上下文长度、并发和框架实现。
对于 LoRA/RSLoRA 路线,本仓库已经是合并后的完整权重,加载方式与 Full 路线相同,不需要 PEFT adapter 参数。
适用范围、选择建议与限制
- 这些模型主要研究日文项目域知识、基于证据的问答、工具交互、结构化输出及可验证强化学习。
- CPT checkpoint 适合作为领域继续训练后的起点;SFT checkpoint 更适合直接比较指令/agent行为;RLVR checkpoint 用于研究可验证奖励对策略的影响。
- 选择 checkpoint 时应使用冻结的同口径评测。不能把 CPT loss、SFT masked loss、训练 reward 和 Agent Eval 当成同一种指标,也不能只凭训练步数断言后期 checkpoint 更好。
- 公开的 stage-gate 结果可能因公开数据、工具实现、judge或运行环境变化而无法代表新的部署条件。用于生产前应重新做目标环境评测、安全测试和人工抽检。
- 训练语料以公开日文白书及公开通用数据为主。模型可能继承上游模型及训练数据中的偏差、幻觉、过度拒答、不当工具调用和语言能力不均衡。
- 模型输出不是事实保证,也不应直接作为法律、医疗、安全或其他高风险决策依据。
- 本仓库没有 optimizer 等续训状态。可以把完整权重作为新实验的初始化,但无法精确恢复原作业的动量、scheduler位置、数据游标或随机数状态。
归档、完整性与许可证
- Hugging Face repo:
vosldtgbj/project-llm-rlvr-v1-step-50 - 原始权重上传验证:通过
- 原始归档 commit:
cfc1a2d093d37723d58a043233a8cf7a7fa08087 - README 深度修订日期:2026-10-09
- 发布形式:公开 model repository
- 内容范围:weight-only 完整推理导出;不含 optimizer/trainer state
模型继续受上游 Gemma 许可与使用条款约束。训练所用公开数据还各自受其来源许可证约束;模型权重的发布不重新许可或打包这些原始数据。使用者需要自行核对当前用途、所在司法辖区及依赖项许可。
本卡片区分了“实际执行事实”“同口径评测结果”和“使用建议”。未执行的评测保持未报告,不使用推算值填补;RLVR 保存点也不把邻近训练 step 的 reward 冒充为该 checkpoint 的独立离线指标。