返回 动态 apply CMS 文章

Karpathy 发布 4 小时视频:从零复现 GPT-2 (124M) 完整指南

跟随 Karpathy 的 4 小时视频,从零开始复现 GPT-2 (124M),掌握大语言模型训练的全流程。

GPT-2复现视频教程nanoGPT
成长分 / 100 84 综合收获、行动、留存与影响

Karpathy 发布 4 小时视频:从零复现 GPT-2 (124M) 完整指南
为什么值得读视频从空文件开始,逐步构建 GPT-2 网络,适合想深入了解模型实现的开发者。

涵盖训练优化技巧(如混合精度、torch.compile、flash attention),提升训练效率。

关键洞察
  1. 视频时长 4 小时,内容全面,从网络构建到训练优化,再到评估和生成。
  2. 最终得到的模型与 GPT-3 (124M) 性能接近,验证了复现方法的有效性。
  3. GitHub 仓库提供完整提交历史,可逐步对照视频中的代码更改。
转成行动

深入阅读

正文与原文对照

原文保真覆盖:全文原文字符:2853

📽️ YouTube 上新的 4 小时(哈哈)视频讲座:

"Let's reproduce GPT-2 (124M)"

https://t.co/QTUdu8b0qh

视频之所以这么长,是因为它...全面:我们从空文件开始,最终得到一个 GPT-2 (124M) 模型:

  • 首先我们构建 GPT-2 网络
  • 然后我们优化它以快速训练
  • 然后我们参考 GPT-2 和 GPT-3 论文设置训练运行优化和超参数
  • 然后我们进行模型评估,以及
  • 然后祈祷并去睡觉。 早上我们查看结果并享受有趣的模型生成。我们的"过夜"运行甚至非常接近 GPT-3 (124M) 模型。本视频基于 Zero To Hero 系列,并有时引用之前的视频。你也可以将此视频视为构建我的 nanoGPT 仓库,最终大约有 90% 的相似度。

Github。相关的 GitHub 仓库包含完整的提交历史,因此你可以逐步查看视频中的所有代码更改。

https://t.co/BOzkxQ8at2

章节。

在高层次上,第 1 节是构建网络,其中很多可能是复习。第 2 节是使训练快速。第 3 节是设置运行。第 4 节是结果。更详细地说:

00:00:00 介绍:让我们复现 GPT-2 (124M)

00:03:39 探索 GPT-2 (124M) OpenAI 检查点

00:13:47 第 1 节:实现 GPT-2 nn.Module

00:28:08 加载 huggingface/GPT-2 参数

00:31:00 实现前向传播以获得 logits

00:33:31 采样初始化、前缀标记、分词

00:37:02 采样循环

00:41:47 采样,自动检测设备

00:45:50 让我们训练:数据批次 (B,T) → logits (B,T,C)

00:52:53 交叉熵损失

00:56:42 优化循环:过拟合单个批次

01:02:00 数据加载器精简版

01:06:14 参数共享 wte 和 lm_head

01:13:47 模型初始化:std 0.02,残差初始化

01:22:18 第 2 节:让我们让它更快。GPU、混合精度、1000ms

01:28:14 Tensor Cores、代码计时、TF32 精度、333ms

01:39:38 float16、梯度缩放器、bfloat16、300ms

01:48:15 torch.compile、Python 开销、内核融合、130ms

02:00:18 flash attention、96ms

02:06:54 好/坏数字。词汇大小 50257 → 50304、93ms

02:14:55 第 3 节:超参数、AdamW、梯度裁剪

02:21:06 学习率调度器:预热 + 余弦衰减

02:26:21 批量大小调度、权重衰减、FusedAdamW、90ms

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 仓库