一天star量破千,300行代码,特斯拉AI总监Karpathy写了个GPT的Pytorch训练库

GPT2.0语言模型 Language Models are Unsupervised Multitask Learners 论文链接:https://d4mucfpksywv.cloudfront.net/better-language-models/language-models.pdf Tensorflow代码链接:https://github.com/openai/gpt-2 Pytorch代码链接:https://github.com/huggingface/pytorch-pretrained-BERT 参考文档:https://mp.weixin.qq.com/s/c0LXAj5tN_59eJKc8yBTLQ 参考. 阅读详情

如果说 GPT 模型是所向披靡的战舰,那么 minGPT 大概算是个头虽小但仍能乘风破浪的游艇了吧。

最近,「史上最大 AI 模型」GPT-3 风靡全球。

GPT 系列可以说是人工智能领域「暴力美学」的代表作了。2018 诞生的 GPT,1.17 亿参数;2019 年 GPT-2,15 亿参数;2020 年 GPT-3,1750 亿参数。短短一年时间,GPT 模型的参数量就呈指数级增长。

GPT-3 发布后不久,OpenAI 即向社区开放了商业 API,鼓励大家使用 GPT-3 尝试更多的实验。然而,API 的使用需要申请,而且你的申请很有可能石沉大海。那么,除了使用官方 API 以外,我们还有没有其他方法能上手把玩一下这个「最大模型」呢?

近日,特斯拉人工智能研究负责人、前 OpenAI 研究科学家 Andrej Karpathy 进行了尝试。

他基于 PyTorch,仅用 300 行左右的代码就写出了一个小型 GPT 训练库,并将其命名为 minGPT。

Karpathy 表示,这个 minGPT 能够进行加法运算和字符级的语言建模,而且准确率还不错。不过,在运行 demo 后,Andrej Karpathy 发现了一个有趣的现象:2 层 4 注意力头 128 层的 GPT 在两位数加法运算中,将 55 + 45 的结果计算为 90,而其他加法运算则没有问题。

目前,该项目在 GitHub 上亮相还没满 24 小时,但 star 量已经破千。

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

minGPT:只用 300 行代码实现的 GPT 训练

如果说 GPT 模型是所向披靡的战舰,那么 minGPT 大概算是个个头虽小但仍能乘风破浪的游艇了吧。

在项目页面中,Karpathy 介绍称:由于现有可用的 GPT 实现库略显杂乱,于是他在创建 minGPT 的过程中, 力图遵循小巧、简洁、可解释、具有教育意义等原则。

GPT 并非一个复杂的模型,minGPT 实现只有大约 300 行代码,包括样板文件和一个完全不必要的自定义因果自注意力模块。Karpathy 将索引序列变成了一个 transformer 块序列,如此一来,下一个索引的概率分布就出现了。剩下的复杂部分就是巧妙地处理 batching,使训练更加高效。

核心的 minGPT 库包含两个文档:mingpt/model.py 和 mingpt/trainer.py。前者包含实际的 Transformer 模型定义,后者是一个与 GPT 无关的 PyTorch 样板文件,可用于训练该模型。相关的 Jupyter notebook 则展示了如何使用该库训练序列模型:

  • play_math.ipynb 训练一个专注于加法的 GPT;

  • play_char.ipynb 将 GPT 训练成一个可基于任意文本使用的字符级语言模型,类似于之前的 char-rnn,但用 transformer 代替了 RNN;

  • play_words.ipynb 是 BPE(Byte-Pair Encoding)版本,目前尚未完成。

使用 BPE 编码器、分布式训练和 fp16,这一实现有可能复现 GPT-1/GPT-2 的结果,不过 Karpathy 还没有尝试。至于 GPT-3,minGPT 可能无法复现,因为 GPT-3 可能不适合 GPU 内存,而且需要更精细的模型并行化处理。

使用示例

Karpathy 在 minGPT 项目中提供了一些使用示例。

这些代码非常简单,只需 hack inline 即可,而非「使用」。目前的 API 外观如下:

minGPT 是如何实现的?

在实现过程中,Karpathy 参考了 OpenAI GPT 官方项目,以及其他组织的示例等。

代码

  • OpenAI gpt-2 项目提供了模型,但没有提供训练代码(https://github.com/openai/gpt-2);

  • OpenAI 的 image-gpt 库在其代码中进行了一些类似于 GPT-3 的更改,是一份不错的参考(https://github.com/openai/image-gpt);

  • Huggingface 的 transformers 项目提供了一个语言建模示例。它功能齐全,但跟踪起来有点困难。(https://github.com/huggingface/transformers/tree/master/examples/language-modeling)

论文 + 实现说明

此外,项目作者还介绍了相关的论文和实现细节。

1. GPT-1:《Improving Language Understanding by Generative Pre-Training》

  • 论文地址:https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/language_understanding_paper.pdf

GPT-1 模型大体遵循了原始 transformer,训练了仅包含 12 层解码器、具备遮蔽自注意力头(768 维状态和 12 个注意力头)的 transformer。具体实现细节参见下图:

2. GPT-2:《Language Models are Unsupervised Multitask Learners》

  • 论文地址:https://d4mucfpksywv.cloudfront.net/better-language-models/language_models_are_unsupervised_multitask_learners.pdf

GPT-2 将 LayerNorm 移动每个子模块的输入,类似于预激活残差网络,并在最后的自注意力模块后添加了一个额外的层归一化。此外,该模型还更改了模型初始化(包括残差层初始化权重等)、扩展了词汇量、将 context 规模从 512 个 token 增加到 1024、使用更大的批大小等。具体实现细节参见下图:

3. GPT-3:《Language Models are Few-Shot Learners》

  • 论文地址:https://arxiv.org/pdf/2005.14165.pdf

GPT-3 使用了和 GPT-2 相同的模型和架构,区别在于 GPT-3 在 transformer 的各层上都使用了交替密集和局部带状稀疏的注意力模式,类似于 Sparse Transformer。具体实现细节参见下图:

Andrej Karpathy 其人

Andrej Karpathy 是计算机视觉、生成式模型与强化学习领域的研究者,博士期间师从斯坦福大学计算机科学系教授李飞飞。读博期间,他曾两次在谷歌实习,研究在 Youtube 视频上的大规模特征学习。此外,他还和李飞飞等人一起设计、教授了斯坦福经典课程 CS231n。

2016 年,Karpathy 加入 OpenAI 担任研究科学家。2017 年,他加入特斯拉担任人工智能与自动驾驶视觉总监。如今,Karpathy 已经升任特斯拉 AI 高级总监。他所在的团队负责特斯拉自动驾驶系统 Autopilot 所有神经网络的设计,包括数据收集、神经网络训练及其在特斯拉定制芯片上的部署。

和教授 CS231n 时一样,Karpathy 希望他利用业余时间做的这个 minGPT 也能有一定的教育意义。他这种化繁为简的举动得到了众多社区成员的赞赏:

除了关于 minGPT 本身的讨论之外,还有人提出:有没有可能借助社区力量一起训练 GPT-3?也就是说,如果成千上万的开发者在 GPU 空闲的时候将其贡献出来(比如夜间),最后有没有可能训练出一个 1750 亿参数的 GPT-3?这样的话,大家只需要分摊电费就好了。

不过,有人指出,这种分布式训练的想法非常有趣,但可能会在梯度等方面遇到瓶颈。

还有人调侃说,把电费众筹一下拿来买云服务岂不是更简单?

参考链接:https://news.ycombinator.com/item?id=24189497

------end------

转自:机器之心

利用Matlab绘制非线性系统相图:从理论到实践 本文详细介绍了如何利用Matlab进行非线性系统的相图绘制与相平面分析。从理论基础的状态空间转换出发,通过无阻尼线性谐振子和范德波尔振荡器等实例,手把手演示了使用ode45求解器绘制相图、分析平衡点与极限环的完整流程,并分享了方向场绘制、参数分岔探索及常见错误解决方案等高级技巧,为动力学系统分析与控制设计提供了直观强大的可视化工具。 阅读详情

相关推荐

【渗透工具】内网多级代理工具Venom详细使用教程

Venom是一款为渗透测试人员设计的使用Go开发的多级代理工具。Venom可将多个节点进行连接,然后以节点为跳板,构建多级代理。渗透测试人员可以使用Venom轻松地将网络流量代理到多层内网,并轻松地管理代理节点。

TT小子的博客 3757

AMiner会议论文推荐第五十三期

AMiner平台由清华大学计算机系研发,拥有我国完全自主知识产权。平台包含了超过2.3亿学术论文/专利和1.36亿学者的科技图谱,提供学者评价、专家发现、智能指派、学术地图等科技情报专业化服务。系统2006年上线,吸引了全球220个国家/地区1000多万独立IP访问,数据下载量230万次,年度访问量超过1100万,成为学术搜索和社会网络挖掘研究的重要数据和实验平台。 ICLR 2021 论文推荐 Transformer protein language models are unsupervised .

AI_Conf的博客 379

华强北手表256G真相大揭秘:ADB命令实测内存与存储(附完整调试教程)

本文通过ADB命令实战揭秘华强北智能手表256G存储等硬件参数的真实性。文章提供了从开启调试模式到使用ADB命令查询系统属性、验证内存与存储容量的完整教程,帮助用户识别参数虚标,评估设备真实性能与潜在风险。

e3f4g5的博客 1233

利用Transformer替代MSA从蛋白序列中学习Contact Map

点击上方“CVer”,选择加"星标"置顶重磅干货,第一时间送达本文转载自:GoDesign——背景——基于深度学习的蛋白结构预测在近年来取得了不少突破,其中最具代表性的工作...

阿木寺的博客 1万+

联邦学习模型投毒研究进展

在联邦学习中,多个设备(如移动设备、IoT设备等)本地训练模型,然后将更新的模型参数上传到服务器进行聚合。

2401_82375734的博客 1266

UVM验证中,为什么我的pack_bytes()返回长度是0?手把手教你排查自定义do_pack函数

本文深入解析UVM验证中pack_bytes()返回长度为0的常见原因及系统排查方法。从UVM打包机制原理出发,详细列举了super.do_pack()缺失、field automation冲突等典型问题,并提供动态数组处理、位宽计算等进阶调试技巧,帮助开发者快速定位和解决自定义do_pack函数问题。

weixin_42523693的博客 127

ICLR 2021投稿中值得一读的NLP相关论文

我们从ICLR 2021开放投稿的3000篇论文中,粗略筛选了近100篇与自然语言处理领域中也许值得一读的论文,供大家查阅。理论、模型与经验性分析:38篇问答与阅读理解:4篇知识图谱:...

Paper weekly 3095

CANoe LIN一致性测试之干扰测试Test moudle_LIN Disturbance Block

注意:相邻两个显隐性不同的bit不允许干扰,例如我同时选择bit6和bit7,相邻两个同显隐性的bit允许干扰,例如当我选择bit3和bit4,项,这里我选择ID:为0x2F(PID:0x6F)的frame。需按照具体测试规范实施干扰项,帧头和数据段都可以实现干扰。最近发现一个干扰测试模块,下面是一些具体使用方法。选择干扰项:PID的奇偶校验位(一致性测试干扰测试之手动测试。一个待测试frameD。

yuanyikangkang的博客 3410

Language Models are Unsupervised Multitask Learners

机器学习系统现在通过结合使用大型数据集、高容量模型和监督学习(Krizhevsky et al., 2012) (Sutskever et al., 2014) (Amodei et al., 2016),在训练任务上表现出色(预期)。然而,这些系统很脆弱,对数据分布(Recht等人,2018)和任务规范(Kirkpatrick等人,2017)的微小变化很敏感。目前的系统更倾向于由狭隘的专家组成,而不是有能力的通才。

靓仔沾点健忘症,写给时间下游的自己 1444

九天揽月带你玩转Ardupilot 的EKF2纸老虎(1)

目录 目录 摘要 1.kalman基础知识储备 摘要 本文主要记录自己学习ardupilot的ekf2代码的过程,相信很多人想移植或者学习ekf2,看到眼花缭乱的代码无从下手。九天揽月将带你玩转Ardupilot 的EKF2纸老虎 1.kalman基础知识储备 (1)先来看下最基础也是最重要的线性kalman 总结:不要害怕kalman,只要你可以懂得线性kal...

陌城烟雨 1万+

一天Star量破千,300行代码,特斯拉AI总监Karpathy写了个GPT的Pytorch训练库

机器之心报道编辑:魔王、张倩如果说 GPT 模型是所向披靡的战舰,那么 minGPT 大概算是个头虽小但仍能乘风破浪的游艇了吧。最近,「史上最大 AI 模型」GPT-3 风靡全球。GPT...

中生代技术 499

华为OD机考双机位C卷 - 最左侧冗余覆盖子串 (Java)

华为OD机考双机位C卷 - 最左侧冗余覆盖子串 (Java), 提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。

算法大师! 58

【ICLR2021】十三大主题100篇值得一读的NLP论文,还不安排上?

来源|香侬科技我们从ICLR 2021开放投稿的3000篇论文中,粗略筛选了近100篇与自然语言处理领域中也许值得一读的论文,供大家查阅。理论、模型与经验性分析:38篇问答与阅读...

weixin_36896856的博客 2471

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Language Models are Unsupervised Multitask Learners 论文纪要

GPT-2一出来就被刷屏,然而官方称害怕被用来生成恶意语料就没有开源,而是release了一个小很多的模型(并且有人实践证明小模型要辣鸡很多)。 不过除了津津乐道吃瓜,以及暗暗羡慕财大气粗的openAI砸钱搞出这个巨无霸模型,甩其他学术界小喽喽几百条街之外,还是要把paper拿过来好好盘一盘。

芝麻挞 1696

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

PyTorch核心贡献者开源书:《使用PyTorch进行深度学习》完整版现已发布!

来源|新智元【导读】《使用PyTorch进行深度学习》一书的完整版现已发布!教你如何使用PyTorch创建神经网络和深度学习系统,内含图解与代码,操作易上手。由Luca Antiga、...

zandaoguang的博客 759

Andrej Karpathy的炼丹技巧

1、先别着急写代码 训练神经网络前,别管代码,先从预处理数据集开始。我们先花几个小时的时间,了解数据的分布并找出其中的规律。 Andrej有一次在整理数据时发现了重复的样本,还有一次发现了图像和标签中的错误。所以先看一眼数据能避免我们走很多弯路。 由于神经网络实际上是数据集的压缩版本,因此您将能够查看网络(错误)预测并了解它们的来源。如果你的网络给你的预测看起来与你在数据中看到的内容不一致,...

Enjoy Coding 1297

特斯拉AI高级总监Andrej Karpathy详解Tesla纯视觉自动驾驶方案

点击上方“3D视觉工坊”,选择“星标”干货第一时间送达作者:黄浴链接:https://zhuanlan.zhihu.com/p/136179627本文转载自知乎,作者已授权,未经许可请勿...

3D视觉工坊 3911

论文阅读:GPT2--Language Models are Unsupervised Multitask Learners

Abstact GPT2的核心思想就是认为可以用无监督的预训练模型去做有监督任务。 Introduction: 典型应用:最著名的语言模型就是手机上面的输入法,根据当前输入词推荐下一个词 目标上想构造一个通用的NLP模型,可以执行很多任务,不需要为每个任务手动创建和标记数据集 多任务学习:把多个相关的任务放在一起学习,同时学习多个任务。 基于共享表示,把多个相关的任务放在一起...

咕噜咕噜 1356

python torch 自定义神经网络NN

经过epochs次训练,每次epoch训练多个batch_size个样本,Loss逐渐减少。自定义全连接神经网络需要继承Model,重写__init__ 和forward方法。

frt的博客 223

基于神经网络的机器人导航系统的设计与执行!

基于神经网络的机器人导航系统,本质上是一个“感知-规划-控制”的闭环。它的核心优势在于强大的泛化能力和端到端的简洁性,能够处理传统几何方法难以解决的复杂场景(如密集人群、非结构化地形)。

m0_65595995的博客 223
上一篇: 五大自动化测试的Python框架
下一篇: 几个类似 VS Code的开源编辑器工具
Wang_AI
博客等级 码龄12年 991粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值