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

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

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

机器之心 2023-02-26 12:37 发表于北京

机器之心报道

机器之心编辑部

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

更细节的内容不再赘述。

相关文章
|
3天前
|
人工智能 自然语言处理 算法
大模型+蒙特卡洛树搜索,一招让LLaMa-3 8B奥数水平直逼GPT-4
【6月更文挑战第25天】 - 复旦大学和上海AI Lab的研究者提出这一算法,用于增强大型语言模型在复杂数学推理任务中的能力,解决现有模型推理准确性问题。 - **MCTSr**流程包括初始化、选择、自细化、自评估、反向传播和UCT更新,通过多轮迭代提升答案质量。 - 实验显示,该算法在**GSM8K**、**GSM Hard**、**MATH**和**Olympiad-level**数据集上表现出色,尤其在多次迭代后。 - 尽管计算成本高且不适用于所有问题类型,但研究揭示了强化LLMs推理能力的新途径,对未来的AI应用具有指导意义。
26 8
|
8天前
|
人工智能 自然语言处理 算法
【AIGC】GPT-4o技术分析-浅谈
【AIGC】GPT-4o技术分析-浅谈
57 6
|
12天前
|
数据采集 机器学习/深度学习 人工智能
可信度超越GPT-4V,清华&面壁揭秘小钢炮模型背后的高效对齐技术
【6月更文挑战第15天】清华大学与面壁智能合作的RLAIF-V框架挑战GPT-4V,通过开源AI反馈增强大语言模型的可信度。该框架利用开放数据和在线学习优化对齐,减少幻觉错误,12B参数模型表现超越GPT-4V。虽有数据质量和稳定性问题,但展示出开源MLLMs潜力。[链接: https://arxiv.org/abs/2405.17220]
53 1
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
GPT-4中的机器学习技术
GPT-4中的机器学习技术
10 0
|
10天前
|
人工智能 自然语言处理 搜索推荐
探索马斯克xAI与GPT模型的现状与发展:引领人工智能的未来
探索马斯克创立的xAI与"百模大战"的崛起,马斯克从对AI的担忧转向实际行动,成立xAI以追求宇宙真理。中国AI产业在竞争中崛起,多家企业推出大模型,展现出强劲实力。AI大模型发展趋势包括规模性能提升、多模态学习、个性化和自适应,以及模型的可解释性和公正性。xAI与GPT模型的出现,揭示了AI的潜力与挑战,未来将推动人机协作和模型的可持续发展。
|
1月前
|
数据采集 人工智能 自然语言处理
手机可跑,3.8B参数量超越GPT-3.5!微软发布Phi-3技术报告:秘密武器是洗干净数据
【5月更文挑战第16天】微软发布 Phi-3 技术报告,介绍了一个拥有3.8B参数的新语言模型,超越GPT-3.5,成为最大模型之一。 Phi-3 在手机上运行的特性开启了大型模型移动应用新纪元。报告强调数据清洗是关键,通过优化设计实现高效运行。实验显示 Phi-3 在多项NLP任务中表现出色,但泛化能力和数据隐私仍是挑战。该模型预示着AI领域的未来突破。[[论文链接](https://arxiv.org/pdf/2404.14219.pdf)]
33 2
|
1月前
|
人工智能 自然语言处理 数据可视化
一键本地部署类GPT大模型,免费!
一键本地部署类GPT大模型,免费!
87 1
|
1月前
|
人工智能
苹果推出理解、转化模型ReALM,性能超GPT-4
【5月更文挑战第13天】苹果发布ReALM模型,将参考解析转化为语言建模,超越GPT-4。ReALM通过将非文本实体转为文本处理,解决了AI在处理特定问题时的局限。实验显示,ReALM在多种参考解析任务上优于GPT-3.5和GPT-4,尤其在屏幕实体参考解析上提升超5%。但模型可能因信息丢失和高计算需求带来挑战。[链接](https://arxiv.org/abs/2403.20329)
29 3
|
23天前
|
机器学习/深度学习 人工智能 自然语言处理
对于 OpenAI 最新发布 支持实时语音对话的模型GPT-4o,你想说什么?
【6月更文挑战第4天】对于 OpenAI 最新发布 支持实时语音对话的模型GPT-4o,你想说什么?个人关于 OpenAI 最新发布的支持实时语音对话模型的 GPT-4o 想说的内容
|
1月前
|
人工智能 JSON 安全
超越GPT4!Cluade 3重磅发布!国外最新大模型!
超越GPT4!Cluade 3重磅发布!国外最新大模型!
38 0

热门文章

最新文章