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

无标题Zotero MCP, a GitHub project with over 3,600 stars and rising, introduces a novel way to connect personal Zotero researcBOSH:被低估的编排引擎,Cloud Foundry 企业级韧性的幕后支柱Cloud Foundry BOSH 并非新生事物——它作为 Pivotal Cloud Foundry(现 VMware Tanzu)的基石已运行超过十年。然而,在 Kubernetes 主导的时代,BOSH 代表了一种反主流的架构管理哲BOSH部署仓库:Cloud Foundry基础设施的无名英雄cloudfoundry/bosh-deployment仓库是Cloud Foundry官方文档引用的BOSH清单与运维脚本的权威集合,用于部署BOSH director及Cloud Foundry本身。尽管仅有139颗星标,远不及那些炫目查看来源专题页GitHub 已收录 2461 篇文章

时间归档

April 20263042 篇已发布文章

延伸阅读

CUTLASS 3.6:NVIDIA 逼近硬件极限的 GPU 计算秘密武器NVIDIA 的开源库 CUTLASS 如今已斩获 9790 颗 GitHub 星标,它正在重新定义开发者编写高性能 CUDA 内核的方式。这篇深度解析将揭示其架构、基准测试数据以及战略意义——一个让开发者无需手调汇编就能逼近硬件极限的库。Andrej Karpathy 的 GitHub 技能树:一份重新定义 AI 可信度的趣味简历一个充满趣味的 GitHub 仓库悄然走红,它以结构化的 Markdown 技能树形式,梳理了 AI 远见者 Andrej Karpathy 的技术能力。这不仅仅是一个网络迷因,更是一堂 AI 时代的个人品牌大师课。spro/practical-pytorch 的兴衰:每位 AI 开发者都应汲取的教训曾备受推崇的 PyTorch 教程资源 spro/practical-pytorch 仓库已正式弃用,由 pytorch/tutorials 取而代之。本文探讨它为何重要、教会了我们什么,以及它的落幕如何折射出 AI 教育领域的演进方向。Micrograd:100行Python代码,揭开深度学习核心引擎的神秘面纱Andrej Karpathy 开发的 micrograd 是一个仅用100多行 Python 实现的标量自动求导引擎与神经网络库,API 风格类似 PyTorch。它将深度学习框架剥离至数学本质,让反向传播与梯度计算变得透明且易于理解。

常见问题

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,这说明它在开源社区具有较强讨论度和扩散能力。