femtoGPT:Rust编写的最小GPT


femtoGPT 是最小生成预训练转换器GPT的纯 Rust 实现。

一切都是从头开始实现的,包括张量处理逻辑以及最小 GPT 架构的训练/推理代码。

对于那些对 LLM 着迷并想了解这些模型如何在非常深层次上工作的人来说,femtoGPT 是一个很好的开始。

femtoGPT 仅使用随机生成库 ( rand/ rand-distr)、数据序列化库 ( serde/bincode用于保存/加载已经训练好的模型) 和并行计算库 ( rayon)。
femtoGPT 非常慢,因为大多数原始操作(例如矩阵乘法)都是以最简单的方式实现的。
使用梯度检查方法检查梯度的正确性,尽管某些层仍然很可能被错误地实现。(例如,我不确定我的 LayerNorm 是否没有错误?)

帮助! 如果您有一台配备大量 CPU 的计算机,并且您不介意运行 femtoGPT 几个小时/几天,那么您可以帮助这个项目取得巨大的成功!

用法
简单!您只需要将要训练 GPT 模型的文本放在 .inside 上 dataset.txt。确保它有少量独特的字符!(例如,当前数据集只使用了 65 个不同的唯一字符!)

然后你需要运行:
cargo run --release

它将开始训练模型并将训练数据放入train_data 目录中。您可以停止训练,稍后再继续!

输出样本
在莎士比亚数据库上训练数小时后,在 300k 参数模型上,输出如下:

LIS:
Tore hend shater sorerds tougeng an herdofed seng he borind,
Ound ourere sthe, a sou so tousthe ashtherd, m se a man stousshan here hat mend serthe fo witownderstesther s ars at atheno sel theas,
thisth t are sorind bour win soutinds mater horengher

这很糟糕,但从好的方面来看,它似乎已经能够生成易于发音的单词。