速揽2500星,Andrej Karpathy重写了一份minGPT库

时隔两年,GPT的Pytorch训练库minGPT迎来更新!

作为人工智能领域「暴力美学」的代表作,GPT 可谓是出尽风头,从诞生之初的 GPT 1.17 亿参数,一路狂飙到 GPT-3 1750 亿参数。随着 GPT-3 的发布,OpenAI 向社区开放了商业 API,鼓励大家使用 GPT-3 尝试更多的实验。然而,API 的使用需要申请,而且你的申请很有可能石沉大海。

为了让资源有限的研究者也能体验一把玩大模型的乐趣,前特斯拉 AI 负责人 Andrej Karpathy 基于 PyTorch,仅用 300 行左右的代码就写出了一个小型 GPT 训练库,并将其命名为 minGPT。这个 minGPT 能够进行加法运算和字符级的语言建模,而且准确率还不错。

时隔两年,minGPT 迎来更新,Karpathy 又上线新版本,并命名为 NanoGPT,该库用于训练和微调中型大小的 GPT。上线短短几天,狂揽 2.5K 星。

速揽2500星,Andrej Karpathy重写了一份minGPT库

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

在项目介绍中,Karpathy 这样写道:「NanoGPT 是用于训练和微调中型尺度 GPT 最简单、最快的库。是对 minGPT 的重写,因为 minGPT 太复杂了,以至于我都不愿意在使用它。NanoGPT 还在开发当中,当前致力于在 OpenWebText 数据集上重现 GPT-2。

NanoGPT 代码设计目标是简单易读,其中 train.py 是一个约 300 行的代码;model.py 是一个约 300 行的 GPT 模型定义,它可以选择从 OpenAI 加载 GPT-2 权重。」

速揽2500星,Andrej Karpathy重写了一份minGPT库

为了呈现数据集,用户首先需要将一些文档 tokenize 为一个简单的 1D 索引数组。

$ cd data/openwebtext
$ python prepare.py

这将生成两个文件:train.bin 和 val.bin,每个文件都包含一个代表 GPT-2 BPE token id 的 uint16 字节原始序列。该训练脚本试图复制 OpenAI 提供的最小的 GPT-2 版本,即 124M 版本。

$ python train.py

假如你想使用 PyTorch 分布式数据并行(DDP)进行训练,请使用 torchrun 运行脚本。

$ torchrun --standalone --nproc_per_node=4 train.py

为了让代码更有效,用户也可以从模型中进行取样:

$ python sample.py

Karpathy 表示,该项目目前在 1 个 A100 40GB GPU 上一晚上的训练损失约为 3.74,在 4 个 GPU 上训练损失约为 3.60。在 8 x A100 40GB node 上进行 400,000 次迭代(约 1 天)atm 的训练降至 3.1。

至于如何在新文本上微调 GPT,用户可以访问 data/shakespeare 并查看 prepare.py。与 OpenWebText 不同,这将在几秒钟内运行。微调只需要很少的时间,例如在单个 GPU 上只需要几分钟。下面是运行微调的一个例子

$ python train.py config/finetune_shakespeare.py

项目一上线,已经有人开始尝试了:

速揽2500星,Andrej Karpathy重写了一份minGPT库

想要尝试的小伙伴,可以参考原项目运行。

相关资讯

神级项目训练GPT-2仅需5分钟,Andrej Karpathy都点赞

租用 H100 的钱只需 233 美元。 还记得 Andrej Karpathy 纯 C 语言复现 GPT-2 大模型的项目吗? 今年 4 月,AI 领域大牛 Karpathy 一个仅用 1000 行代码即可在 CPU/fp32 上实现 GPT-2 训练的项目「llm.c」曾经引发机器学习社区的热烈讨论。

特斯拉前AI总监教你手搓GPT大模型,教学视频已出

「从零开始,用代码直接写。」

OpenAI内斗时,Karpathy在录视频:《大型语言模型入门》上线

赶紧学习起来吧!OpenAI 的风波暂时告一段落,员工也忙着「干活了」。年初回归 OpenAI 的 Andrej Karpathy 最近做了一场关于大型语言模型(LLM)的 30 分钟入门讲座,但该讲座当时没录制。因此,他基于这场讲座重新录制了一个长达 1 小时的视频,希望让更多人看到和学习。视频的主题为《大型语言模型入门》,涵盖了 LLM 的推理、训练、微调以及新出现的 LLM 操作系统和 LLM 安全。视频主打「非技术性」,偏科普,所以更加容易理解。