前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >特斯拉AI总监用300行代码实现“迷你版GPT”,上线GitHub三天收获3.3k星

特斯拉AI总监用300行代码实现“迷你版GPT”,上线GitHub三天收获3.3k星

作者头像
量子位
发布于 2023-03-10 07:10:19
发布于 2023-03-10 07:10:19
49010
代码可运行
举报
文章被收录于专栏:量子位量子位
运行总次数:0
代码可运行
晓查 发自 凹非寺  量子位 报道 | 公众号 QbitAI

“GPT并不是一个复杂的模型。”

前OpenAI科学家、现任特斯拉AI总监的Andrej Karpathy在自己的GitHub项目里这样写道。

Karpathy这样说是有底气的,因为他自己只用大约300行PyTorch代码就实现了一个“小型GPT”——minGPT。该项目上线3天以来,已经收获了3.3k星。

“万能”的NLP模型GPT-3这一个月来已经刷爆社交网络,不过1750亿个参数对算力的超高要求也让人望而却步。

但是在Karpathy看来,GPT所做的事情就是将一个索引序列放入一个transformer块序列中,并得出下一个索引的概率分布。其余的复杂部分只是通过巧妙地进行批处理让训练更高效。

谈到为何要开发minGPT,Karpathy本人在项目文档里说,他是为了让GPT做到小巧、简洁、可解释且具有教育意义,因为当前大多数可用的GPT工具都有些庞大。

如果原版的GPT是一艘巨型战舰,那么minGPT就是一艘快艇。小快灵是minGPT的特点,你不能指望它去“打仗”。minGPT的作用是教育目的,让你熟悉GPT的原理。

现在,minGPT已经能够进行加法运算和字符级的语言建模,更强大的功能还在进一步开发中。

minGPT项目内容

minGPT实现大约包含300行代码,包括样板代码和完全不必要的自定义因果自注意力模块。

minGPT的核心库包含两个重要的文件:

  • mingpt/model.py包含实际的Transformer模型定义
  • mingpt/trainer.py是独立于GPT的训练模型的PyTorch样板

为了防止初学者犯难,Karpathy在repo中还随附3个Jupyter Notebook文件,教你如何使用这个库来训练序列模型:

  • play_math.ipynb用于训练专注于加法的GPT(这部分是受GPT-3论文中加法部分的启发);
  • play_char.ipynb用于将GPT训练为任意文本上的字符级语言模型,类似于作者以前的char-rnn,但它使用的是Transformer而不是RNN;
  • play_words.ipynb是一个字节对编码(BPE)版本,目前尚未完成。

有了这些代码并不意味着你能立刻复现出OpenAI的几个GPT预训练模型。

Karpathy表示,使用BPE编码器、分布式训练以及fp16,才可能复现GPT-1/GPT-2的结果,不过他本人还没有尝试过。(Karpathy在这句话后面写着$$$,可能是没钱吧。)

至于现在最火的GPT-3,可能无法实现,因为Karpathy认为是它不适合GPU显存,而且需要更精细的模型并行处理。

minGPT的API用法示例如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# you're on your own to define a class that returns individual examples as PyTorch LongTensors
from torch.utils.data import Dataset
train_dataset = MyDataset(...)
test_dataset = MyDataset(...)

# construct a GPT model
from mingpt.model import GPT, GPTConfig
mconf = GPTConfig(vocab_size, block_size, n_layer=12, n_head=12, n_embd=768) # a GPT-1
model = GPT(mconf)

# construct a trainer
from mingpt.trainer import Trainer, TrainerConfig
tconf = TrainerConfig(max_epochs=10, batch_size=256)
trainer = Trainer(model, train_dataset, test_dataset, tconf)
trainer.train()
# (... enjoy the show for a while... )

# sample from the model (the [None, ...] and [0] are to push/pop a needed dummy batch dimension)
from mingpt.utils import sample
x = torch.tensor([1, 2, 3], dtype=torch.long)[None, ...] # context conditioning
y = sample(model, x, steps=30, temperature=1.0, sample=True, top_k=5)[0]
print(y) # our model filled in the integer sequence with 30 additional likely integers

如果你有合适的硬件和数据集,不妨去试试吧。

关于Karpathy

提供minGPT的Andrej Karpathy今天才33岁,但已经是特斯拉的AI高级总监,负责领导自动驾驶神经网络团队。

在跳槽到特斯拉之前,他是OpenAI的科学家,主要研究计算机视觉、生成模型和强化学习中的深度学习

Karpathy在2011-2015年期间进入斯坦福大学攻读博士学位,他的导师就是李飞飞。读博期间,他发表的多篇论文都是CV领域的高引文章,还在Google、DeepMind两家公司实习过。

而且斯坦福大学的著名计算机课程CS231n就是他和李飞飞一起设计的,Karpathy不仅是该课程的助教,也是主讲人之一。

无论是当年的CS231n课程还是他的GitHub项目,都有很高的人气。如此大牛的人物,他写的GPT代码你不去看看吗?

minGPT项目地址: https://github.com/karpathy/minGPT

Andrej Karpathy个人主页: https://karpathy.ai/

本文系网易新闻•网易号特色内容激励计划签约账号【量子位】原创内容,未经账号授权,禁止随意转载。

每天5分钟,抓住行业发展机遇

如何关注、学习、用好人工智能? 

每个工作日,量子位AI内参精选全球科技和研究最新动态,汇总新技术、新产品和新应用,梳理当日最热行业趋势和政策,搜索有价值的论文、教程、研究等。

同时,AI内参群为大家提供了交流和分享的平台,更好地满足大家获取AI资讯、学习AI技术的需求。扫码即可订阅:

加入AI社群,与优秀的人交流

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态

喜欢就点「在看」吧 !

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 量子位 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
log.info异步输出是一回事儿,主要是内部会有一个ClassLoader加载,导致阻塞
log.info异步输出是一回事儿,主要是内部会有一个ClassLoader加载,导致阻塞
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
小破本也能炼GPT!300行代码搞定,GitHub获6k星,来自特斯拉前AI总监
詹士 发自 凹非寺 量子位 | 公众号 QbitAI 训练/微调中型GPT,最简单最快的库来了! 其名为:NanoGPT。 从名字就能看出是个“纳米武器”,据作者介绍,该库代码简单易读,2个仅300行代码的文件。 现已基于OpenWebText重现 GPT-2 (124M),在单个8XA100 40GB节点上,训练时间为38小时。 值得一提的是,该库发布者是前特斯拉AI总监,李飞飞高徒,Andrej Karpathy。此次发布的NanoGPT,正是他2年前MinGPT的升级版。 目前,此项目在GitHub
量子位
2023/02/28
8040
小破本也能炼GPT!300行代码搞定,GitHub获6k星,来自特斯拉前AI总监
一天star量破千,300行代码,特斯拉AI总监Karpathy写了个GPT的Pytorch训练库
GPT 系列可以说是人工智能领域「暴力美学」的代表作了。2018 诞生的 GPT,1.17 亿参数;2019 年 GPT-2,15 亿参数;2020 年 GPT-3,1750 亿参数。短短一年时间,GPT 模型的参数量就呈指数级增长。
机器之心
2020/08/20
9650
一天star量破千,300行代码,特斯拉AI总监Karpathy写了个GPT的Pytorch训练库
李飞飞高徒教你从0到1构建GPT
该内容刚发出来,在Twitter已吸引400万关注量,HackerNews上Points也破了900。
一点人工一点智能
2023/01/30
1.2K0
李飞飞高徒教你从0到1构建GPT
Python深耕之minGPT的使用
GPT(Generative Pre-Training)是OpenAI在2018年发表的一篇论文《Improving Language Understanding by Generative Pre-Training》中提出的框架,本框架通过两个阶段进行任务的实现:第一个阶段是利用语言模型进行预训练(无监督形式),第二阶段通过 Fine-tuning 的模式解决下游任务(监督模式下)。第一个阶段中其实和 Embeddings from Language Models(ELMO)模型 是类似的,区别在于GPT用的特征提取器是Transformer,ELMO用的是RNN;;ELMO使用上下文对单词进行预测,而 GPT 则只采用 Context-before 这个单词的上文来进行预测。第二阶段的下游任务在文献原文中进行了描述如下图:
一粒沙
2022/11/21
2.4K0
Python深耕之minGPT的使用
用Transformer定义所有ML模型,特斯拉AI总监Karpathy发推感叹AI融合趋势
今日,特斯拉 AI 总监、Autopilot Vision 团队领导人 Andrej Karpathy 在推特上发文,对 AI 领域正在进行中的融合(consolidation)表示惊叹。
机器之心
2021/12/13
5070
用Transformer定义所有ML模型,特斯拉AI总监Karpathy发推感叹AI融合趋势
无需写代码能力,手搓最简单BabyGPT模型:前特斯拉AI总监新作
机器之心报道 机器之心编辑部 GPT 原来这么简单? 我们知道,OpenAI 的 GPT 系列通过大规模和预训练的方式打开了人工智能的新时代,然而对于大多数研究者来说,语言大模型(LLM)因为体量和算力需求而显得高不可攀。在技术向上发展的同时,人们也一直在探索「最简」的 GPT 模式。 近日,特斯拉前 AI 总监,刚刚回归 OpenAI 的 Andrej Karpathy 介绍了一种最简 GPT 的玩法,或许能为更多人了解这种流行 AI 模型背后的技术带来帮助。 是的,这是一个带有两个 token 0/
机器之心
2023/04/11
7370
无需写代码能力,手搓最简单BabyGPT模型:前特斯拉AI总监新作
GPT迭代成本「近乎荒谬」,Karpathy 300行代码带你玩转迷你版
上周 Andrej Karpathy 发布了一个最小 GPT 实现的项目 ,短短一周就收获了4200星。
新智元
2020/08/28
1K0
GPT迭代成本「近乎荒谬」,Karpathy 300行代码带你玩转迷你版
加入最火OpenAI,特斯拉前AI总监Andrej Karpathy自宣回归
机器之心报道 机器之心编辑部 官宣回归OpenAI,特斯拉前AI高级总监Andrej Karpathy的下家定了。 刚刚,特斯拉前 AI 高级总监 Andrej Karpathy 在推特上宣布,自己将再次加入 OpenAI。 我将加入 OpenAI(再一次)。与许多人工智能领域内外的人一样,我被这家公司的工作的影响所鼓舞,我个人也从中受益良多。它未来的潜力尤其令人振奋;重新加入其中并参与建设是一件非常愉快的事情! Sam Altman 表示:欢迎回来! 距离 Karpathy 的上一次离职,已经过去了八
机器之心
2023/02/23
3280
加入最火OpenAI,特斯拉前AI总监Andrej Karpathy自宣回归
特斯拉前AI总监教你手搓GPT大模型,教学视频已出
机器之心报道 编辑:泽南 「从零开始,用代码直接写。」 说到目前最火的 AI 技术,ChatGPT 肯定位列其中。此类大语言模型(LLM)因为能从海量数据中学到知识,被认为是人工智能突破的方向,人们正在尝试用它来做各种复杂的事,甚至包括数学推理。 对于机器学习从业者来说,大模型的门槛很高:因为体量太大难以训练,很长时间里这个方向一直被大公司垄断。不过最近,简化 GPT 模型的方法越来越多了。 近日,前特斯拉 AI 高级总监、自动驾驶 Autopilot 负责人 Andrej Karpathy 发布了从零开始
机器之心
2023/03/29
7180
特斯拉前AI总监教你手搓GPT大模型,教学视频已出
速揽2500星,Andrej Karpathy重写了一份minGPT库
机器之心报道 编辑:陈萍 时隔两年,GPT的Pytorch训练库minGPT迎来更新! 作为人工智能领域「暴力美学」的代表作,GPT 可谓是出尽风头,从诞生之初的 GPT 1.17 亿参数,一路狂飙到 GPT-3 1750 亿参数。随着 GPT-3 的发布,OpenAI 向社区开放了商业 API,鼓励大家使用 GPT-3 尝试更多的实验。然而,API 的使用需要申请,而且你的申请很有可能石沉大海。 为了让资源有限的研究者也能体验一把玩大模型的乐趣,前特斯拉 AI 负责人 Andrej Karpathy 基于
机器之心
2023/03/29
3670
速揽2500星,Andrej Karpathy重写了一份minGPT库
本科生60行代码教你手搓GPT大模型,技术介绍堪比教程
机器之心报道 机器之心编辑部 GPT 模型实现起来有时也很简单。 当前,大型语言模型(LLM)被认为是人工智能突破的方向。人们正在尝试用它们做各种复杂的事情,比如问答、创作、数学推理以及编写代码等。近段时间 ChatGPT 持续的爆火是最好的例证。 然而,对于机器学习从业者来说,大模型的门槛很高:因为体量太大难以训练,很长时间里这个方向一直被大公司垄断。不过最近,简化 GPT 模型的方法越来越多了。1 月中旬,前特斯拉 AI 高级总监 Andrej Karpathy(现已回归 OpenAI)就发布了从零开
机器之心
2023/02/27
1.2K0
本科生60行代码教你手搓GPT大模型,技术介绍堪比教程
GPT 是如何工作的:200 行 Python 代码实现一个极简 GPT
希望这个极简模型能让大家对 GPT 这样一个复杂系统的内部工作机制有个直观的理解。
用户5166556
2023/08/09
6360
GPT 是如何工作的:200 行 Python 代码实现一个极简 GPT
“真男人就应该用 C 编程”!用 1000 行 C 代码手搓了一个大模型,Mac 即可运行,特斯拉前AI总监爆火科普 LLM
如今这年头,徒手写神经网络代码已经不算事儿了,现在流行手搓大模型训练代码了!这不,今天,特斯拉前 AI 总监、OpenAI 创始团队成员 Andrej Karpathy 仅用 1000 行简洁的 C 代码,就完成了 GPT-2 大模型训练过程。
深度学习与Python
2024/04/12
5070
“真男人就应该用 C 编程”!用 1000 行 C 代码手搓了一个大模型,Mac 即可运行,特斯拉前AI总监爆火科普 LLM
不到1000行代码,GitHub 1400星,天才黑客开源深度学习框架tinygrad
最近,天才黑客 George Hotz 开源了一个小型深度学习框架 tinygrad,兼具 PyTorch 和 micrograd 的功能。tinygrad 的代码数量不到 1000 行,目前该项目获得了 GitHub 1400 星。
深度学习技术前沿公众号博主
2020/12/01
7100
不到1000行代码,GitHub 1400星,天才黑客开源深度学习框架tinygrad
从头预训练一只超迷你 LLaMA 3
这次打算用 Hugging Face 的 API 来写一份预训练大(小)模型的代码,也就是用 Trainer 来做预训练。由于只是想练习一下,因此打算选一个极小模型 + 小数据集。为了贴近主流,于是打算预训练一个 LLaMA 3——不过是超迷你版本,大小仅不到 20M。
NewBeeNLP
2024/06/04
1K0
从头预训练一只超迷你 LLaMA 3
60行NumPy手搓GPT
本文约24000字,建议阅读30分钟 本文我们将仅仅使用60行Numpy[6],从0-1实现一个GPT。 本文原载于尹志老师博客:https://jiqihumanr.github.io/2023/04/13/gpt-from-scratch/[1]。 本文还是来自Jay Mody[2],那篇被Andrej Karpathy手动点赞[3]的GPT in 60 Lines of NumPy[4](已获原文作者授权)。 LLM大行其道,然而大多数GPT模型都像个黑盒子一般隐隐绰绰,甚至很多人都开始神秘化这个技术
数据派THU
2023/05/11
8220
60行NumPy手搓GPT
PyTorch造大模型“加速包”,不到1000行代码提速10倍!英伟达科学家:minGPT以来最好的教程式repo之一
开发团队一开始使用简单的PyTorch来实现,但效果不佳(25.5 tok/s):
量子位
2023/12/05
3940
PyTorch造大模型“加速包”,不到1000行代码提速10倍!英伟达科学家:minGPT以来最好的教程式repo之一
60行代码就能构建GPT!网友:比之前的教程都要清晰|附代码
Pine 发自 凹非寺 量子位 | 公众号 QbitAI 现在只用60行代码,就能从0构建GPT了! 想当初,前特斯拉前AI总监的minGPT和nanoGPT也都还要300行代码。 这个60行代码的GPT也有名字,博主将它命名为PicoGPT。 不过和此前minGPT和nanoGPT的教程不同,今天要讲的这个博主的教程,更侧重于代码实现部分,模型的权重则用已经训练好的。 对此,博主解释称这篇教程的重点在于提供一个简单且易于破解的完整技术介绍。 这对还不理解GPT背后概念的盆友,算是非常友好了。 还有网友
量子位
2023/02/23
4990
60行代码就能构建GPT!网友:比之前的教程都要清晰|附代码
从GPT-1到GPT-4,再到未来的GPT-5,一文带你了解GPT的前世今生和未来!
ChatGPT爆火的余热还没退去,GPT-4又横空出世,各大媒体都争相报道,朋友圈也在不断刷屏,打工人更是感叹饭碗要被AI夺走了!作为一名理性吃瓜群众我们还是得去了解一下GPT的过去、现在和未来,正所谓知己知彼,百战不殆,只有充分了解"对手",我们才能驾驭AI为我所用!话不多说,立马开始!
itvv
2023/03/23
9.2K0
OpenAI科学家Karpathy周末造出「婴儿Llama2」!GPT-4辅助写500行纯C代码,速揽1.6k星
就在刚刚过去的这个周末,OpenAI科学家Andrej Karpathy做了一个非常有趣的项目——llama2.c。
新智元
2023/08/07
2770
OpenAI科学家Karpathy周末造出「婴儿Llama2」!GPT-4辅助写500行纯C代码,速揽1.6k星
推荐阅读
小破本也能炼GPT!300行代码搞定,GitHub获6k星,来自特斯拉前AI总监
8040
一天star量破千,300行代码,特斯拉AI总监Karpathy写了个GPT的Pytorch训练库
9650
李飞飞高徒教你从0到1构建GPT
1.2K0
Python深耕之minGPT的使用
2.4K0
用Transformer定义所有ML模型,特斯拉AI总监Karpathy发推感叹AI融合趋势
5070
无需写代码能力,手搓最简单BabyGPT模型:前特斯拉AI总监新作
7370
GPT迭代成本「近乎荒谬」,Karpathy 300行代码带你玩转迷你版
1K0
加入最火OpenAI,特斯拉前AI总监Andrej Karpathy自宣回归
3280
特斯拉前AI总监教你手搓GPT大模型,教学视频已出
7180
速揽2500星,Andrej Karpathy重写了一份minGPT库
3670
本科生60行代码教你手搓GPT大模型,技术介绍堪比教程
1.2K0
GPT 是如何工作的:200 行 Python 代码实现一个极简 GPT
6360
“真男人就应该用 C 编程”!用 1000 行 C 代码手搓了一个大模型,Mac 即可运行,特斯拉前AI总监爆火科普 LLM
5070
不到1000行代码,GitHub 1400星,天才黑客开源深度学习框架tinygrad
7100
从头预训练一只超迷你 LLaMA 3
1K0
60行NumPy手搓GPT
8220
PyTorch造大模型“加速包”,不到1000行代码提速10倍!英伟达科学家:minGPT以来最好的教程式repo之一
3940
60行代码就能构建GPT!网友:比之前的教程都要清晰|附代码
4990
从GPT-1到GPT-4,再到未来的GPT-5,一文带你了解GPT的前世今生和未来!
9.2K0
OpenAI科学家Karpathy周末造出「婴儿Llama2」!GPT-4辅助写500行纯C代码,速揽1.6k星
2770
相关推荐
小破本也能炼GPT!300行代码搞定,GitHub获6k星,来自特斯拉前AI总监
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验