- Andrej Karpathyが純粋なC/CUDAで作ったシンプルなLLM学習コード
- いまやFlash Attentionとともに、bfloat16でマルチGPUトレーニングを実行可能
- 約3000行のC/CUDAコードで実装されており、全体としてPyTorchより最大7%程度高速
- これまでに進めてきた内容
- 混合精度学習(bfloat16)
- 正規化されたログを具体化しない(現在の
torch.compileとは異なる)FusedClassifierを含む多数のカーネル最適化
- Flash Attention(cuDNNから直接)
- A100が128ビットのロード(
LDG.128)およびストア(STS.128)命令を使うよう強制するPacked128データ構造
- いまやマルチGPUトレーニングも可能
- MPI+NCCLを用いたマルチGPUトレーニングの最初のバージョン
- NVIDIA Nsight Computeによるトレーニング全体実行のプロファイリング
- ZeRO(オプティマイザ状態のシャーディング)ステージ1のマージPR
- 目標は、124Mから1.6Bに至るあらゆるモデルサイズのGPT-2ミニシリーズをC/CUDAで直接再現する、安定していて、クリーンで、テスト済みの、最小限で、強化され、十分に最適化されたLLMスタックを作ること
1件のコメント
llm.c - raw C/CUDA で LLM をトレーニングする