← 所有文章

工程哲学:Andrej Karpathy,那套你不必亲手编写的技术栈

Andrej Karpathy,AI 研究者与教育者

核心要点

  • Software 2.0 是 Karpathy 的一次重新定义:神经网络是一个由数据编译而成的程序,而非手工编写的程序。数据集就是源代码,训练就是编译器。
  • 他之所以有资格提出这一主张,是因为他从零构建了每一层——micrograd、char-rnn、nanoGPT——因为一套你自己重建不出来的技术栈,是无法信任的。
  • 他把教学当作一门手艺:清晰易懂的演示和整洁的代码仓库,是他调试自身理解的方式,而非营销的手段。
  • 贯穿这一切的纪律,是从零开始原则——亲手实现一次反向传播,真实模型出问题时,原因就成了你确知的事,而不再靠猜测。

核心原则

“神经网络不只是又一个分类器,它们代表着我们开发软件方式的一次根本性转变的开端。它们就是 Software 2.0。”——Andrej Karpathy1

2017 年,大多数工程师把神经网络当成工具箱里多出来的一件工具——逻辑回归不够用时才会拿出来用的一个分类器。Karpathy 却认为它们是另一回事:一种全新的编程范式。在 Software 1.0 中,人用 Python 或 C++ 写下明确的指令。在 Software 2.0 中,人写下一个粗略的骨架——一套网络架构——再精心整理出一个数据集,而“训练神经网络的过程,会把数据集编译成二进制文件”。1没有人去写那些权重。程序是“长”出来的,不是“写”出来的。

一次重新定义,重新组织了它下游的一切。如果模型就是程序,那么数据集就成了源代码,损失曲线就成了编译器报错,工程师的工作也从编写逻辑,转向塑造逻辑得以涌现的条件。同样的转变,也让真正的架构是上下文,而非代码成为现代 AI 系统的本质:你不去指令式地规定行为,而是去构建行为得以成形的基底。而在 Karpathy 全部教学的底层,贯穿着一个信念——一套你自己构建不出来的技术栈,是无法信任的。于是他公开地从零构建了每一层,一次一个字符地写下反向传播。

背景

Andrej Karpathy 于 1986 年出生在斯洛伐克的布拉迪斯拉发,15 岁时随家人移居多伦多。他在多伦多大学攻读计算机科学与物理——还是本科生时,他就旁听了 Geoffrey Hinton 的课程和读书小组,早在神经网络成为正统之前许多年,就已浸润于这门“福音”之中。在不列颠哥伦比亚大学拿到硕士学位后,他进入斯坦福,师从斯坦福视觉实验室的 Fei-Fei Li 攻读博士,于 2015 年完成学业。他的博士研究坐落在计算机视觉与自然语言的交汇处——教机器描述图像——而这道接缝,正是随后十年将被彻底撕开的地方。2

在斯坦福,他设计并讲授了 CS231n,这是该校第一门深度学习课程,选课人数从 2015 年的 150 人增长到 2017 年的 750 人。32015 年,他是 OpenAI 的创始成员之一。2017 年,他出任特斯拉的 AI 总监,直接向 Elon Musk 汇报,负责 Autopilot 视觉技术栈。2023 年他重返 OpenAI,2024 年离开并创办了 AI 教育公司 Eureka Labs,2026 年加入 Anthropic 的预训练团队。2每一次转身之间真正不变的,不是雇主,而是那份执着——把机器从上到下彻底搞懂,然后再把它展示给所有人看。

作品

《循环神经网络不讲道理的有效性》(2015):演示即论证

Karpathy 的 char-rnn 示意图:网络通过输入层、隐藏层和输出层读入字符“h、e、l、l”,并学会在每一步预测下一个字符——“e、l、l、o”

2015 年 5 月,Karpathy 发表了一篇博客文章,在一个当时还没有“爆款博客”概念的领域里走红了。他在原始文本上训练字符级循环神经网络——char-rnn——让它们一次生成一个字符。这些模型学会了产出莎士比亚风格的文字、几乎能编译通过的 LaTeX 数学公式、Linux 内核的 C 代码以及维基百科的标记语言——而从没有人告诉过它们这些东西究竟是什么。4

这篇文章是一场伪装成演示的论证。让一个小模型做出某件既惊人又清晰可读的事——你能眼看着乱码慢慢凝聚成句法——Karpathy 由此证明了序列模型仅凭数据就吸收了深层结构。配套发布在 GitHub 上的 char-rnn 代码,与文字本身同等重要。那条将定义他整个职业生涯的道理,此时已然在场:为一个想法辩护的最有力方式,就是它能跑起来的最小版本,并附上代码。

Software 2.0(2017):那次重新定义

2017 年的这篇文章是拱心石。Karpathy 的主张是:对于越来越多的问题——视觉、语音、翻译——收集数据并训练网络,比手工编写程序更容易,而且训练出来的网络往往更好。Software 2.0 是“用一种远为抽象、对人类远不友好的语言写就的,比如神经网络的权重”,而且“没有人参与编写这些代码”。1

这篇文章真正的贡献是文化层面的,而不只是技术层面的。如果神经网络是一种编程范式,那么团队就需要为数据集做版本控制,为激活值做调试器,还需要一套应对旧技术栈从未有过的失败模式的纪律。将近十年后,Karpathy 把这一框架延伸到了 Software 3.0:你用纯英语去编程的大语言模型——这也是他为何能把英语称为“最热门的新编程语言”。5并不是智能体变聪明了——而是基底变了,工程也随之每一次都向上挪了一层。

特斯拉 Autopilot(2017—2022):投入生产的 Software 2.0

特斯拉的 Autopilot 视觉技术栈:原始摄像头画面(上)被重建为道路边缘与车道几何的鸟瞰“向量空间”(下)——这就是跑在一辆行驶中的汽车上的 Software 2.0

作为特斯拉的 AI 总监,Karpathy 在风险最高的地方运行 Software 2.0:一辆高速行驶的汽车。Autopilot 视觉系统是一群吞吐摄像头画面的神经网络,而他的团队面对的核心难题,正是那篇文章所预言的——当程序就是数据集时,改进程序就意味着改进数据。特斯拉建起了数据引擎:从车队中挖掘出罕见而棘手的极端案例(一辆运载交通锥的卡车,黄昏时分的一头鹿),打上标注、重新训练、再次部署的流水线。随着手写的启发式规则被删除、被吸收进网络,代码库反而缩小了。Karpathy 直接把这描述为 Software 1.0 的代码正被 2.0 技术栈“吃掉”——这是对他论点最清晰的生产级验证。2

nanoGPT、micrograd 与《Neural Networks: Zero to Hero》(2022 年至今):从零开始,逐行讲透

nanoGPT 的横幅——Karpathy 对现有 GPT 实现开的一个玩笑:那些笨重的选项被划掉了,取而代之的是一艘小巧、清晰可读的“快艇”

离开特斯拉后,Karpathy 全职投入了一项也许会比上述一切都更长久的工作:教人们亲手构建这套技术栈。他的《Neural Networks: Zero to Hero》系列讲座从 micrograd 讲起——一个用约 100 行 Python 写成的、完整的自动微分引擎兼神经网络库——再一集接一集地搭建上去,直到一个能跑的 GPT。6收官的那一讲,《Let’s build GPT: from scratch, in code, spelled out》,现场敲出了《Attention Is All You Need》中的 Transformer 架构。随后他配套的 build-nanogpt 仓库,从一个空文件出发复现出 GPT-2(124M),并把 git 历史保持得足够干净,可以一次一个 commit 地走读——这是从生产级的 nanoGPT 蒸馏出来的一艘能跑的“快艇”。7

教学法就是他的哲学。这里没有任何把梯度藏起来的库导入。你亲手实现反向传播,于是当一个真实模型行为失常时,你确知——而不是相信——它内部正在发生什么。micrograd 把整套技术栈浓缩在 100 行里:没有 PyTorch,没有魔法,每一次乘法都看得见。

方法

先讲第一性原理,再谈框架。在亲手把底下那层东西构建出来之前,Karpathy 绝不让一个抽象立得住脚。micrograd 之所以存在,是为了让 PyTorch 的 autograd 永远不会是一个黑盒子。亲手构建下面那一层,是工程师版本的“绝不引用一份自己没读过的资料”。

构建能跑起来的最小版本。char-rnn、micrograd、nanoGPT,以及他更近期的 nanochat,全都刻意做得很小——小到能把整件事装进脑子里,又完整到真能跑起来。“小”正是关键所在:一个 100 行的库能教会的东西,一个 10 万行的库反而会把它遮蔽掉。

在公开场合学习。几乎凡是 Karpathy 搞懂的东西,他都会发布出来——作为一篇博客、一场讲座、一个整洁的仓库,或者一条随手发出的推文,为整个领域早已感受到却尚未说清的现象命名(“vibe coding”)。8教学逼出了清晰;你没法在自己都还糊涂的时候,在白板上把反向传播一步步讲透。

把清晰当作思考的工具。他演示的那种清晰可读——看着一个 RNN 一个字符一个字符地学会句法——并不是为了表演。那是他调试自身理解的方式。如果他没法把它呈现得一目了然,那就说明他还没真正搞懂。

影响链

谁塑造了他

Geoffrey Hinton 点燃了引信。Karpathy 是在多伦多、在 Hinton 的圈子里接触到反向传播和神经网络的,而那一刻恰好——就在 2012 年 ImageNet 成果出现之前——是这个领域从边缘倾覆为主流的临界点。“神经网络不是一个小众工具,而是计算的未来”这一信念,正是来自 Hinton,并被一路承续了下来。

Fei-Fei Li 塑造了那位手艺人。作为他的博士导师、也是 ImageNet 的缔造者,她赋予了 Karpathy 一种纪律:把数据当作核心对象来对待——把数据集当作决定一个模型能成为什么的那样东西。从某种真切的意义上说,Software 2.0 就是一个以数据为中心的视觉实验室的信条,被写成了一套关于所有软件的理论。

他塑造了谁

整整一代机器学习工程师。多年来,CS231n 都是一线工程师学习深度学习的途径;它的讲义至今仍被像教科书一样引用。《Neural Networks: Zero to Hero》和 nanoGPT 随后成了通往 Transformer 的那条经典的“从零开始”之路——成千上万的从业者正是沿着它,从“我会用 API”走到了“我懂这套架构”。很少有人像他这样,亲手把当今 AI 从业大军中如此之多的人带进了门。

贯穿始终的那条线

John Carmack 逆向工程图形硬件、从零重建渲染管线,是因为他不愿在一个自己不理解的层之上交付。Karpathy 亲手实现反向传播,出于同样的理由。两人都把亲手把它构建出来看作的,不是一道教学练习,而是通往精通的唯一诚实路径——那份信念是:在你写出一个系统最小的完整版本之前,你并不真正了解它。同样的本能也贯穿在 Linus Torvalds 身上,以及他对“自己无法检视之物”的拒绝信任。(系列承接)

我从中所得

我一再回到的那条纪律,是 Karpathy 对“在一个自己至少没亲手构建过一次的层之上工作”的拒绝。当你在编排智能体时,很容易把模型当成神谕、把框架奉为圭臬。他的榜样告诉你:先自己构建最小的版本——在你伸手去拿编排库之前,先弄懂为什么智能体应当直接调用模型。Software 2.0/3.0 的框架也重新定义了整份工作:在一个智能体系统里,你不是在编写行为,而是在塑造行为得以涌现的条件——上下文、数据、提示词——这正是从RAG 到智能体的一切所贯穿的那条线。完整的地图在 AI 工程中心智能体架构指南里。

常见问题

Andrej Karpathy 的“Software 2.0”是什么?

Software 2.0 是 Karpathy 在 2017 年一篇文章中提出的术语,指那些以神经网络权重的形式写就、而非以人类明确编写的指令的形式写就的程序。在 Software 1.0 中,程序员编写逻辑;在 Software 2.0 中,程序员指定一个目标和一套架构,精心整理出一个数据集,而“训练神经网络的过程,会把数据集编译成二进制文件”。数据集成了源代码,训练成了编译。1

Andrej Karpathy 在特斯拉做了什么?

2017 至 2022 年,Karpathy 任特斯拉 AI 总监,领导 Autopilot 背后的神经网络视觉技术栈。他的团队构建了“数据引擎”,从车队中挖掘罕见而困难的驾驶场景,重新标注并在其上重新训练,并逐步用学习得到的网络替换掉手写的驾驶启发式规则——这是对他 Software 2.0 论点的一次生产级演示。2

《Neural Networks: Zero to Hero》是什么?

这是 Karpathy 的一套免费视频讲座系列,通过用 Python 从零构建来教授深度学习。它从 micrograd 讲起——一个约 100 行的自动微分引擎——一路向上经由语言模型讲到一个从零写就的 GPT,其中包括《Let’s build GPT: from scratch, in code, spelled out》这一讲。配套的 build-nanogpt 仓库从一个空文件出发,一次一个 git commit 地复现出 GPT-2(124M)。67

“vibe coding”这个词是 Andrej Karpathy 造的吗?

是的。在 2025 年 2 月一条发在 X 上的帖子里,Karpathy 描述了“一种我称之为‘vibe coding’的新型编码方式,你彻底交付于感觉、拥抱指数增长,甚至忘了代码本身的存在”,而这之所以成为可能,是因为 LLM 编码工具已经好到足以靠对话来构建软件。他后来把那条帖子称为一条“随手发的推文”;但这个词还是进入了整个行业的词汇表。8


资料来源


  1. Andrej Karpathy, “Software 2.0.” Medium, November 11, 2017. “Neural networks are not just another classifier…They are Software 2.0”; “the process of training the neural network compiles the dataset into the binary”; “no human is involved in writing this code.” 

  2. “Andrej Karpathy.” Wikipedia. Born Bratislava 1986; Toronto, UBC, Stanford PhD under Fei-Fei Li (2015); OpenAI founding member; Tesla Director of AI (2017–2022); return to OpenAI (2023); Eureka Labs (2024); Anthropic pretraining (2026). 

  3. Andrej Karpathy, personal site / bio. CS231n: Stanford’s first deep-learning class, designed and primarily taught by Karpathy; enrollment grew 150 (2015) to 750 (2017). Course: CS231n. 

  4. Andrej Karpathy, “The Unreasonable Effectiveness of Recurrent Neural Networks.” May 21, 2015. Character-level RNNs generating Shakespeare, LaTeX, Linux source, and Wikipedia markup; char-rnn code released on GitHub. 

  5. Andrej Karpathy, “The hottest new programming language is English.” X, January 24, 2023. Extended in his 2025 talk “Software Is Changing (Again)” / Software 3.0. 

  6. Andrej Karpathy, “Neural Networks: Zero to Hero.” Lecture series building neural networks from scratch, starting with micrograd. Repo: nn-zero-to-hero. micrograd (~100 lines, MIT-licensed): karpathy/micrograd. 

  7. Andrej Karpathy, “build-nanogpt.” “Video+code lecture on building nanoGPT from scratch” – reproduces GPT-2 (124M) from an empty file with clean, step-by-step git commits you can walk through. Distilled from the production-grade repo: nanoGPT, “the simplest, fastest repository for training/finetuning medium-sized GPTs.” 

  8. Andrej Karpathy, “There’s a new kind of coding I call ‘vibe coding’…” X, February 2, 2025. Later described as a “throwaway tweet.” 

相关文章

工程哲学:Geoffrey Hinton,信念胜过潮流

在两次人工智能寒冬中,当整个领域都在嘲笑类脑神经网络时,Geoffrey Hinton依然押注于它——信念胜过潮流,直觉胜过形式化。

1 分钟阅读

工程哲学:拉吉·雷迪——为最底层十亿人而生的技术

拉吉·雷迪开创了可以与之对话的机器——语音识别、黑板模型——随后把最先进的人工智能瞄准了世界上最贫困的人,而非最富有的人。

2 分钟阅读

The Shader Gallery That Lied: Debugging 216 WebGL Presets

A user said the shader playground looked broken. Pixel-readback testing found 30 dead presets, 11 that never compiled, a…

11 分钟阅读