用纯 Rust 端到端预训练语言模型:一份经验报告
独立开发者用 Rust 端到端预训练约 0.4B 参数 Bangla 优先模型,成本 164 美元,同时系统记录 Can…
一位独立开发者公开了一份 arXiv 经验报告(arXiv:2609.25008):在没有团队、没有 PyTorch、没有 Python 介入训练路径的前提下,用纯 Rust 端到端预训练了一个约 0.4B 参数、Bangla(孟加拉语)优先的语言模型,总成本仅 164 美元。作者明确表示这被视为一项「成就」而非推荐,更核心的贡献是一份针对 Rust ML 框架的系统性失败分类与验证纪律。
训练规模与成本
- 模型:约 0.4B 参数,Bangla 优先的因果语言模型。
- 算力:单张租用 H100,训练 54.6 小时。
- 数据:约 20 亿 tokens,Bangla 权重较高。
- 总成本:164 美元。
- 评估:Bangla 上的 per-token 负对数似然(NLL)为 0.93,而相同架构、随机初始化的孪生模型为 12.60,说明模型确实学到了 Bangla 语言信号;英文常识多选题得分处于随机水平,这在小预算、Bangla 偏向的数据配比下属于预期结果。
Rust ML 框架的失败分类
作者在训练中分别触发了 Candle 和 Burn 的多个静默缺陷,并指出它们都通过了普通的 loss 曲线检查,问题并不会自己暴露。
- Candle(5 项缺陷):包含融合内核在某些条件下「静默不产生梯度」等;
- Burn(3 项缺陷):包含反向传播吞吐仅约 3% 理论 GPU 性能,以及在数十亿参数规模下训练途中段错误的内核融合路径。
报告将这些缺陷归纳为一份「失败分类」,为后续考虑使用 Rust 做训练的人提供了具体的避坑清单。
梯度流仲裁:一种可推广的验证方法
针对上述静默失败,作者提出了一种核心验证纪律——梯度流仲裁(gradient-flow arbiter):
- 跑一次前向/反向传播;
- 断言每一个可训练参数都收到了有限且非零的梯度;
- 任何不满足条件的参数,都意味着对应路径存在静默缺陷。
凭借这一套检查,作者在实验中捕获到了 6 处静默失败。论文强调该方法可推广到任何框架,不依赖 Rust。
Bangla 分词器的「fertility 陷阱」
报告还记录了一个具体的语言学陷阱:在 Bengali 脚本下,朴素的字节级分词器把 Bangla 压缩到约 1.4 字符/token,而英文是 3.9 字符/token——这会静默地反转语料中 Bangla 与英文的实际比例。修复后 Bangla 的字符/token 比提升至约 4.1,使数据配比恢复正常。
作者结论
跑完这次实验后,作者将训练流程迁回 PyTorch,仅把 Rust 保留用于设备端推理。作者给出的判断是:在其亲手实验的范围内,Rust 现阶段还不是一个有竞争力的语言模型训练平台,但可能是用于服务(serving)的不错选择。这被作者标注为「截至 2026 年的实测结论」,而非对 Rust ML 生态的终局评价。
