Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

泽南报道

特斯拉前AI总监教你手搓GPT大模型,教学视频已出

「从零开始,用代码直接写。」

对于机器学习从业者来说,大模型的门槛很高:因为体量太大难以训练,很长时间里这个方向一直被大公司垄断。不过最近,简化 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

入门GPTAndrej Karpathy
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

自注意力技术

自注意力(Self-attention),有时也称为内部注意力,它是一种涉及单序列不同位置的注意力机制,并能计算序列的表征。自注意力在多种任务中都有非常成功的应用,例如阅读理解、摘要概括、文字蕴含和语句表征等。自注意力这种在序列内部执行 Attention 的方法可以视为搜索序列内部的隐藏关系,这种内部关系对于翻译以及序列任务的性能非常重要。

人工智能技术

在学术研究领域,人工智能通常指能够感知周围环境并采取行动以实现最优的可能结果的智能体(intelligent agent)

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

学习率技术

在使用不同优化器(例如随机梯度下降,Adam)神经网络相关训练中,学习速率作为一个超参数控制了权重更新的幅度,以及训练的速度和精度。学习速率太大容易导致目标(代价)函数波动较大从而难以找到最优,而弱学习速率设置太小,则会导致收敛过慢耗时太长

张量技术

张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在 维空间内,有 个分量的一种量,其中每个分量都是坐标的函数,而在坐标变换时,这些分量也依照某些规则作线性变换。称为该张量的秩或阶(与矩阵的秩和阶均无关系)。 在数学里,张量是一种几何实体,或者说广义上的“数量”。张量概念包括标量、矢量和线性算子。张量可以用坐标系统来表达,记作标量的数组,但它是定义为“不依赖于参照系的选择的”。张量在物理和工程学中很重要。例如在扩散张量成像中,表达器官对于水的在各个方向的微分透性的张量可以用来产生大脑的扫描图。工程上最重要的例子可能就是应力张量和应变张量了,它们都是二阶张量,对于一般线性材料他们之间的关系由一个四阶弹性张量来决定。

验证集技术

验证数据集是用于调整分类器超参数(即模型结构)的一组数据集,它有时也被称为开发集(dev set)。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

语言模型技术

语言模型经常使用在许多自然语言处理方面的应用,如语音识别,机器翻译,词性标注,句法分析和资讯检索。由于字词与句子都是任意组合的长度,因此在训练过的语言模型中会出现未曾出现的字串(资料稀疏的问题),也使得在语料库中估算字串的机率变得很困难,这也是要使用近似的平滑n元语法(N-gram)模型之原因。

GPT-2技术

GPT-2是OpenAI于2019年2月发布的基于 transformer 的大型语言模型,包含 15 亿参数、在一个 800 万网页数据集上训练而成。据介绍,该模型是对 GPT 模型的直接扩展,在超出 10 倍的数据量上进行训练,参数量也多出了 10 倍。在性能方面,该模型能够生产连贯的文本段落,在许多语言建模基准上取得了 SOTA 表现。而且该模型在没有任务特定训练的情况下,能够做到初步的阅读理解、机器翻译、问答和自动摘要。

推荐文章
暂无评论
暂无评论~