35M 参数暴打 230M:单卡 H200 训练的最强小模型 BarunLM-35M 拆解与 10 分钟复现

一张 H200,5.7B token,35M 参数,九项零样本基准平均分 41.01%——直接干翻 6.55 倍参数量的 Liquid LFM2.5-230M-Base,还顺带赢了 GPT-2 125M 和 Pythia-160M。独立开发者 Harshal Singh 开源了 BarunLM-35M,声称这是「参数量小于 100M 的世界最好模型」,权重、训练代码、评测脚本全部 Apache 2.0 放出。

这不是刷榜噱头:模型架构里塞进了 DeepSeek、Kimi 同款思路(局部注意力、QK Norm、Partial RoPE),还有自研的「可学习残差选择器」。对小模型研究、教学、本地原型开发来说,这是一份可以完整跑通的参考实现。

核心思路拆解:参数效率从哪来

BarunLM-35M 的改进可以浓缩成三个关键词:混合注意力节奏、选择性残差路由、容量对齐的训练预算

1. 3:1 局部/全局注意力节奏

标准全局注意力计算量随序列长度平方增长,但语言里大量依赖其实发生在相邻 token 之间。BarunLM 的做法是:连续 3 层只看前后 256 个 token 的局部注意力,第 4 层做一次全局信息交换。全局注意力从「每一层都要付的代价」变成「周期性通信层」——省算力,又不切断长距离信息流。这个 3:1 的节奏和 DeepSeek、Kimi 等前沿模型的稀疏注意力思路一脉相承。

2. 可学习残差选择器(每 4 层一个)

小模型网络容量有限,每一层都珍贵:早期形成的有效特征可能被后续计算覆盖,而模型没有冗余去重新学习。BarunLM 每隔 4 层设置一个轻量凸选择器,在「块输入」和「变换后状态」之间决定保留哪些信息,相当于给每个 4 层小组一条学习出来的「保真通道」,参数开销可以忽略。

3. 容量对齐训练:162.5 token/参数

5.7B token ÷ 35M 参数 ≈ 162.5 token/参数。数据来自 FineWeb-Edu、Cosmopedia v2、FineMath-4+、DCLM、CodeSearchNet Python、CodeParrot Clean 的混合(教育文本 + 合成数据 + 数学 + 代码),全程去重。最后 4B token 用 Muon 优化器在单张 H200 上完成,共 40,690 步。

评测也讲究:用 LM Evaluation Harness 0.4.12 做九项零样本评测,先用 13-token 精确匹配扫描全量训练语料,剔除 1,854 条污染样本后再统一对比,并对 BarunLM 与 LFM2.5 的差值做了 10,000 次 bootstrap 重采样,置信区间 [+0.92, +2.71] 个百分点。

关键代码与配置:10 分钟跑起来

先跑推理,验证模型不是 PPT 选手:

# 1. 克隆仓库
git clone https://github.com/harrrshall/barunlm-35m.git
cd barunlm-35m

# 2. 建环境
python -m venv .venv
source .venv/bin/activate
pip install -e .

# 3. 生成文本(自动下载 HF 权重并校验 SHA-256,有 CUDA 自动用)
python examples/generate.py \
  --prompt "The future of efficient language models is" \
  --max-new-tokens 48 \
  --temperature 0.8
# 想要确定性输出:--temperature 0

只看权重也可以:

hf download harrrshall/BarunLM-35M --local-dir BarunLM-35M
sha256sum -c BarunLM-35M/SHA256SUMS

核心架构配置(barun_config.json 实测值):

{
  "parameters": 35072768,        // 35M
  "layers": 12,
  "hidden_size": 448,
  "num_attention_heads": 7,      // 7 个 Q 头
  "num_key_value_heads": 1,      // 1 个共享 KV 头(GQA)
  "local_window": 256,           // 局部注意力窗口
  "attention_rhythm": "3:1",     // 3 层局部 + 1 层全局
  "position_encoding": "50% partial RoPE",
  "ffn_width": 1228,
  "residual_selector_every": 4,  // 每 4 层一个选择器
  "vocab_size": 16384,           // byte-level BPE
  "context_length": 2048,
  "tie_embeddings": true         // 输入/输出权重绑定
}

想复刻训练(需要 H200 级算力):最终 4B token 阶段用 Muon 优化器,峰值 LR 1e-4、weight decay 0.1、batch size 48、40,690 步。注意模型是纯 base model,没有指令微调,要按续写模型的方式 prompt。

实践建议

  • 本地原型开发:35M 参数 + 2K 上下文,单张消费级显卡甚至 CPU 都能跑推理,适合做文本续写实验和教学演示,官方明确不建议用于医疗/法律/金融等高风险场景。
  • 研究参考:如果你想训自己的小模型,直接抄这三板斧——3:1 混合注意力(省 40%+ 注意力算力)、残差选择器(保特征)、容量对齐预算(162.5 token/参数是个好起点)。GQA、Partial RoPE、QK Norm、bounded SwiGLU、权重绑定这些「稳定小模型优化」组合也是现成的。
  • 复现评测:仓库里 benchmark_results.json 含完整任务分、置信区间和证据哈希,想自己跑九项基准直接对标。
  • 注意边界:base model 没有指令跟随能力,事实性远不如大模型,别拿它当 ChatGPT 平替——它的价值在「每参数能力密度」而不是绝对能力。

资源链接

一张卡的训练预算就能做出有竞争力的模型,这种「复古的快乐」正在成为小模型研究的新常态。下一个 100M 以内的纪录,也许就藏在你的单卡实验里。

滚动至顶部