在Rust中端到端训练语言模型
arXiv:2609.25008v1 公告类型: 新论文 摘要: 我在 Rust 中端到端地预训练了一个语言模型 —— 独立完成,没有团队,没有 PyTorch,并且在训练路径中完全没有 Python —— 花费了 164 美元租用的 GPU 时间。
我将其报告为一项成就,而不是一项推荐:更有用的贡献是针对 2026 年作为训练(而非推理)后端的两个领先的 Rust ML 框架 Candle 和 Burn 的一项经过测量的失败分类学。
我记录了五个 Candle 的缺陷,包括无声地不产生梯度的融合内核,以及三个 Burn 的缺陷,包括速度约为理论 GPU 吞吐量 3% 的反向传播,以及在数十亿参数规模下在训练中途发生段错误的内核融合路径。
每一个缺陷都通过了普通的损失曲线检查;没有一个发出自我警报。我描述了捕获这六个无声失败的验证准则,其核心是一个梯度流仲裁器:一项运行一个前向/反向传播并断言每个可训练参数都收到有限的、非零梯度的测试,该测试可推广到任何框架。
经过训练的模型(约 0.4B 参数,孟加拉语优先)表现出很强的孟加拉语语言建模信号 —— 每个 token 的负对数似然为 0.93,而随机初始化的孪生模型为 12.60 —— 同时在英语常识多项选择上得分为随机猜测水平,这是一个刻意保持较小规模、以孟加拉语为主的预算(约 20 亿个 token,54.6 小时,一块租用的 H100)的预期结果。
我还报告了孟加拉文字中的分词器丰富度陷阱:朴素的字节级分词将孟加拉语压缩到大约每 token 1.4 个字符,而英语则是 3.9 个,无声地颠倒了语料库的语言平衡;修复该问题后达到了约 4.1。
据我所知,这是文献中记录的首次纯 Rust 端到端 LM 预training 运行之一。在这次运行之后,我将训练转移到了 PyTorch,并保留 Rust 用于端侧服务:就我而言,Rust 还不具备训练语言模型的竞争力,尽管它可能是一个提供服务的好地方。
内容聚合自第三方公开来源,AI 解读由「认知」生成,仅供参考。