Appearance
llm.c 閱讀評論
優點
1. 卓越的教學價值
- 沒有框架抽象層,每個運算都一目了然
doc/layernorm/layernorm.md是教科書級別的教學文件,從 PyTorch 自動微分 → 手動推導 → C 實作,完整展示了深度學習層的實作流程- 程式碼本身就是文件,註解精準且完整
2. 效能佳
- 比 PyTorch Nightly 快約 7%(主要來自移除框架開銷和手動優化)
- 支援多種精度和硬體加速(cuBLAS、cuDNN、OpenMP、MPI)
- Kernel 實作使用了很多 CUDA 技巧:shared memory、warp reduce、streaming stores (
__ldcs/__stcs)
3. 設計平衡
- 主目錄維持簡潔可讀,複雜 kernel 放在
dev/目錄 - 嚴格控制複雜性引入
不足
1. 實務應用限制
- 僅支援 GPT-2/GPT-3 架構,無法直接用於訓練 LLaMA 等其他模型
- 沒有 KV cache,推理效率低(每次生成都做完整 forward)
- 資料處理管線較簡陋,不支援大規模分散式資料集
2. 程式碼維護性
- CUDA kernel 大量使用模板和巨集,閱讀門檻高
- AdamW 更新函數因為支援多種配置變得非常複雜(~200 行)
- checkpoint 格式使用自訂 binary,無法與主流框架互通
3. 生態不足
- 沒有模型 zoo 或預訓練模型庫
- 無自動混合精度訓練(需手動指定)
- 除錯工具欠缺
與 nanoGPT 比較
| 面向 | nanoGPT (PyTorch) | llm.c |
|---|---|---|
| 依賴 | PyTorch + 245MB | 純 C + CUDA |
| 行數 | ~300 (核心) | ~1000-1900 |
| 速度 | 基準 | 快 7% |
| 可讀性 | 高層抽象 | 底層透明 |
| 移植性 | 需 Python 生態 | 幾乎任何平台可編譯 |
| 彈性 | 易修改架構 | 難修改架構 |