Karpathy最新四小時影片教程:從零復現GPT-2,通宵執行即搞定

机器之心發表於2024-06-11

這是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,簡直了。Karpathy最新四小時影片教程:從零復現GPT-2,通宵執行即搞定
圖源: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

相關文章