Auto Byte

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

微信扫一扫获取更多资讯

Science AI

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

微信扫一扫获取更多资讯

Karpathy最新四小时视频教程:从零复现GPT-2,通宵运行即搞定

这是Karpathy「Neural Networks:zero to hero」系列视频的最新内容。


AI 大牛 Andrej Karpathy 又「上新」了,这次一口气放出了长达四个小时的视频。
视频主题为「让我们来复现 GPT-2(1.24 亿参数)」。
图片
Karpathy 表示,此次视频之所以这么长,是因为它很全面:从空文件开始,最后得到一个 GPT-2(124M)模型。
具体实现步骤包括如下:
  • 首先构建 GPT-2 网络。

  • 然后对其进行优化,以便快速训练。

  • 然后通过参考 GPT-2 和 GPT-3 论文来设置训练运行优化和超参数

  • 然后进行模型评估。

  • 然后祈祷好运,并去睡觉。

  • 第二天早上,查看结果并享受有趣的模型生成。通宵运行的结果甚至非常接近 GPT-3(124M)模型。

该视频以「Zero To Hero」系列视频为基础,有些地方参考了以往视频。你可以根据该视频构建 nanoGPT 存储库,到最后大约有 90% 相似。

当然,Karpathy 上传了相关的 GitHub 存储库「build-nanogpt」,包含了全部提交历史,这样你可以一步步看到视频中所有的代码变化。
图片
 GitHub 地址:https://github.com/karpathy/build-nanogpt
AI 独角兽 Scale AI CEO Alexandr Wang 表示,Karpathy 发布视频就像是流行歌手发布新单曲一样。
图片
甚至还有人将 Karpathy 的推特内容通过文生音乐模型 Suno 转换为了一首 Rap,简直了。
                                   图源:https://x.com/peterxing/status/1799960277288677478

视频概览
该视频分为了四大部分:建立网络(很多是以往教程回顾)、加快训练速度、设置运行和结果。
视频第一部分内容(带时间戳)具体如下:
  • 00:13:47 第 1 部分:实现 GPT-2 nn.Module
  • 00:28:08 加载 huggingface/GPT-2 参数
  • 00:31:00 实现前向传递以获取 logits 
  • 00:33:31 采样初始化、前缀 token、tokenization
  • 00:37:02 采样循环
  • 00:41:47 采样、自动检测设备
  • 00:45:50 让我们训练:数据批次 (B,T) → logits (B,T,C)
  • 00:52:53 交叉熵损失
  • 00:56:42 优化循环:过度拟合单个批次

视频第二部分内容(带时间戳)具体如下:

  • 01:22:18 第 2 部分:让我们加快速度。GPU、混合精度、1000 毫秒 
  • 01:28:14 Tensor Cores、代码计时、TF32 精度、333 毫秒 
  • 01:39:38 float16、梯度缩放器、bfloat16、300 毫秒 
  • 01:48:15 torch.compile、Python 开销、内核融合、130 毫秒 
  • 02:00:18 flash attention 技术、96 毫秒 
  • 02:06:54 nice/ugly 数。词汇量 50257 → 50304,93 毫秒

视频第三部分内容(带时间戳)具体如下:

  • 02:14:55 第 3 部分:超参数、AdamW、梯度裁剪
  • 02:21:06 学习率调度器:预热 + 余弦衰减
  • 02:26:21 批大小调度权重衰减、FusedAdamW、90 毫秒
  • 02:34:09 梯度累积
  • 02:46:52 分布式数据并行 (DDP)
  • 03:10:21 GPT-2、GPT-3、FineWeb (EDU) 中使用的数据集
  • 03:23:10 验证数据拆分、验证损失、采样恢复
  • 03:28:23 评估:HellaSwag,开始运行

视频第四部分内容(带时间戳)具体如下:
  • 03:43:05 第 4 部分:早上出结果!GPT-2、GPT-3 复现成功
  • 03:56:21 向 llm.c 致敬,原始 C/CUDA 中等效但速度更快的代码
03:59:39 总结,并上传「build-nanogpt github」存储库

完整视频参见如下:https://www.youtube.com/watch?v=l8pRSuU81PU&feature=youtu.be
入门GPT-2Andrej Karpathy
相关数据
权重技术

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

交叉熵技术

交叉熵(Cross Entropy)是Loss函数的一种(也称为损失函数或代价函数),用于描述模型预测值与真实值的差距大小

调度技术

调度在计算机中是分配工作所需资源的方法。资源可以指虚拟的计算资源,如线程、进程或数据流;也可以指硬件资源,如处理器、网络连接或扩展卡。 进行调度工作的程序叫做调度器。调度器通常的实现使得所有计算资源都处于忙碌状态,允许多位用户有效地同时共享系统资源,或达到指定的服务质量。 see planning for more details

参数技术

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

学习率技术

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

超参数技术

在机器学习中,超参数是在学习过程开始之前设置其值的参数。 相反,其他参数的值是通过训练得出的。 不同的模型训练算法需要不同的超参数,一些简单的算法(如普通最小二乘回归)不需要。 给定这些超参数,训练算法从数据中学习参数。相同种类的机器学习模型可能需要不同的超参数来适应不同的数据模式,并且必须对其进行调整以便模型能够最优地解决机器学习问题。 在实际应用中一般需要对超参数进行优化,以找到一个超参数元组(tuple),由这些超参数元组形成一个最优化模型,该模型可以将在给定的独立数据上预定义的损失函数最小化。

批次技术

模型训练的一次迭代(即一次梯度更新)中使用的样本集。

GPT-2技术

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

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