西风 发自 凹非寺
量子位 | 公众号 QbitAI
100美元成本、8000行代码纯手搓克隆ChatGPT!
特斯拉前AI总监、OpenAI创始成员、宣布全职搞教育的AI大神Andrej Karpathy(卡帕西)沉寂了好久,终于终于终于来上新课了!
新作nanochat,被其本人称作是写得最“精神错乱”放飞自我的作品之一。
它是一个极简的、从零开始构建的全栈训练/推理pipeline,用最少量依赖的单一代码库实现了简易版ChatGPT。
只要你启动一台云GPU服务器,运行一个脚本,最快只要4小时,就能在类似ChatGPT的网页界面与自己训练的大语言模型对话。

整体表现指标如下:

训练约12小时后,模型在CORE指标上的表现即可超越GPT-2。
若进一步将成本提升至约1000美元(训练约41.6小时),模型表现显著提升,能解决简单的数学/代码问题,还能做多项选择题。
举个具体的例子:一个深度为30的模型训练24小时后(相当于GPT-3 Small 125M的算力消耗,仅为GPT-3的千分之一),在MMLU数据集上可达到40多分,在ARC-Easy数据集上达70多分,在GSM8K数据集上达20多分。
卡帕西表示,他的目标是将这套完整的“强基线”技术栈整合为统一、极简、易读、可修改、易分发的代码库。
nanochat将成为LLM101n课程的压轴项目(该课程仍在开发中)。
我认为它还有潜力发展为一个研究工具框架或基准测试的工具,就像之前的nanoGPT一样。目前该项目远未完全优化(实际上存在大量可改进空间),但整体框架已足够完整,可以发布到GitHub上,后续所有模块都能在社区中进一步优化。
等来新作的网友也已彻底疯狂。项目刚发出来,GitHub Star数已飙到4.8k:

默认情况下,所有这些都会被下载到~/.cache/nanochat目录下。
下载完成后,开始训练分词器——它负责在字符串与符号码本(codebook)序列之间进行双向转换。默认情况下,训练的词汇表大小是2¹⁶= 65,536个tokens(这是个不错的数字),其中部分tokens会被保留作为特殊tokens(供后续聊天模式使用)。训练集包含2B字符,训练仅需约1分钟。
训练算法与OpenAI使用的完全一致(regex splitting, byte-level BPE)。想了解更多信息,可以看卡帕西关于tokenization技术的视频讲解。
训练完成后可以评估这个分词器:

评估结果显示,实现了约4.8的压缩比(即原始文本中平均4.8个字符压缩为1个token),还可以看到与GPT-2、GPT-4分词器的对比结果。
相比GPT-2(拥有50257个tokens),在压缩文本方面全面更优,仅在数学内容上稍逊一筹:

随着时间的推移,bpb下降是好的迹象(说明模型能更准确地预测下一个token)。此外,CORE分数在上升。
除了这些近似的指标,还可以更全面地评估模型:

像这样显示的token是特殊token,遵循OpenAI特殊token的格式。中期训练阶段对模型的多种适配非常有用:
模型学习与多轮对话相关的特殊token(除了用于分隔文档的token,基础模型预训练期间没有这些token)。模型适应对话的数据分布,而非互联网文档的数据分布。对我们来说非常重要的一点是,必须教会模型做多项选择题,因为在这么小的模型规模下,模型无法从随机的互联网数据中学会这一点。具体而言,模型必须学会将几个选项与几个字母(如ABCD)关联起来,然后输出正确选项的算法。通过混合10万道来自MMLU辅助训练集的多项选择题来实现这一点。需要明确的是,问题不在于模型没有相关知识,而在于它不理解多项选择题的运作方式,无法将知识展现出来。这很重要,因为许多常见的模型评估(如MMLU)都采用多项选择题的形式。你可以教会模型使用各种工具。对我们来说,需要通过在特殊token 和之间放入Python命令,来教会模型使用Python解释器。这对之后解决GSM8K问题会很有用。在中期训练期间,你还可以针对许多其他适配进行训练,例如上下文长度扩展(尚未探索)。中期训练混合数据默认是这样的:

chat_web脚本会使用FastAPI来提供Engine服务。要确保正确访问它,比如在Lambda上,使用你所在节点的公网IP,后面加上端口,例如http://209.20.xxx.xxx:8000/等等。
那看起来会很棒,大概是这样的:

代码会察觉到这一变化并自动进行补偿,它会通过2次梯度累积循环来达到目标批处理量0.5M。要训练depth=30的模型,需要进一步降低设置:

依此类推。欢迎大家去阅读代码,卡帕西尽力让代码保持易读性,添加了注释,代码整洁且易于理解。
当然,你也可以把所有内容打包,去询问你喜欢的大语言模型,或者更简单的是,使用Devin/Cognition的DeepWiki来对这个代码仓库提问。只需把代码仓库的URL从github.com改成deepwiki.com即可,比如 nanochat DeepWiki。
就是这样,调优整个流程的任意部分,重新运行,然后享受其中的乐趣吧!
AI界超高人气专注于教育的大牛卡帕西曾任特斯拉AI主管,之后去了OpenAI,去年2月从OpenAI离职。
他在整个AI界拥有超高的人气,很大一部分来自于他的课程。
包括他自己的早期博客文字分享和后来的一系列Youtube视频教程,他还与李飞飞合作开设的的斯坦福大学首个深度学习课程CS231n《卷积神经网络与视觉识别》。

今天的不少学者和创业者,都是跟着他入门的。
卡帕西对教育的热情,甚至可以追溯到学生时期在网上教大家玩魔方。

去年7月,从OpenAI离职的卡帕西突然官宣创业,搞了一家AI原生的新型学校——Eureka Labs。
怎么理解AI原生?
想象一下与费曼一起学习高质量教材,费曼会在每一步中1对1指导你。
不幸的是,即使每个学科都能找到一位像费曼这样的大师,他们也无法分身亲自辅导地球上的80亿人。
但AI可以,而且AI有无限的耐心,精通世界上所有的语言。
所以卡帕西要打造“教师 人工智能的共生”,可以在一个通用平台上运行整个课程。
如果我们成功了,任何人都将易于学习任何东西,扩大教育这个概念本身的“范围”和“程度”。
Eureka Labs首个产品,也是首门课程LLM101n。
手把手带你构建一个类似ChatGPT的故事生成大模型,以及配套的Web应用程序。

GitHub repo:https://github.com/karpathy/nanochat详细指南:https://github.com/karpathy/nanochat/discussions/1参考链接:https://x.com/karpathy/status/1977755427569111362
— 完 —
量子位 QbitAI · 头条号签约
关注我们,第一时间获知前沿科技动态
相关文章









猜你喜欢
成员 网址收录40418 企业收录2986 印章生成263572 电子证书1157 电子名片68 自媒体91237