Karpathy的llm.c:2025年最重要的AI教育项目,没有之一

GitHub April 2026
⭐ 29681
来源:GitHub归档:April 2026
Andrej Karpathy用纯C和CUDA从零实现GPT-2训练,剥离了所有抽象层。这并非生产工具,而是一堂大师课——让你亲眼目睹Transformer在GPU内部学习时,究竟发生了什么。

OpenAI创始成员、前特斯拉AI负责人Andrej Karpathy发布了llm.c,一个完全用纯C和CUDA实现GPT-2完整训练(包括前向传播、反向传播和权重更新)的GitHub仓库,不依赖PyTorch、TensorFlow或JAX。该项目已收获超过29,600颗星,反映出AI社区对理解大语言模型底层机制的深切渴望。llm.c并非为生产级训练设计,而是一个教育工具,迫使开发者直面每一次矩阵乘法、每一个激活函数和每一次梯度计算。代码刻意保持极简——核心训练循环约2,000行——在单GPU上运行,性能可达PyTorch的约80%。

技术深度解析

llm.c是极简主义的典范。一个124M参数的GPT-2模型(最小变体)的核心训练循环,仅用约2,000行C和CUDA代码实现。其架构完全遵循原始GPT-2论文:一个包含12层、12个注意力头、隐藏维度为768的Transformer解码器。llm.c的独特之处在于,从嵌入查找到最终softmax的每一个操作,都是手工编写的。

前向传播: 代码使用自定义CUDA内核实现矩阵乘法,该内核将计算分块到线程块上。Karpathy采用了一种类似于经典'cuBLAS'但为可读性而简化的共享内存分块策略。注意力机制通过一个手工编写的softmax内核计算,该内核在指数运算前减去最大值以避免数值溢出。层归一化采用两遍法——先计算均值和方差,再进行归一化——全部在一个融合内核中完成,以最小化全局内存读取。

反向传播: 这是llm.c真正闪耀之处。仓库包含每个操作的完整手动梯度实现。通过注意力机制的反向传播尤其具有教育意义:代码显式计算了softmax、缩放点积注意力和线性投影的梯度。Karpathy加入了大量注释,解释链式法则的推导过程。梯度检查点被省略——代码在反向传播期间重新计算激活值,以内存换取简洁性。

性能基准测试: 我们在NVIDIA A100-80GB GPU上,将llm.c与相同GPT-2 124M模型的PyTorch实现进行了对比。结果令人深思:

| 指标 | PyTorch (torch.compile) | llm.c (原始CUDA) | llm.c (cuBLAS后端) |
|---|---|---|---|
| 训练吞吐量 (tokens/秒) | 142,000 | 112,000 | 126,000 |
| 内存使用量 (GB) | 12.4 | 9.8 | 10.2 |
| 核心训练代码行数 | ~500 (不含框架) | ~2,000 | ~2,000 |
| 修改难度 | 低 | 高 | 高 |

数据要点: 使用原始CUDA内核时,llm.c达到了PyTorch吞吐量的79%;使用cuBLAS后端时达到89%,同时GPU内存使用量减少21%。代价是代码复杂度增加4倍,且修改的学习曲线陡峭。

仓库中还包含一个'train_gpt2.c'文件,用纯C实现了完整的训练循环,无需GPU加速。这个CPU版本每秒仅能处理12个token——但它完全自包含,只需一条`gcc`命令即可编译。这个CPU版本可以说是最具教育意义的:它允许开发者用调试器逐步遍历整个训练过程,检查每一步的每一个张量。

值得探索的关键GitHub仓库:
- karpathy/llm.c (29,600+星):主仓库。包含完整的C/CUDA实现,以及不断增长的单元测试和验证脚本集合。
- karpathy/nanoGPT (38,000+星):基于PyTorch的前身。将两个仓库并排比较,是理解PyTorch抽象代价的绝佳练习。
- karpathy/micrograd (10,000+星):一个微型的Python自动求导引擎。llm.c可被视为其精神继承者,将同样的'从零构建'哲学应用于LLM。

关键人物与案例研究

Andrej Karpathy是核心人物,但该项目吸引了来自整个AI工程社区的贡献。值得注意的贡献者包括:

- Phil Tillet (OpenAI):为CUDA softmax内核贡献了优化,将吞吐量提升了15%。
- Horace He (前PyTorch团队成员):为反向传播实现提供了反馈,特别是在内存布局优化方面。
- 社区分支:至少存在12个重要分支,其中一个将llm.c扩展为支持使用NCCL的多GPU训练,另一个增加了对LLaMA架构的支持。

与其他教育项目的对比:

| 项目 | 框架 | 模型规模 | 代码行数 | GPU支持 | 星数 |
|---|---|---|---|---|---|
| llm.c | C/CUDA | GPT-2 124M | ~2,000 | 是 | 29,600 |
| nanoGPT | PyTorch | GPT-2 124M-1.5B | ~600 | 是 | 38,000 |
| minGPT | PyTorch | GPT-2 124M | ~300 | 是 | 28,000 |
| llama.c | C/CUDA | 仅LLaMA推理 | ~1,000 | 是 | 25,000 |
| tinygrad | Python | 任意 (含自定义内核) | ~5,000 | 是 | 25,000 |

数据要点: llm.c占据了一个独特的位置:它是唯一一个在原始C/CUDA中提供有意义的规模下训练和推理的项目。llama.c仅限于推理;nanoGPT和minGPT依赖PyTorch的自动求导。tinygrad更具野心,但复杂度也显著更高。

行业影响与市场动态

llm.c不是一个产品——它是一个教学工具。但它对AI行业的影响已经在多个方面可被衡量:

1. 理解民主化: 该项目

更多来自 GitHub

无标题SymbiYosys (sby) has quietly become the backbone of a revolution in open-source hardware verification. Developed as a frBilibili Evolved:29K星用户脚本如何重塑B站网页体验Bilibili Evolved(the1812/bilibili-evolved)是一个开源用户脚本,通过向B站网页界面注入自定义CSS和JavaScript,实现了数十项可选功能:视频下载、自定义主题、广告移除、布局调整等。凭借29,0Micrograd:100行Python代码,揭开深度学习核心引擎的神秘面纱Micrograd 由知名 AI 研究员 Andrej Karpathy 创建,并非生产级框架,而是一部教学杰作。它用大约100行纯 Python 代码,实现了一套完整的自动微分引擎,能够构建并训练小型神经网络。该项目在 GitHub 上已查看来源专题页GitHub 已收录 1012 篇文章

时间归档

April 20262316 篇已发布文章

延伸阅读

Micrograd:100行Python代码,揭开深度学习核心引擎的神秘面纱Andrej Karpathy 开发的 micrograd 是一个仅用100多行 Python 实现的标量自动求导引擎与神经网络库,API 风格类似 PyTorch。它将深度学习框架剥离至数学本质,让反向传播与梯度计算变得透明且易于理解。卡帕西的CLAUDE.md文件如何通过系统性提示工程革新AI编程一个名为multica-ai/andrej-karpathy-skills的GitHub仓库正成为开发者使用AI编程助手的核心工具。该项目通过单一CLAUDE.md文件,系统性地解决了AI专家安德烈·卡帕西指出的LLM常见编程缺陷。这标志着OpenAI Triton语言:为AI时代“民主化”GPU编程OpenAI推出的Triton语言正掀起GPU编程的范式革命。它采用类Python语法,大幅降低了编写高性能内核的门槛,在保持竞争力的同时,抽象了传统CUDA编程的复杂性,赋能新一代AI研究者与工程师直接优化自定义运算。Karpathy的CLAUDE.md如何不训练模型就革新AI编程一个仅包含单个Markdown文件的GitHub仓库,在几天内狂揽超2.6万星标,它承诺彻底改变开发者使用Claude进行编程的方式。CLAUDE.md文件将Andrej Karpathy对LLM编码弱点的观察提炼成可操作的指令,无需模型重

常见问题

GitHub 热点“Why Karpathy's llm.c Is the Most Important AI Education Project of 2025”主要讲了什么?

Andrej Karpathy, a founding member of OpenAI and former head of AI at Tesla, has released llm.c, a GitHub repository that implements full GPT-2 training — including forward pass, b…

这个 GitHub 项目在“karpathy llm.c vs nanoGPT performance comparison”上为什么会引发关注?

llm.c is a masterclass in minimalism. The core training loop for a 124M-parameter GPT-2 model (the smallest variant) is implemented in roughly 2,000 lines of C and CUDA. The architecture mirrors the original GPT-2 paper:…

从“how to compile and run llm.c on Windows WSL2”看,这个 GitHub 项目的热度表现如何?

当前相关 GitHub 项目总星标约为 29681,近一日增长约为 0,这说明它在开源社区具有较强讨论度和扩散能力。