当前位置: 首页 > 科技观察

迅速获得2500颗星,AndrejKarpathy重写了一个minGPT库

时间:2023-03-21 13:08:48 科技观察

作为人工智能领域“暴力美学”的代表作,GPT可谓是风头正劲。GPT从诞生之初的1.17亿参数一路飙升至GPT-3的1750亿参数。随着GPT-3的发布,OpenAI向社区开放了商业API,鼓励大家用GPT-3进行更多的实验。但是,使用API需要一个应用程序,而您的应用程序很可能无处可去。为了让资源有限的研究人员体验玩大模型的乐趣,前特斯拉AI负责人AndrejKarpathy基于PyTorch编写了一个仅约300行代码的小型GPT训练库,并命名为minGPT。这个minGPT能够以相当高的准确性进行加法和字符级语言建模。两年后,minGPT迎来更新,Karpathy推出新版本,命名为NanoGPT,用于训练和微调中型GPT。在推出后的短短几天内,它就获得了2500颗星。项目地址:https://github.com/karpathy/nanoGPT在项目介绍中,Karpathy写道:“NanoGPT是训练和微调中等规模GPT的最简单、最快的库。它是对minGPT的重写,因为minGPT太复杂了,不想用了。NanoGPT还在开发中,目前正在OpenWebText数据集上复现GPT-2。NanoGPT代码设计目标是易读,其中train.py是A~300行代码;model.py是一个约300行的GPT模型定义,可选择从OpenAI加载GPT-2权重。”要呈现数据集,用户首先需要将一些文档标记化为一个简单的一维索引数组。$cddata/openwebtext$pythonprepare.py这将生成两个文件:train.bin和val.bin,每个文件包含代表GPT-2BPE令牌ID的uint16字节的原始序列。该训练脚本试图复制OpenAI提供的最小版本的GPT-2,即124M版本。$pythontrain.py如果您想使用PyTorch分布式数据并行(DDP)进行训练,请使用torchrun运行脚本。$torchrun--standalone--nproc_per_node=4train.py为了让代码更高效,用户还可以从模型中采样:$pythonsample.pyKarpathy说该项目目前正在一个A10040GBGPU上过夜训练损失约为3.74,4个GPU上的训练损失约为3.60。在8xA10040GB节点上训练400,000次迭代(大约1天)atm下降到3.1。至于如何在新文本上微调GPT,用户可以访问data/shakespeare并查看prepare.py。与OpenWebText不同,这将在几秒钟内运行。微调只需要很少的时间,例如分钟在单个GPU上。下面是运行微调的例子$pythontrain.pyconfig/finetune_shakespeare.py项目一上线,已经有人开始尝试了:想尝试的可以参考原项目运行。