📽️ YouTube 上新的 4 小时(哈哈)视频讲座:
"Let's reproduce GPT-2 (124M)"
视频之所以这么长,是因为它...全面:我们从空文件开始,最终得到一个 GPT-2 (124M) 模型:
- 首先我们构建 GPT-2 网络
- 然后我们优化它以快速训练
- 然后我们参考 GPT-2 和 GPT-3 论文设置训练运行优化和超参数
- 然后我们进行模型评估,以及
- 然后祈祷并去睡觉。 早上我们查看结果并享受有趣的模型生成。我们的"过夜"运行甚至非常接近 GPT-3 (124M) 模型。本视频基于 Zero To Hero 系列,并有时引用之前的视频。你也可以将此视频视为构建我的 nanoGPT 仓库,最终大约有 90% 的相似度。
Github。相关的 GitHub 仓库包含完整的提交历史,因此你可以逐步查看视频中的所有代码更改。
章节。
在高层次上,第 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 仓库
