Redian新闻
>
本科生60行代码教你手搓GPT大模型,技术介绍堪比教程

本科生60行代码教你手搓GPT大模型,技术介绍堪比教程

公众号新闻

机器之心报道

机器之心编辑部

GPT 模型实现起来有时也很简单。


当前,大型语言模型(LLM)被认为是人工智能突破的方向。人们正在尝试用它们做各种复杂的事情,比如问答、创作、数学推理以及编写代码等。近段时间 ChatGPT 持续的爆火是最好的例证。

然而,对于机器学习从业者来说,大模型的门槛很高:因为体量太大难以训练,很长时间里这个方向一直被大公司垄断。不过最近,简化 GPT 模型的方法越来越多了。1 月中旬,前特斯拉 AI 高级总监 Andrej Karpathy(现已回归 OpenAI)就发布了从零开始构建 GPT 模型的完整教程。不过训练出的 GPT 和 OpenAI 的 GPT-3 比较,两者规模差距达 1 万 - 100 万倍。

近日,加拿大麦克马斯特大学的一位软件工程本科生 Jay Mody 在导入 NumPy 库下,仅用 60 行代码就从头实现了一个 GPT 模型,并将其命名为 PicoGPT。不仅如此,他还将经过训练的 GPT-2 模型权重加载到自己的实现中,并生成了一些文本。下面为 60 行代码展示。


不过要做到这些,你需要熟悉 Python 和 NumPy,还要有一些训练神经网络的基本经验。作者表示,这篇博客旨在对 GPT 进行简单易懂的完整介绍。因此,作者只使用已经训练的模型权重来实现前向传递代码。


代码地址:
https://github.com/jaymody/picoGPT/blob/29e78cc52b58ed2c1c483ffea2eb46ff6bdec785/gpt2_pico.py#L3-L58

对于此项研究,Andrej Karpathy 给出了四个字:虽迟但到。想当初,Karpathy 构建的 minGPT 和 nanoGPT 还要 300 行代码。


值得一提的是,这篇教程不是完全零门槛的。为了让读者明白,作者首先介绍了什么是 GPT、它的输入、输出如何等其他内容,介绍得都非常详细。


至于 GPT 到底能干什么,作者给出了几个示例,它能写电子邮件、总结一本书、给你 instagram 标题的想法、向 5 岁的孩子解释黑洞、用 SQL 编写代码等。

通过仔细阅读这部分内容后,你能大致了解 GPT 的一些基础知识。有了这些背景介绍,接下来就是如何设置了。

项目介绍

设置

这一章节主要介绍了如何设置编码器、超参数以及参数。


你要做的,首先是克隆代码库:


然后安装依赖项:


注意,如果你使用的是 M1 Macbook,在运行 pip install 之前,你需要在 requirements.txt 中将 tensorflow 更改为 tensorflow-macos。在这个项目下,文件包括 encoder.py、utils.py、gpt2.py、gpt2_pico.py:

  • encoder.py:包含 OpenAI BPE Tokenizer 的代码,直接取自 gpt-2 repo;
  • utils.py:包含下载和加载 GPT-2 模型权重、tokenizer 和超参数的代码;
  • gpt2.py:包含 GPT 模型和生成代码,可以将其作为 python 脚本运行;
  • gpt2_pico.py:与 gpt2.py 相同,但是代码行数更少。

其中 gpt2.py 需要从头开始实现,因此你要做的是先删除 gpt2.py 并重新创建一个空文件:


然后将下列代码复制到 gpt2.py 中:


上述代码包含 4 个主要部分:

  • gpt2 函数是本次实现 GPT 的实际代码;
  • generate 函数实现自回归解码算法;
  • main 函数;
  • fire.Fire (main) 将文件转换为 CLI 应用程序,以便最终可以运行代码:python gpt2.py "some prompt here"。

main 函数包含有 encode、hparams、params 参数,执行下列代码:


接着必要的模型以及 tokenizer 文件将被下载到 models/124M 文件。

设置完成之后,作者开始介绍编码器、超参数、参数的一些细节内容。就拿编码器来说,本文的编码器和 GPT-2 使用的 BPE tokenizer 一样。下面是该编码器编码和解码的一些文本示例:


实际的 token 长这个样子:


需要注意,有时 token 是单词(例如 Not),有时它们是单词但前面有一个空格(例如 Ġall,Ġ 代表一个空格),有时是单词的一部分(例如 capes 被拆分为 Ġcap 和 es),有时它们是标点符号(例如 .)。

BPE 的一个好处是它可以对任意字符串进行编码,如果遇到词汇表中不存在的内容,它会将其分解为它能理解的子字符串:


更细节的内容不再赘述。接下来介绍基础神经网络,这一部分就更加基础了,主要包括 GELU、Softmax 函数以及 Layer Normalization 和 Linear。


每一小部分都有代码示例,例如在 Linear 部分,作者展示了标准矩阵乘法 + 偏置:



线性层从一个向量空间投影到另一个向量空间的代码如下:


GPT 架构

这部分介绍 GPT 自身架构。


Transformer 架构如下:


Transformer 仅使用解码器堆栈(图的右侧部分):
需要注意,由于摆脱了编码器,中间的交叉注意力层也被删除了。

在高层次上,GPT 体系架构有以下三个部分:

  • 文本 + 位置嵌入;
  • Transformer 解码器堆栈;
  • 投影到词汇表。

代码就像下面这样:

代码部分截图

接下来更详细地分解以上三个部分中的每一个部分,这里也不再赘述。

以上就是作者对 GPT 的实现,接下来就是将它们组合在一起并运行代码,得到 gpt2.py。它的全部内容只有 120 行代码(如果删除注释和空格,则为 60 行)。

作者通过以下方式测试结果:


输出结果如下:


正如作者说的:这次实验成功了。

本文只是跟着作者的思路大概介绍了整体流程,想要了解更多内容的小伙伴,可以参考原文链接。

原文链接:https://jaykmody.com/blog/gpt-from-scratch/#basic-layers


全面学习ChatGPT,机器之心准备了 89 篇文章合集

这是一份全面、系统且高质量的 ChatGPT 文章合集,我们筛选出来了 89 篇相关文章,设计了阅读框架与学习路径,大家可以根据自己的需求进行浏览与研读。合集内容包括:

  • ChatGPT 及 OpenAI  大事件时间轴

  • 概念·真正搞懂 ChatGPT:共 3 篇文章

  • 研究·GPT 家族更迭:共 16 篇文章

  • 八年·OpenAI 的历史与现在:共 13 篇文章

  • 干货·GPT 相关研究与技术:共 18 篇文章

  • 观点·专家谈 ChatGPT:共 8 篇文章

  • 行业·应用与探索:共 23 篇文章

  • 行业·同类产品:共 8 篇文章

点击阅读原文,开始学习ChatGPT。

© THE END 

转载请联系本公众号获得授权

投稿或寻求报道:[email protected]

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
如何爱男人一家自然语言处理AI公司的末世之舞:倒在GPT大模型的狂潮到来前微软开源DeepSpeed Chat,人人可快速训练百亿、千亿级ChatGPT大模型马斯克成立X.AI公司对抗GPT,网易云音乐上线鲸云母带音质,GPT-5并不存在,雷军首谈AI大模型,这就是今天的其他大新闻!亚马逊高调入局ChatGPT大战,发布Titan大模型、AI编程助手全免费,CEO:改变所有体验修改几行代码就让 LLM 应用提速 100 多倍!这个团队两周搭建 ChatGPT 缓存层,曾被老黄 OpenAI 点赞复旦放大招,国内首个类ChatGPT大模型开放测试!《流浪地球》MOSS照进现实60行NumPy手搓GPT特斯拉前AI总监教你手搓GPT大模型,教学视频已出GPT-4震撼发布:多模态大模型,直接升级ChatGPT、必应,开放API,游戏终结了?无需写代码能力,手搓最简单BabyGPT模型:前特斯拉AI总监新作亚马逊高调入局ChatGPT大战,发布Titan大模型10行代码搞定图Transformer,图神经网络框架DGL迎来1.0版本商汤ChatGPT「商量」炸场!秒生6K神图,代码提速62%,现场直播怼脸GPT-4震撼发布:多模态大模型,升级ChatGPT和必应,开放API,太太太强了!3D成像技术介绍春天先遣者,冬后一阳升关于ChatGPT与大模型,我们要办场严肃的技术大会《花开富贵》天灾不断!澳洲附近发生6.3级地震,一夜8次余震,华人吓傻!跟土叙大地震是否有联系?墨尔本曾发生6级地震修改几行代码就让LLM应用提速100多倍!这个团队两周搭建ChatGPT缓存层,曾被老黄OpenAI点赞硬件预算最高直降46倍!低成本上手AIGC和千亿大模型,一行代码自动并行,Colossal-AI再升级北京支持头部企业打造对标ChatGPT大模型世界首款真开源类ChatGPT大模型Dolly 2.0,可随意修改商用孟晚舟将首次出任华为轮值董事长/ 百度All in类ChatGPT项目/ 知乎因ChatGPT大涨50%…今日更多新鲜事在此百度官宣类ChatGPT大模型新项目:文心一言ChatGPT 这样的大模型,能否在国内出现和应用?| 技术专家大论道ChatGPT平替「小羊驼」Mac可跑!2行代码单GPU,UC伯克利再发70亿参数开源模型疫情总结,无奈和悲催微软杀疯了!几行代码创建私人定制ChatGPT,AI办公软件帝国来了我亲爱的爸爸在北京被新冠带走了从大神Alex Smola与李沐离职AWS创业融资顺利,回看ChatGPT大模型时代“底层武器”演进用ChatGPT「指挥」数百个模型,HuggingGPT让专业模型干专业事小破本也能炼GPT!300行代码搞定,GitHub获6k星,来自特斯拉前AI总监60行代码就能构建GPT!网友:比之前的教程都要清晰|附代码
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。