一天star量破千,特斯拉AI总监写了个GPT的Pytorch训练库( 二 )


本文插图
minGPT 是如何实现的?
在实现过程中 , Karpathy 参考了 OpenAI GPT 官方项目 , 以及其他组织的示例等 。
代码

  • OpenAI gpt-2 项目提供了模型 , 但没有提供训练代码(https://github.com/openai/gpt-2);
  • OpenAI 的 image-gpt 库在其代码中进行了一些类似于 GPT-3 的更改 , 是一份不错的参考(https://github.com/openai/image-gpt);
  • Huggingface 的 transformers 项目提供了一个语言建模示例 。 它功能齐全 , 但跟踪起来有点困难 。 (https://github.com/huggingface/transformers/tree/master/examples/language-modeling)
论文 + 实现说明
此外 , 项目作者还介绍了相关的论文和实现细节 。
1. GPT-1:《Improving Language Understanding by Generative Pre-Training》
  • 论文地址:https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/language_understanding_paper.pdf
GPT-1 模型大体遵循了原始 transformer , 训练了仅包含 12 层解码器、具备遮蔽自注意力头(768 维状态和 12 个注意力头)的 transformer 。 具体实现细节参见下图:
一天star量破千,特斯拉AI总监写了个GPT的Pytorch训练库
本文插图
2. GPT-2:《Language Models are Unsupervised Multitask Learners》
  • 论文地址:https://d4mucfpksywv.cloudfront.net/better-language-models/language_models_are_unsupervised_multitask_learners.pdf
GPT-2 将 LayerNorm 移动每个子模块的输入 , 类似于预激活残差网络 , 并在最后的自注意力模块后添加了一个额外的层归一化 。 此外 , 该模型还更改了模型初始化(包括残差层初始化权重等)、扩展了词汇量、将 context 规模从 512 个 token 增加到 1024、使用更大的批大小等 。 具体实现细节参见下图:
一天star量破千,特斯拉AI总监写了个GPT的Pytorch训练库
本文插图
3. GPT-3:《Language Models are Few-Shot Learners》
  • 论文地址:https://arxiv.org/pdf/2005.14165.pdf
GPT-3 使用了和 GPT-2 相同的模型和架构 , 区别在于 GPT-3 在 transformer 的各层上都使用了交替密集和局部带状稀疏的注意力模式 , 类似于 Sparse Transformer 。 具体实现细节参见下图:
一天star量破千,特斯拉AI总监写了个GPT的Pytorch训练库
本文插图
Andrej Karpathy 其人
Andrej Karpathy 是计算机视觉、生成式模型与强化学习领域的研究者 , 博士期间师从斯坦福大学计算机科学系教授李飞飞 。 读博期间 , 他曾两次在谷歌实习 , 研究在 Youtube 视频上的大规模特征学习 。 此外 , 他还和李飞飞等人一起设计、教授了斯坦福经典课程 CS231n 。
一天star量破千,特斯拉AI总监写了个GPT的Pytorch训练库
本文插图
2016 年 , Karpathy 加入 OpenAI 担任研究科学家 。 2017 年 , 他加入特斯拉担任人工智能与自动驾驶视觉总监 。 如今 , Karpathy 已经升任特斯拉 AI 高级总监 。 他所在的团队负责特斯拉自动驾驶系统 Autopilot 所有神经网络的设计 , 包括数据收集、神经网络训练及其在特斯拉定制芯片上的部署 。
和教授 CS231n 时一样 , Karpathy 希望他利用业余时间做的这个 minGPT 也能有一定的教育意义 。 他这种化繁为简的举动得到了众多社区成员的赞赏:

一天star量破千,特斯拉AI总监写了个GPT的Pytorch训练库


推荐阅读