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

minGPT:OpenAI GPT(生成式预训练变压器)培训的最小PyTorch重新实现 minGPT 训练的PyTorch重新实现。 minGPT试图做到小巧,整洁,可解释且具有教育意义,因为大多数当前可用的工具都有些庞大。 GPT不是一个复杂的模型,该实现大约包含300行代码,包括样板代码和完全不必要的自定义因果自我注意模块。 无论如何,所有的事情就是将一个索引序列放入一个转换器块序列中,并且得出下一个索引的概率分布。 其余的复杂性只是通过批处理(跨示例和整个序列长度)而变得很聪明,因此培训是有效的。 minGPT的核心“库”(hah)是两个文件: mingpt/model.py包含实际的Transformer模型定义, mingpt/trainer.py是(与GPT无关)PyTorch样板,用于训练模型。 然后,随附的Jupyter笔记本显示了如何使用“库”(哈)来训练序列模型: play_math.ipynb训练专注于加法的GPT(受GPT-3论文中的加法部分启发 立即下载

机器之心报道

编辑:魔王、张倩

如果说 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

近期十大热门:

Java遇见PythonGo

长按2秒,输入:【福利】

【Java遇见PythonGo】 由一位资深老码农运营,混迹于世界500强外企多年的,做过开发,测试,项目管理,对技术比较痴迷,也是一位后端开发爱好者,欢迎喜欢Java,Python和Go的程序员关注。

SSE(Server-Sent Events)完整使用示例 本篇使用Node.js 作为服务端,在浏览器客户端演示SSE的完整实例和演示。实现了一个基于 Server-Sent Events (SSE) 的实时数据推送功能。 阅读详情

相关推荐

数字取证双雄:Passware Kit Forensic 与 ElcomSoft 在实战场景下的能力边界解析

本文深入解析了Passware Kit Forensic与ElcomSoft在数字取证实战中的能力边界,涵盖Windows、macOS、iOS和Android系统的密码恢复与数据提取技术。通过真实案例对比两款工具在硬件加速、分布式计算及云取证等场景下的表现差异,为取证专家提供关键决策参考。特别探讨了密码恢复软件在加密设备突破中的核心作用。

weixin_30342209的博客 401

minGPT 代码详解(训练 GPT 模型执行两位数加法)

minGPT 是 GPT 模型的一个开源实现,因简洁干净解释性强而颇具教育意义。本文对该开源库实现的 GPT 代码进行详解,并给出一个使用它训练 GPT 模型计算两位数加法的例子

佚失的诗篇 5629

基于AnimeGAN模型生成宫崎骏风格动漫照片

用于动画风格纹理和线条转换的灰度样式丢失;新颖的颜色重建损失,以保留内容图像的颜色;新的灰度对抗损失防止生成的图像从显示为灰度图像;使用深度可分卷积和反向残块的轻量级生成器,以实现更快的传输。实验表明,AnimeGAN可以对真实世界的照片进行变换场景动画风格的图像与高质量的动画视觉效果和显著优于最先进的风格化方法。# 生成宫崎骏风格图片 model = hub . Module('animegan_v1_hayao_60' , use_gpu = True)images:输入的图片数据。

优快云 精品推荐 3632

开源项目推荐:minGPT——深度学习领域的精简之选

开源项目推荐:minGPT——深度学习领域的精简之选 【免费下载链接】minGPT A minimal PyTorch re-implementation of the OpenAI GPT (Generative Pretrained Transformer) training ...

gitblog_01171的博客 576

宽压 DC⇌DC 也能“随心所欲”——全桥 LLC 混合控制硬核拆解

硬件派 vs. 软件派:多电平是“器件堆砌”,混合控制是“算法魔改”。预算紧 → 先搞软件。仿真别嫌烦:PLECS 把两条曲线扫透,切换点、死区、φ 都调到波形平滑再上板。温升留 20 ℃ 余量:车规≥125 ℃,实验室测 105 ℃ 就算危险,别玩极限。

weixin_43199439的博客 928

软考高级架构师笔记-10数学计算题

专栏《软考高级架构设计师》更新了,本章列举了10个场景计算题的解法,温故而知新,大家快来卷一卷

java后端开发的博客,不仅仅是后端开发 1600

mingpt用法

mingpt是一个受训的语言模型,可以生成人类语言的文本。可以使用mingpt来生成文章、诗歌、对话或其他类型的文本。要使用mingpt,你需要安装它的Python库,然后在你的代码中导入它。 下面是一个简单的示例,展示了如何使用mingpt生成一段文本: import openai openai.api_key= "YOUR_API_KEY" model_engine = "text-davi...

weixin_42598278的博客 481

MATLAB 图像滤波:高通、低通、带通和方向滤波器

在 MATLAB 中,我们可以使用不同类型的滤波器对图像进行处理,包括高通滤波器、低通滤波器、带通滤波器和方向滤波器。通过以上代码示例,我们介绍了 MATLAB 中使用高通滤波器、低通滤波器、带通滤波器和方向滤波器对图像进行滤波的方法。高斯滤波器可以实现带通滤波效果,通过调整滤波器的方差参数可以控制带通滤波器的频率范围。这里的平均滤波器是一种常见的低通滤波器,通过对图像周围的像素进行平均来实现平滑效果。Sobel 滤波器是一种常用的方向滤波器,用于检测图像中的水平和垂直边缘。函数将高通滤波器应用于图像。

CyberSparkZ的博客 1395

Pytorch 多卡并行(3)—— 使用 DDP 加速 minGPT 训练

本文介绍如何使用 DDP 和混合精度训练方法来高效地训练一个 MinGPT 模型

佚失的诗篇 2130

OpenCV-Python实战(10)——详解 OpenCV 轮廓检测

在计算机视觉领域,轮廓通常指图像中对象边界的一系列点。因此,轮廓通常描述了对象边界的关键信息,包含了有关对象形状的主要信息,该信息可用于形状分析与对象检测和识别。在本文中,将首次通过简单示例了解轮廓的基本概念,然后通过实际示例来了解如何检测和压缩轮廓,最后利用介绍如何利用图像矩描述检测到的轮廓属性。

盼小辉丶的博客 3万+

lammps教程:官方自带eam_database程序拟合EAM势方法介绍

使用lammps模拟金属体系,最常用的势函数为eam、meam势。 对于大多数金属或者合金来说,可以从网上下载相对应的eam或meam势力场文件。 而对于一些新的合金材料,可能就找不到相对应的力场文件。 解决的方法有两种,一是采用混合势(pair_style hybrid),第二种方法是自己拟合势函数文件。 混合势的写法在前面文章中已经介绍过,本文介绍一种拟合EAM势的方法。 该方法是运行Xiaowang Zhou编写的一个拟合程序,该程序可自动生成所需要的合金势。 这个程序能够拟合的合金元素有: Cu,

lammps_jiayou的博客 4618

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

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

中生代技术 499

华为OD机试 新系统 双机位C卷 往年真题 机考题库(持续收录中)以及算法考点详解

每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天优快云在线答疑。

学Java,找哪吒 7万+

30分钟上手minGPT:从零训练你的加法器AI

minGPT是一个极简的PyTorch实现的GPT(生成式预训练Transformer)训练框架,它以简洁的代码帮助开发者快速理解和实践GPT模型。本文将带你在30分钟内从零开始,使用minGPT训练一个能够进行加法运算的AI模型,让你轻松入门GPT模型的训练与应用。 ## 🚀 为什么选择minGPT? 在众多GPT实现中,minGPT就像一艘灵活的快艇,让你在AI的海洋中轻松航行。 [!

gitblog_00997的博客 764

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【minGPT】注意力模块

比如一件商品有质量,价格,颜色,外形,生产商,发货地点等信息,但是你特别关注商品的价格,那么所有商品的所有信息投影到你的需求上,基本只有价格影响你买还是不买。做个形象化的比喻,你在广东被人叫靓仔,在广西被人叫叼毛,本质上你还是你,包含你的肉体和灵魂。只是你在不同的空间,时间,以及叫法不同。注意力机制很像人类看图片的逻辑,当我们看一张图片的时候,我们并没有看图片的全部内容,而是将注意力集中在了图片的焦点上。因为GPT是生成模型,是利用前面的信息生成后面的信息的,也就是后面的信息开始是不知道的。

idwtwt的专栏 1510

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

超轻量级minGPT解析:从零理解Transformer架构

在深度学习领域,Transformer架构已经成为自然语言处理(NLP)的基石。然而,大多数现有的GPT(Generative Pre-trained Transformer)实现往往过于复杂,包含大量工程优化和配置选项,使得初学者难以理解其核心原理。 minGPT应运而生——这是一个仅有300行代码的PyTorch重新实现,专注于教育性和可解释性。通过minGPT,我们可以: - ???? **...

gitblog_00867的博客 991

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

5分钟上手minGPT扩展项目:从加法器到文本生成的AI实践指南

你还在为复杂AI框架的学习曲线发愁吗?想快速体验Transformer模型的训练过程却被繁琐配置劝退?本文将带你零门槛探索minGPT开源生态中的两个明星项目——用GPT实现数学加法的Adder和字符级语言模型CharGPT,只需基础Python知识,即可在本地搭建属于你的AI训练环境。读完本文你将获得: - 3步完成加法器模型训练的实操指南 - 文本生成模型的数据集准备与调优技巧 - 扩展min...

gitblog_01013的博客 993

零基础玩转minGPT:文本图像融合训练实战指南

minGPT是一个基于PyTorch的轻量级GPT模型实现,让开发者能够以简洁高效的方式探索和训练Transformer模型。本指南将带你从环境搭建到多模态训练,轻松掌握minGPT的核心应用。 minGPT与传统GPT实现对比 ## 为什么选择minGPT? minGPT通过极简设计剥离了冗余代码,保留了GPT模型的核心架构。与其他复杂实现相比,它就像一艘灵活的快艇,让你专注于模型本身而非

gitblog_00125的博客 747

开源项目minGPT应用案例详解(PyTorch)

​  minGPT 是GPT的 PyTorch 重新实现,包含训练和推理功能。minGPT 力求精简、简洁、可解释且具有教育意义,因为目前大多数 GPT 模型实现可能略显臃肿。GPT 并非一个复杂的模型,该实现大约有 300 行代码。其工作原理是将一系列索引输入到Transformer中,然后得出序列中下一个索引的概率分布。其复杂性主要体现在巧妙地进行批处理(跨样本和跨序列长度),以提高效率。重写的nanoGPT,从单纯的教育导向转向一个仍然简单易行但又有实际意义的东西。

Keep_Trying_Go的博客 1157

如何用minGPT构建强大的序列到序列翻译模型:终极入门指南

minGPT是一个轻量级的PyTorch实现,专注于OpenAI GPT(生成式预训练Transformer)的训练过程。作为一款精简而高效的工具,它让开发者能够快速掌握GPT模型的核心原理,并轻松构建各种序列到序列任务,尤其是翻译模型。本指南将带你从零开始,用minGPT构建属于自己的翻译模型,即使是AI新手也能轻松上手。 ## minGPT:轻量级GPT实现的优势 在众多GPT实现中,mi

gitblog_00334的博客 756

minGPT 全解析:用约 300 行 PyTorch 代码从零实现 GPT 训练与推理

**导读**:本文以仓库 [README.md](https://link.gitcode.com/i/2cf30fea6440fa487ce30ba7793d3bed) 为骨架,系统讲解 minGPT 这一"最小化 GPT 复刻"项目的完整技术脉络——从模型定义、BPE 词元化、训练循环三份核心源码文件,到 adder 加法与 chargpt 字符级语言模型两个实战项目,再到 GPT-1/2/3

gitblog_00612的博客 366
上一篇: 发现一个舔狗福利!这个Python爬虫神器太爽了,自动下载妹子图片!
下一篇: 如何正确使用Pandas库提升项目的运行速度?
菜鸟学Python
博客等级 码龄9年 8083粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值