今天小编分享的科学经验:GPT-4里套娃LLaMA 2!OpenAI创始成员周末爆改「羊驼宝宝」,GitHub一日千星,欢迎阅读。
大神仅花一个周末训练微型LLaMA 2,并移植到C 语言。
推理代码只有 500 行,在苹果M1 笔记本上做到每秒输出 98 个 token。
作者是 OpenAI 创始成员Andrej Karpathy,他把这个项目叫做Baby LLaMA 2(羊驼宝宝)。
所有推理代码可以放在C 语言单檔案上,没有任何依赖,除了能在笔记本 CPU 上跑,还迅速被网友接力开发出了各种玩法。
llama.cpp 的作者Georgi Gerganov搞出了直接在浏览器里运行的版本。
提示工程师Alex Volkov甚至做到了在 GPT-4 代码解释器里跑Baby LLaMA 2。
大模型套娃小模型,成了。
据 Karpathy 分享,做这个项目的灵感正是来自 llama.cpp。
训练代码来自之前他自己开发的 nanoGPT,并修改成 LLaMA 2 架构。
推理代码直接开源在 GitHub 上了,不到 24 小时就狂揽 1500+ 星。
训练数据集TinyStories 则来自微软前一阵的研究。
2023 新视野数学奖得主 Ronen Eldan、2023 斯隆研究奖得主李远志联手,验证了1000 万参数以下的小模型,在垂直数据上训练也可以学会正确的语法、生成流畅的故事、甚至获得推理能力。
此外,开发过程中还有一个插曲。
Karpathy 很久不写 C 语言已经生疏了,但是在 GPT-4 的帮助下,还是只用一个周末就完成了全部工作。
对此,英伟达科学家 Jim Fan 评价为:现象级。
最初,在 CPU 单线程运行、fp32 推理精度下,Baby LLaMA 2 每秒只能生成 18 个 token。
在编译上使用一些优化技巧以后,直接提升到每秒 98 个 token。
优化之路还未停止。
有人提出,可以通过 GCC 编译器的 -funsafe-math-optimizations 模式再次提速 6 倍。
除了编译方面外,也有人提议下一步增加 LoRA、Flash Attention 等模型层面流行的优化方法。
Baby LLaMA 2 一路火到 Hacker News 社区,也引发了更多的讨论。
有人提出,现在虽然只是一个概念验证,但本地运行的语言模型真的很令人兴奋。
虽然无法达到在云端 GPU 集群上托管的大模型的相同功能,但可以实现的玩法太多了。
在各种优化方法加持下,karpathy 也透露已经开始尝试训练更大的模型,并表示:
70 亿参数也许触手可及。
GitHub:
https://github.com/karpathy/llama2.c
在浏览器运行 Baby LLaMA 2:
https://ggerganov.com/llama2.c
参考链接:
[ 1 ] https://twitter.com/karpathy/status/1683143097604243456
[ 2 ] https://twitter.com/ggerganov/status/1683174252990660610
[ 3 ] https://twitter.com/altryne/status/1683222517719384065
[ 4 ] https://news.ycombinator.com/item?id=36838051