揭秘 Marin iceball-micro:6 个阶段一条命令跑通的轻量级后训练完整指南
【免费下载链接】marinOpen-source framework for the research and development of foundation models.项目地址: https://gitcode.com/GitHub_Trending/ma/marin
Marin iceball-micro 是开源基础模型训练框架 Marin 内置的一个轻量级后训练实验:它用一条命令,把「预训练 → 对话微调(SFT)→ GRPO 强化学习 → 双评测」整条后训练链路跑通。本文将带你完整解析这份仅 500 行的实现,看它是如何用最少的资源验证一整套基础模型后训练流程的。
🧊 什么是 iceball-micro?
一句话概括:iceball-micro 是一张Marin 实验图(artifact graph),它把 Qwen3-0.6B 架构的模型从零随机初始化,依次走完以下环节,每个环节都产出一个可检查的制品:
| 阶段 | 做什么 | 关键参数 |
|---|---|---|
fineweb | 切取 FineWeb-Edu 固定前缀(4096 行)并分词 | 512 序列长度 |
pretrain | 从零预训练 Qwen3-0.6B(约 6 亿参数) | 16 步,batch 32,lr 3e-4 |
sft | 用 No Robots 数据集做对话微调 | 8 步,lr 1e-5 |
gsm8k | 将 GSM8K 题目转成 RL 环境所需的 parquet | 1024 训练 / 128 验证 |
rl | 通过 MarinSkyRL 跑 GRPO 强化学习 | 8 步,每 prompt 4 采样 |
evaluation | 用 Evalchemy + Harbor 双引擎冒烟评测 | gsm8k-smoke、aime-smoke |
它的核心思想非常「Marin」:不追求模型效果,而是用最小的可复现规模,验证整条链路的每一处交接——预训练权重如何喂给 SFT、SFT 导出如何被 RL 消费、RL 策略如何被评测服务加载。
上图展示的是 Marin 8B 模型的多阶段训练时间线。iceball-micro 正是这种「阶段化流水线」思路的微缩版:每个阶段是图中的一个节点,依赖关系自动拓扑排序执行。
⚙️ 核心实现解析
全部实现集中在 iceball_micro.py,核心入口是 build_workflow() 函数,它用 5 个步骤组装出完整工作流:
1️⃣ 数据物化与分词
write_fineweb_slice() 用 DuckDB 流式读取固定 commit 的 FineWeb-Edu parquet,只取前 4096 行写成 JSONL;write_gsm8k_parquet() 则把 GSM8K 题目解析出####后的最终答案,转成带reward_spec的 SkyRL 类型化 parquet——奖励函数是规则精确匹配,无需额外判题模型。
2️⃣ 从零预训练
ICEBALL_QWEN3_CONFIG 定义了 28 层、1024 隐维的 Qwen3-0.6B 架构。预训练仅 16 个优化器步(4×GB200 GPU、batch 32),Adam 优化器配余弦学习率与 z-loss 正则。注意它是随机初始化而非加载预训练权重——这正是「实验」而非「产品」。
3️⃣ 对话微调(SFT)
sft_step 直接以上一步的预训练 checkpoint 为init_from,使用 HuggingFaceH4/no_robots 数据集(约 9500 条对话)和 Qwen3 聊天模板做 8 步微调。
4️⃣ GRPO 强化学习
这是最有集成价值的一步。ICEBALL_RL_CONFIG 内嵌了完整 SkyRL 训练配置:GRPO 优势估计 + KL 正则、FSDP2 策略、vLLM 异步推理引擎。特别值得注意的是 SkyRLRolePlan:策略与推理引擎分布在两个独立节点上,目的是让这次小规模运行就演练更大 RL 任务的多机交接拓扑。
5️⃣ 双引擎评测
eval_step 把 RL 产出的策略模型只服务一次,同时交给 Evalchemy(gsm8k-smoke)和 Harbor(aime-smoke)两套独立评测框架。由于模型是随机初始化的迷你模型,得分为 0 是预期行为——验证的是链路而非能力。
📊 真实跑分:一个阶段的 loss 曲线
在 W&B 记录 中可以看到每次实验的完整指标。下图是 Marin 8B 模型在 W&B 上的训练 loss 曲线(log 坐标),展示了同一框架在不同规模下的训练监控方式——iceball-micro 的每一步同样都会汇报 loss、tokens/s 与 MFU:
而下图展示训练 loss 与验证 loss 的对比形态(蓝为 train、橙为 eval)。iceball-micro 这类短跑实验正是用这种「快速收敛信号」来确认数据管线、tokenizer 和训练循环没有接错:
🚀 如何运行 iceball-micro
前置条件:克隆并安装 Marin(依赖用 uv 管理,外部 RL 运行时 MarinSkyRL 通过独立锁文件固定版本):
git clone https://gitcode.com/GitHub_Trending/ma/marin cd marin基本用法(三种模式,见 模块文档字符串):
# 1. 只打印完整实验图(不分配 GPU,推荐先跑这个) python -m experiments.post_training.iceball_micro --version 2026.08.01 # 2. 端到端完整运行(fineweb → pretrain → sft → gsm8k → rl → evaluation) python -m experiments.post_training.iceball_micro --version 2026.08.01 --run # 3. 只运行到某个阶段,其依赖自动包含 python -m experiments.post_training.iceball_micro --version 2026.08.01 --stage rl --run在 Iris 集群上运行(从 CPU 协调器提交,GPU 任务在cw-us-east-08a集群的 2×4 GB200 上执行):
uv run iris --cluster=cw-us-east-08a job run --no-wait \ -e DAYTONA_API_KEY "$DAYTONA_API_KEY" \ -- python -m experiments.post_training.iceball_micro --version 2026.08.02 --run资源需求一览(来自 build_workflow):
- 数据步骤:4 CPU / 32 GB 内存(无需 GPU)
- 预训练 / SFT / RL:4×GB200(RL 为 2 节点 × 4 GPU)
- 评测:1×GB200
每个阶段产出的 checkpoint、导出和评测记录都会持久化到对象存储,失败阶段可以安全重试、复用已完成的上游制品——这正是实验图(artifact graph)相比一次性脚本的价值所在。
🔍 关键文件导航
| 文件 | 作用 |
|---|---|
| experiments/post_training/iceball_micro.py | 实验主体,全部 6 阶段定义 |
| tests/post_training/test_iceball_micro.py | 单测:验证 GSM8K 奖励 schema、数据切片、依赖链完整性 |
| experiments/evaluation/README.md | Evalchemy / Harbor 评测体系说明 |
| docs/dev-guide/forking-policy.md | 说明 iceball-micro 还是 MarinSkyRL 外部 fork 的官方端到端验证实验 |
| config/external/MarinSkyRL/uv.lock | RL 运行时版本固定 |
值得一提:iceball-micro 不只是「示例」——按 forking-policy.md 的规定,每当 MarinSkyRL fork 升级时,都要重跑这份实验作为回归门禁。它的实验日志也完整保存在 .agents/logbooks/iceball-micro.md,包括每次提交、失败重试和最终成功的完整证据链,非常值得一读。
✅ 总结
iceball-micro 是学习 Marin 后训练体系的最佳入口,它浓缩了三个核心设计理念:
- 实验即图(Graph):每个阶段都是可检查、可重试、可复用的制品节点,依赖自动拓扑执行;
- 最小可复现验证:用 4 张卡、不到 400 万 token 就能端到端跑通「预训练 → SFT → GRPO → 双评测」,把集成问题暴露在小规模上;
- 开放记录:从随机初始化到得分为 0 的评测,全过程留痕、可追溯。
如果你想在自己的项目里复刻一条类似的后训练验证链路,直接打开 iceball_micro.py 跟着 6 个阶段读一遍——这就是本文的全部答案。
【免费下载链接】marinOpen-source framework for the research and development of foundation models.项目地址: https://gitcode.com/GitHub_Trending/ma/marin
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考