AI

llm.c:Karpathy 的极简 C 语言 LLM 训练实现

llm.c 是 Andrej Karpathy 的干净、极简 LLM 训练实现,使用纯 C/CUDA,专为教育目的设计,帮助理解 Transformer 的工作原理。

Keeping this site alive takes effort — your support means everything.
無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分! 無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分!
llm.c:Karpathy 的极简 C 语言 LLM 训练实现

llm.c 提供了一个在纯 C 中完整、可运行的 GPT-2 训练实现。

graph LR
    A[输入文本\n已分词] --> B[嵌入层\nToken + 位置嵌入]
    B --> C[Transformer 块 x12\n自注意力 + FFN]
    C --> D[层归一化 + 最终投影]
    D --> E[交叉熵损失]
    E --> F[反向传播\n显式梯度]
    F --> G[参数更新\nC 语言 Adam 优化器]
    G --> B
    subgraph 反向传播
        F --> H[嵌入的梯度]
        F --> I[注意力的梯度\nQ, K, V, 输出]
        F --> J[FFN 的梯度\n门, 向上, 向下]
        F --> K[层归一化的梯度\n缩放 + 偏移]
    end
组件C 实现你学到的内容
Token 嵌入嵌入查找表Token 如何变成向量
自注意力QKV 投影 + softmax + 聚合注意力权重如何计算
前馈网络两层 MLP 搭配 GELUFFN 如何转换表示
层归一化均值 + 方差计算归一化如何稳定训练
残差连接跳跃连接梯度如何在网络中流动
Adam 优化器动量 + 自适应学习率参数如何更新
方面PyTorch 实现llm.c 实现
代码行数~500(含框架)~5000(无框架)
反向传播自动(autograd)手动(每个梯度)
GPU 支持自动(CUDA 张量)手动(自定义 CUDA 内核)
教育价值良好(高阶理解)优秀(完全理解)
组件CPU 实现CUDA 内核
矩阵乘法嵌套循环共享内存平铺
Softmax顺序计算Warp 层级归约
注意力完整 O(n^2) 矩阵内存高效内核

常见问题

什么是 llm.c? Andrej Karpathy 的教育性 GPT-2 训练实现,使用纯 C/CUDA。

为什么使用纯 C? 为了移除抽象层,使每个梯度计算显式可见。

CUDA 版本添加了什么? 所有操作的 GPU 加速内核,实现有意义的训练速度。

真的可以训练模型吗? 是的,可以训练完整的 GPT-2 模型。

可以学到什么? 完整 Transformer 训练堆栈的深入理解。


延伸阅读

TAG
CATEGORIES