一位研究者以单人方式、不依赖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编写的机器学习框架,本文同样将其作为训练后端进行测试并报告了缺陷。 |
| 梯度流仲裁器 | 一种验证测试,运行一次前向和反向传播,断言每个可训练参数都接收到有限且非零的梯度,用于检测静默训练失败。 |
| 分词器生育率 | 指每个词元平均对应的字符数,用于衡量分词器将文本分割成词元的粒度,本文发现孟加拉语中该值异常低。 |
| 每词元负对数似然 | 语言建模中常用的评估指标,表示模型对每个词元预测的负对数似然,值越低表示模型性能越好。 |
📱 每天一份 AI 前沿日报
关注公众号,每天 09:00 推送 · 不错过任何重磅