对于
机器学习
从业者来说,大模型的门槛很高:因为体量太大难以训练,很长时间里这个方向一直被大公司垄断。不过最近,简化 GPT 模型的方法越来越多了。
近日,前特斯拉 AI 高级总监、自动驾驶 Autopilot 负责人 Andrej Karpathy 发布了从零开始构建 GPT 模型的完整教程。消息一出,立即受到了人们的关注。
在长达近两小时的教学视频中,Karpathy 会教你根据 NLP 领域经典论文《Attention is All You Need》构建一个 transformer,再以此为基础完成一个类似 OpenAI 的
GPT-2
/ GPT-3 的生成式预训练 GPT 模型。
-
视频的 Google colab :https://colab.research.google.com/drive/1JMLa53HDuA-i7ZBmqV7ZnA3c_fvtXnx-?usp=sharing
-
GitHub:https://github.com/karpathy/ng-video-lecture
-
视频链接:https://www.youtube.com/watch?v=kCc8FmEb1nY&list=PLAqhIrjkxbuWI23v9cThsA9GvCAUhRvKZ&index=7
在该教学的前半部分,Andrej Karpathy 会从构建基本的
语言模型
开始讲起,随后引入 transformer 的核心「注意力」机制,作为有向图中节点之间的一种通信 / 消息传递。
在视频的后半部分,你将学会构建 Transformer 的更多细节,包括多头
自注意力
、MLP、残差连接、layernorm 等。然后将学会训练一个 GPT 模型并将其与 OpenAI 的 GPT-3(模型体量大约小 1 万 – 100 万倍,但
神经网络
相同)和 ChatGPT 进行比较。
在跟随视频的指引结束后,你将得到一个约 1000 万
参数
的
语言模型
,在 1 块 GPU 上训练大约需要 15 分钟,将所有莎士比亚作品串联成一个 1MB 大小的文件。然后我们就可以利用 AI 来生成模仿莎士比亚的语句了。
Andrej Karpathy 建议你在学习完课程之后进行一些练习:
-
练习 1:n 维
张量
掌握挑战:将 “Head” 和 “MultiHeadAttention” 组合成一个并行处理所有头部的类,将头视为另一个批量维度(答案在 nanoGPT 中)。 -
练习 2:在自己选择的数据集上训练 GPT, 还有哪些其他数据可能会很有趣?(如果你愿意,可以训练所有可能的 3 位数加法问题并以相反的顺序预测和。看看你的 Transformer 是否学习了正确的加法算法,是否正确地泛化到
验证集
上?)。 -
练习 3:找到一个很大的数据集,大到你看不到 train 和 val 损失之间的差距。在此数据上预训练 transformer,然后使用该模型进行初始化,并在莎士比亚数据集上以较少的步骤和较低的
学习率
对其进行微调。看看能否通过使用预训练获得较低的验证损失? -
练习 4:阅读一些 transformer 论文并实践他们提出的改进,探索提高 GPT 性能的可能性。
该教学中提到的 GPT 模型是前几天 Andrej Karpathy 发布的 NanoGPT。它是对 minGPT 的重写,也是目前用于训练和微调中型尺度 GPT 最简单、最快的库。NanoGPT 代码设计目标是简单易读,其中 train.py 是一个约 300 行的代码;model.py 是一个约 300 行的 GPT 模型定义,它可以选择从 OpenAI 加载
GPT-2
权重
。
目前该项目在 GitHub 上已经有超过 8000 的 Star 量:https://github.com/karpathy/nanoGPT
2022 年 7 月,Andrej Karpathy 宣布辞任特斯拉高级
人工智能
总监职位,目前他仍然没有公开自己的去向。在这段时间里 Karpathy 也没闲着,他在 YouTube 上发布的「Neural Networks:Zero to Hero」系列视频,从反向传播开始讲起,如今已经出到了第七部。
Karpathy 曾在推特上表示:只要你懂 Python,并能模糊记起高中学过的求导知识,看了我的视频你还不理解反向传播和
神经网络
核心要点的话,那我就吃一只鞋。
如果你对于
深度学习
感兴趣,可以跟着他从头学起。
参考内容:
https://twitter.com/karpathy/status/1615398117683388417
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...