GPT-4里套娃LLaMA 2!OpenAI创始成员周末爆改「羊驼宝宝」,GitHub一日千星

本文主要是介绍GPT-4里套娃LLaMA 2!OpenAI创始成员周末爆改「羊驼宝宝」,GitHub一日千星,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

梦晨 发自 凹非寺
量子位 | 公众号 QbitAI

大神仅花一个周末训练微型LLaMA 2,并移植到C语言

推理代码只有500行,在苹果M1笔记本上做到每秒输出98个token

作者是OpenAI创始成员Andrej Karpathy,他把这个项目叫做Baby LLaMA 2(羊驼宝宝)。

7eaba5f02aef1e7cd7cae587875d543b.png

虽然它只有1500万参数,下载下来也只有58MB,但是已经能流畅讲故事。

f4544c73130d8290a0487af80e421842.png

所有推理代码可以放在C语言单文件上,没有任何依赖,除了能在笔记本CPU上跑,还迅速被网友接力开发出了各种玩法。

llama.cpp的作者Georgi Gerganov搞出了直接在浏览器里运行的版本。

a83ed72d8bff24e7f90625ca02ceb7d4.png

提示工程师Alex Volkov甚至做到了在GPT-4代码解释器里跑Baby LLaMA 2。

f67bf040d4d4ccc1bb8fadad691eb138.png

大模型套娃小模型,成了。

羊驼宝宝诞生记

据Karpathy分享,做这个项目的灵感正是来自llama.cpp。

训练代码来自之前他自己开发的nanoGPT,并修改成LLaMA 2架构。

推理代码直接开源在GitHub上了,不到24小时就狂揽1500+星。

6ea195c1e74fd33afbf7ca7939865eb3.png

训练数据集TinyStories则来自微软前一阵的研究。

2023新视野数学奖得主Ronen Eldan、2023斯隆研究奖得主李远志联手,验证了1000万参数以下的小模型,在垂直数据上训练也可以学会正确的语法、生成流畅的故事、甚至获得推理能力。

4f6118e6e69da17f3d06e2da8bda3ef9.png

此外,开发过程中还有一个插曲。

Karpathy很久不写C语言已经生疏了,但是在GPT-4的帮助下,还是只用一个周末就完成了全部工作。

71fa62a857f7ad50e1d000ecccf0a7d5.png

对此,英伟达科学家Jim Fan评价为:现象级

5bb39fd2039417fa2456c712ce5a8c66.png

最初,在CPU单线程运行、fp32推理精度下,Baby LLaMA 2每秒只能生成18个token。

在编译上使用一些优化技巧以后,直接提升到每秒98个token。

13273b6bddf2441f011e632b4377eb98.png

优化之路还未停止。

有人提出,可以通过GCC编译器的-funsafe-math-optimizations模式再次提速6倍

985e566749d6a7f793533d9d4662e8bc.png

除了编译方面外,也有人提议下一步增加LoRA、Flash Attention等模型层面流行的优化方法。

742709ce8fab8a9a9b967d22ee2db571.png

Baby LLaMA 2一路火到Hacker News社区,也引发了更多的讨论。

f16729c2b34b0337ebc3aca187d4bb46.png

有人提出,现在虽然只是一个概念验证,但本地运行的语言模型真的很令人兴奋。

虽然无法达到在云端GPU集群上托管的大模型的相同功能,但可以实现的玩法太多了。

68cfaa4e56c256b58bfedbf7705a3a34.png

在各种优化方法加持下,karpathy也透露已经开始尝试训练更大的模型,并表示:

70亿参数也许触手可及。

cef220d7ff69551fbe88b569f254e23d.png

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

这篇关于GPT-4里套娃LLaMA 2!OpenAI创始成员周末爆改「羊驼宝宝」,GitHub一日千星的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/470183

相关文章

c++ 类成员变量默认初始值的实现

《c++类成员变量默认初始值的实现》本文主要介绍了c++类成员变量默认初始值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录C++类成员变量初始化c++类的变量的初始化在C++中,如果使用类成员变量时未给定其初始值,那么它将被

github打不开的问题分析及解决

《github打不开的问题分析及解决》:本文主要介绍github打不开的问题分析及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、找到github.com域名解析的ip地址二、找到github.global.ssl.fastly.net网址解析的ip地址三

C++/类与对象/默认成员函数@构造函数的用法

《C++/类与对象/默认成员函数@构造函数的用法》:本文主要介绍C++/类与对象/默认成员函数@构造函数的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录名词概念默认成员函数构造函数概念函数特征显示构造函数隐式构造函数总结名词概念默认构造函数:不用传参就可以

C++类和对象之默认成员函数的使用解读

《C++类和对象之默认成员函数的使用解读》:本文主要介绍C++类和对象之默认成员函数的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、默认成员函数有哪些二、各默认成员函数详解默认构造函数析构函数拷贝构造函数拷贝赋值运算符三、默认成员函数的注意事项总结一

SpringBoot快速接入OpenAI大模型的方法(JDK8)

《SpringBoot快速接入OpenAI大模型的方法(JDK8)》本文介绍了如何使用AI4J快速接入OpenAI大模型,并展示了如何实现流式与非流式的输出,以及对函数调用的使用,AI4J支持JDK8... 目录使用AI4J快速接入OpenAI大模型介绍AI4J-github快速使用创建SpringBoot

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

4B参数秒杀GPT-3.5:MiniCPM 3.0惊艳登场!

​ 面壁智能 在 AI 的世界里,总有那么几个时刻让人惊叹不已。面壁智能推出的 MiniCPM 3.0,这个仅有4B参数的"小钢炮",正在以惊人的实力挑战着 GPT-3.5 这个曾经的AI巨人。 MiniCPM 3.0 MiniCPM 3.0 MiniCPM 3.0 目前的主要功能有: 长上下文功能:原生支持 32k 上下文长度,性能完美。我们引入了

c++的初始化列表与const成员

初始化列表与const成员 const成员 使用const修饰的类、结构、联合的成员变量,在类对象创建完成前一定要初始化。 不能在构造函数中初始化const成员,因为执行构造函数时,类对象已经创建完成,只有类对象创建完成才能调用成员函数,构造函数虽然特殊但也是成员函数。 在定义const成员时进行初始化,该语法只有在C11语法标准下才支持。 初始化列表 在构造函数小括号后面,主要用于给

如何提高 GitHub 的下载速度

如何提高 GitHub 的下载速度 文章目录 如何提高 GitHub 的下载速度1. 注册账号2. 准备好链接3. 创建仓库4. 在码云上下载代码5. 仓库更新了怎么办 一般来说,国内的朋友从 GitHub 上面下载代码,速度最大是 20KB/s,这种龟速,谁能忍受呢? 本文介绍一种方法——利用“码云”,可以大大提高下载速度,亲测有效。 1. 注册账号 去“码云”注册一

GPT系列之:GPT-1,GPT-2,GPT-3详细解读

一、GPT1 论文:Improving Language Understanding by Generative Pre-Training 链接:https://cdn.openai.com/research-covers/languageunsupervised/language_understanding_paper.pdf 启发点:生成loss和微调loss同时作用,让下游任务来适应预训