一张 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 平替——它的价值在「每参数能力密度」而不是绝对能力。
资源链接
- GitHub:https://github.com/harrrshall/barunlm-35m
- HuggingFace 权重:https://huggingface.co/harrrshall/BarunLM-35M
- 训练配方完整解读(架构设计、数据、权衡):https://harrrshall.github.io/barunlm-35m/blog/
一张卡的训练预算就能做出有竞争力的模型,这种「复古的快乐」正在成为小模型研究的新常态。下一个 100M 以内的纪录,也许就藏在你的单卡实验里。
