KellerJordan/modded-nanogpt

NanoGPT (124M) in 90 seconds

解決的問題

它解決了盡可能快速訓練語言模型的挑戰。具體而言,它旨在尋找一種在 8 個 NVIDIA H100 GPU 上訓練模型的最快演算法,以實現特定的性能目標(在 FineWeb 驗證集上達到 3.28 的交叉熵損失)。

工作原理

該專案是一個協作式的「競速」(speedrun),透過迭代優化訓練流水線來實現。它始於基於 NanoGPT 和 llm.c 的 PyTorch 訓練器,此後集成了數十種架構與系統優化,包括:

  • Optimizers: 實作了 Muon 與 NorMuon 優化器。
  • Architecture: 使用了 Rotary embeddings、QK-Norm、ReLU² 以及從嵌入到每個區塊的 skip connections。
  • Precision: 在 head 與 MLP 前向傳播中使用 FP8,在交叉熵計算中使用 BF16。
  • Attention: 集成了 Flash Attention 3、長短滑動窗口模式與 YaRN。
  • Systems: 優化了梯度 all-reduce/reduce-scatter 以及計算與通訊的重疊。

適用對象

面向對極端訓練效率、LLM 優化以及挑戰 H100 GPU 硬體利用率極限感興趣的 AI 研究人員、工程師與愛好者。

亮點

  • 大幅提速:在達到相同目標損失的情況下,將訓練時間從 45 分鐘(基準)縮短至 2.2 分鐘以內。
  • 數據效率:將所需 token 數從 100 億減少到 4 億以下。
  • 協作演進:詳細的世界紀錄歷史,記錄了為了縮短幾秒訓練時間而採用的技術演進。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案