当前位置:静雅生活网 > 数码百科 >

小破本也能炼 GPT!300 行代码搞定,GitHub 获 6k 星,来自特斯拉前 AI 总监

导读:训练 / 微调中型 GPT,最简单最快的库来了!  其名为:NanoGPT。  从名字就能看出是个 " 纳米武器 ",据作者介绍,该库代码简单易读,2 个仅 300 行代码

  训练 / 微调中型 GPT,最简单最快的库来了!

  其名为:NanoGPT。

  从名字就能看出是个 " 纳米武器 ",据作者介绍,该库代码简单易读,2 个仅 300 行代码的文件。

  现已基于 OpenWebText 重现 GPT-2 ( 124M ) ,在单个 8XA100 40GB 节点上,训练时间为 38 小时。

  值得一提的是,该库发布者是前特斯拉 AI 总监,李飞飞高徒,Andrej Karpathy。此次发布的 NanoGPT,正是他 2 年前 MinGPT 的升级版。

小破本也能炼 GPT!300 行代码搞定,GitHub 获 6k 星,来自特斯拉前 AI 总监

  目前,此项目在 GitHub 所获 star 已超 6k,HackerNews 上 points 也破千。

小破本也能炼 GPT!300 行代码搞定,GitHub 获 6k 星,来自特斯拉前 AI 总监

  毫无意外地,评论区一片 " 喜大普奔 "。

  有网友表示,这才是咱独立开发者喜闻乐见的 AI 工具。

小破本也能炼 GPT!300 行代码搞定,GitHub 获 6k 星,来自特斯拉前 AI 总监

  还有人对其一直开放传授分享知识的做法,表示感谢。

小破本也能炼 GPT!300 行代码搞定,GitHub 获 6k 星,来自特斯拉前 AI 总监

  那么,这个最简单最快的 NanoGPT 怎么用?

  下面展开讲讲。

  NanoGPT 的打开方式

  发布文件里面包含一个约 300 行的 GPT 模型定义(文件名:model.py),可以选择从 OpenAI 加载 GPT-2 权重。

  还有一个训练模型 PyTorch 样板(文件名:train.py),同样也是 300 多行。

  作者补充道,代码并不难,很容易就能满足大家需求——无论是从头开始训练新模型,还是基于预训练进行微调(目前可用的最大模型为 1.3B 参数的 GPT-2)。

小破本也能炼 GPT!300 行代码搞定,GitHub 获 6k 星,来自特斯拉前 AI 总监

   一个训练实例展示

  上手前,需要提前准备好依赖项:

  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!300 行代码搞定,GitHub 获 6k 星,来自特斯拉前 AI 总监

  至于如何基于新文本微调 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 模型,然后将预训练扩展至更大规模的模型 / 数据集中,此外,他还计划改进下微调部分的文档。

  转战教育和开源的特斯拉前 AI 总监

  熟悉 Karpathy 的圈内人肯定知道,他此前是李飞飞高徒,也长期致力于让更多人接触了解神经网络和相关数据集。

  2020 年 8 月,他就曾发布 NanoGPT 前一代,MinGPT,同样旨在让 GPT 做到小巧、简洁、可解释,同样主打 300 行代码搞定。

  Karpathy 另一大身份是前特斯拉 AI 核心人物。

  在马斯克麾下,他历任特斯拉高级 AI 主管、特斯拉自动驾驶 AutoPilot 负责人、特斯拉超算 Dojo 负责人、特斯拉擎天柱人形机器人负责人…

小破本也能炼 GPT!300 行代码搞定,GitHub 获 6k 星,来自特斯拉前 AI 总监

  2022 年 7 月,Karpathy Andrej 离职,在业内引发不小讨论。他表示,未来将花更多时间在 AI、开源技术教育上,比如他做了一档 AI 课程,现还在更新中。

  此番发布 NanoGPT 同时,Karpathy 还下场安抚了下催更党——新视频正从 0 开始构建,计划 2 周内发布

小破本也能炼 GPT!300 行代码搞定,GitHub 获 6k 星,来自特斯拉前 AI 总监

  最后附上:

  NanoGPT 项目:https://github.com/karpathy/nanoGPT

  Andrej Karpathy 课程:https://karpathy.ai/zero-to-hero.html

版权声明:本文部分来自互联网,由小编精心所写,本文地址:http://www.zhubian88.cn/smbk/74972.html,如需转载,请注明出处!

联系我们

在线咨询:点击这里给我发消息

微信号:weixin888

工作日:9:30-18:30,节假日休息