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: |
这很糟糕,但从好的方面来看,它似乎已经能够生成易于发音的单词。