单人花164美元在Rust里从零训出0.4B语言模型,还揪出Candle和Burn六个静默训练缺陷!
Training a Language Model End-to-End in Rust: An Experience Report
arXiv CL (cs.CL) 重要 开源论文方法算力 🕐 今天 12:00

📖 AI 总结

一位研究者以单人方式、不依赖PyTorch和Python,仅用164美元租用GPU算力,在Rust中完成了语言模型的端到端预训练,并据此撰写了一份经验报告。文章的核心贡献并非这一成果本身,而是一份针对Candle和Burn两大Rust机器学习框架作为训练后端的失败分类:作者记录了Candle的五个缺陷(包括融合核静默不产生梯度)和Burn的三个缺陷(包括反向传播吞吐仅为理论值约3%、核融合路径在数十亿参数规模下训练中途段错误),且这些问题均能通过常规损失曲线检查而不被发现。为此作者提出以“梯度流仲裁器”为核心的验证方法,通过单次前向/反向传播断言每个可训练参数都获得有限非零梯度。所训练模型约0.4B参数、以孟加拉语为主,每token负对数似然为0.93(随机初始化对照为12.60),但在英语常识选择题上仅达随机水平,符合其约20亿token、54.6小时、单张H100的小规模预算预期。作者还报告了孟加拉文脚本中的分词器“生育率陷阱”:朴素字节级分词使孟加拉语降至约每token 1.4字符,而英语为3.9,悄然逆转了语料语言平衡,修复后达到约4.1。作者认为这是首批纯Rust端到端预训练记录之一,但结论是:就训练而言Rust尚不具备竞争力,更适合用于设备端推理服务。

🔑 关键词速览

Candle一个用Rust编写的机器学习框架,本文将其作为训练后端进行测试并报告了多个缺陷。
Burn另一个用Rust编写的机器学习框架,本文同样将其作为训练后端进行测试并报告了缺陷。
梯度流仲裁器一种验证测试,运行一次前向和反向传播,断言每个可训练参数都接收到有限且非零的梯度,用于检测静默训练失败。
分词器生育率指每个词元平均对应的字符数,用于衡量分词器将文本分割成词元的粒度,本文发现孟加拉语中该值异常低。
每词元负对数似然语言建模中常用的评估指标,表示模型对每个词元预测的负对数似然,值越低表示模型性能越好。
infoAI 公众号二维码

📱 每天一份 AI 前沿日报

关注公众号,每天 09:00 推送 · 不错过任何重磅