体能训练 / 松动小型 GPT,最单纯最慢的程序库了!
其名叫:NanoGPT。
从英文名字就能窥见是个 ” 奈米枪械 “,据译者如是说,该库标识符单纯易懂,2 个仅 300 行标识符的文档。
也已如前所述 OpenWebText 重现 GPT-2 ( 124M ) ,在一般而言 8XA100 40GB 结点上,体能训练天数为 38 半小时。
值得一提,该库公共信息是前Tesla AI 副总裁,李Bazelle得意门生,Andrej Karpathy。本次正式发布的 NanoGPT,便是他 2 天前 MinGPT 的改良版。
现阶段,此工程项目在 GitHub 所获 star 已超 6k,HackerNews 上 points 也破千。
不无不幸地,文章区一片片 ” 喜大普奔 “。
有网民则表示,这才是咱分立开发人员丰富多彩的 AI 辅助工具。
除了人对其始终对外开放传授给撷取科学知识的作法,衷心感谢。
所以,那个最单纯最慢的 NanoGPT 是不是用?
上面展开谈谈。
NanoGPT 的Makarova
正式发布文档里头包涵两个约 300 行的 GPT 数学模型表述(配置文档:model.py),能优先选择从 OpenAI 读取 GPT-2 权重股。
除了两个体能训练数学模型 PyTorch 样板工程(配置文档:train.py),反之亦然也是 300 二百一十三。
译者补足道,标识符并无从,很难就能满足用户我们市场需求——不论是Cubzac体能训练新数学模型,却是如前所述预体能训练展开松动(现阶段需用的最小数学模型为 1.3B 模块的 GPT-2)。
△两个体能训练实例展示
上手前,需要提前准备好依赖项:
pytorch <3
numpy <3
pip install tiktoken for OpenAI ’ s fast BPE code <3
pip install wandb for optional logging <3
pip install tqdm
$ cd data/openwebtext
$ python prepare.py
这将创建两个 train.bin 和 val.bin 文档,将 GPT2 BPE token id 放入两个序列中。
然后准备体能训练,现阶段脚本默认是尝试重现 GPT-2,124M 模块版本,但译者更鼓励我们阅读标识符查看文档顶部的设置及路径。
$ python train.py
如需使用 PyTorch 分布式数据并行 ( DDP ) 展开体能训练,请使用 torchrun 运行脚本。
比如,要在 4 个 GPU 结点上运行,标识符如下:
$ torchrun –standalone –nproc_per_node=4 train.py
要从数学模型结点中采样,就需将一些检查点写入输入目录中。
$ python sample.py
据译者现阶段自己的测试,他在 1 个 A100 40GB GPU 上体能训练一晚,损失约为 3.74。如果是在 4 个 GPU 上体能训练损失约为 3.60。
如果在 8 个 A100 40GB 结点上展开约 50 万次迭代,时长约为 1 天,atim 的体能训练降至约 3.1,init 随机概率是 10.82,已将结果带到了 baseline 范围。
观察不同模块下体能训练 / 验证 loss 值如下:
至于如何如前所述新文本松动 GPT,译者也简介了方法。
先访问 data/shakespeare,查看 prepare.py。
运行两个松动示例,如下:
$ python train.py config/finetune_shakespeare.py
该操作将读取配置模块,覆盖 config/finetune_shakespeare.py 文档。
译者指出,一般情况下,基本操作就是从 GPT-2 检查点初始化 init_from,再正常体能训练。
此外,如果手里只有 macbook 或一些 ” 力量 ” 不足的小破本,译者建议使用 shakespeare 数据集,然后在两个很小的网络上运行。
先渲染数据;
$ cd data/shakespeare
$ python prepare.py
再用两个较小的网络来运行体能训练脚本。
比如上面就创建了两个小得多的 Transformer(4 层,4 个 head,64 嵌入大小),只在 CPU 运行,在译者自己的苹果 AIR M1 本上,每次迭代大约需要 400 毫秒。
$ cd ../..
$ python train.py –dataset=shakespeare –n_layer=4 –n_head=4 –n_embd=64 –device=cpu –compile=False –eval_iters=1 –block_size=64 –batch_size=8
关于NanoGPT 的后续计划,Andrej Karpathy 也在网上有所撷取。
他将试图让 NanoGPT 更快复现其他 GPT-2 数学模型,然后将预体能训练扩展至更大规模的数学模型 / 数据集中,此外,他还计划改进下松动部分的文档。
转战教育和开源的Tesla前 AI 副总裁
熟悉 Karpathy 的圈内人肯定知道,他此前是李Bazelle得意门生,也长期致力于让更多人接触了解神经网络和相关数据集。
2020 年 8 月,他就曾正式发布 NanoGPT 前一代,MinGPT,反之亦然旨在让 GPT 做到小巧、简洁、可解释,同样主打 300 行标识符搞掂。
Karpathy 另一大身份是前Tesla AI 核心人物。
在马斯克麾下,他历任Tesla高级 AI 主管、Tesla自动驾驶 AutoPilot 负责人、Tesla超算 Dojo 负责人、Tesla擎天柱人形机器人负责人…
2022 年 7 月,Karpathy Andrej 离职,在业内引发不小讨论。他则表示,未来将花更多天数在 AI、开源技术教育上,比如他做了一档 AI 课程,现还在更新中。
此番正式发布 NanoGPT 同时,Karpathy 还下场安抚了下催更党——新视频正从 0 开始构建,计划 2 周内正式发布。
最后附上:
NanoGPT 工程项目:https://github.com/karpathy/nanoGPT
Andrej Karpathy 课程:https://karpathy.ai/zero-to-hero.html