浅谈Andrej Karpathy加入Anthropic

问AI · Karpathy加入Anthropic将如何影响预训练研究?

Andrej Karpathy 宣布加入 Anthropic,这条消息很快在 AI 圈炸开。

图片

他在原帖里写道:我已经加入 Anthropic。我认为,接下来几年将是大语言模型前沿发展中格外关键、也格外具有塑造性的时期。能加入这里的团队、重新回到研发工作中,我非常兴奋。我依然对教育怀有深切热情,并计划在合适的时候继续推进相关工作。

图片
图片

评论区很复杂,有恭喜,有疑惑,有嘲讽,也有好奇...

OpenAI 联合创始成员,Tesla 前 AI 负责人,Eureka Labs 创办者,如今又进入 Anthropic 的 pretraining team。这样的履历放在任何一条科技新闻里,都足够被写成“顶级人才流动”、“大模型战局变化”、“Anthropic 又拿下一城”之类的标题。

这些当然都成立。但如果只停在这一层,Karpathy 就被压扁成了一个行业符号:他去哪家公司,哪家公司就多了一枚重量级筹码。

更值得追问的不是他去了哪里,而是为什么过去十多年里,他总能在不同阶段做出一些“入口型作品”。

CS231n[1]Software 2.0[2]nanoGPT[3]nanochat[4]vibe coding[5]llm-wiki[6]autoresearch[7] 等,这些东西看上去并不属于同一个类别:有课程,有文章,有仓库,有流行概念,有知识组织方法,也有 agent 实验。

但把它们放在一起,会看到一条很稳定的线索:Karpathy 总是在把前沿 AI 从黑箱、论文、巨型公司和昂贵集群里拆出来,再重新压成普通研究者、工程师、学生可以观察、运行、修改和继承的形状。

他的影响力不只是“做过什么”,而是他总能把复杂系统折叠成一种恰到好处的入口:它们不追求大而全,而是卡在一个很难拿捏的位置:小到能进入,真实到不失骨架,开放到还能继续生长。

早年的底色

Karpathy 的经历不是典型的硅谷英雄叙事。

他出生于 1986 年,地点是当时的捷克斯洛伐克布拉迪斯拉发,后来随家人移居加拿大多伦多。本科在多伦多大学读计算机科学与物理,硕士在不列颠哥伦比亚大学,博士阶段进入斯坦福,在 Fei-Fei Li 指导下研究计算机视觉、自然语言和深度学习交叉问题。

这段履历里有一个容易被忽略的线索:他很早就在处理不同表示系统之间的转换。

视觉如何与语言对齐?图像中的局部区域如何变成句子里的语义片段?模型如何从像素、标签、文本之间建立可学习的结构?他与 Fei-Fei Li 合作的图像描述研究 Deep Visual-Semantic Alignments for Generating Image Descriptions[8],正是这类问题的早期代表。

这个方向后来不断换形出现。到了 LLM 时代,它变成代码与自然语言的转换、知识与结构化笔记的转换、研究目标与实验循环的转换。

更早一些,Karpathy 还以 badmephisto[9] 的身份发布过魔方教程。这个细节看似轻,却很有解释力。魔方不是只靠手感完成的表演,它也可以被拆成步骤、记忆结构和练习路径。一个看似复杂、依赖经验的动作,被转写成可学习的路线。

后来他做课程、写 repo、提出概念,延续的也是这种能力:把专家脑中的隐性结构,外化成别人能走的路径。

难的不是“讲得通俗”,而是在压缩时不弄丢骨架,在简化时保留继续生长的空间。

第一条坡道

很多人从 GitHub 认识 Karpathy,但他最早的大规模影响力来自课程。

图片

CS231n 曾经是许多人进入深度学习的第一条坡道。它不是简单把论文和公式搬进课堂,而是在深度学习还没有被大规模工程化、平台化之前,把卷积网络、反向传播、优化、数据、训练经验、可视化直觉组织成一条相对完整的学习路径。

这件事的意义在今天容易被低估。

当一个领域还处在高速生长期,知识往往是碎的:论文讲一个点,代码藏一堆细节,博客补一些经验,实验室内部又有大量没有写下来的 tacit knowledge。CS231n 的价值就在于,它把这些碎片重新排成了顺序。一个学习者不再只是追论文,而是开始知道自己该从哪里进入,下一步该看什么,哪些概念彼此相连。

Karpathy 后来的许多项目,都带着这种课程气质,只是载体从 lecture note 变成了代码仓库。

代码不再是产品文档的附属物,而是教学本体。你不是先听完一套理论再照着实现,而是在一个可运行系统里反向理解:为什么模型这样写,为什么训练循环这样组织,为什么评估指标这样设计。

这也是他和普通技术布道者的区别。很多人能解释概念,很多人能写生产代码,也有人能做研究突破,但能在三者之间搭桥的人很少。Karpathy 的作品经常处在一个特殊位置:它们未必是工业最优解,却常常是认知最优入口。

Software 2.0

如果说 CS231n 是他的教育底色,那么 Software 2.0 更像他的思想底稿。

2017 年,Karpathy 用 Software 2.0 描述神经网络带来的软件范式变化:传统软件由程序员用 Python、C++ 这样的语言显式写出行为;神经网络时代,程序行为越来越多来自数据、目标函数、网络结构和优化过程。最终交付出来的,不再只是一段人手写出的逻辑,而是一组训练得到的权重。

这个判断在今天已经不陌生,但它的余波远没有结束。

Software 2.0 改变的不是编程语言,而是软件生成方式。人写的东西从程序本体,逐渐迁移到数据、目标、约束、评估和训练过程上。工程师不再完全逐行规定行为,而是在设计一个系统,让它从数据中长出行为。

到了 LLM agent 时代,这个迁移又向前走了一步。

模型开始根据自然语言目标、上下文、工具反馈、测试结果来生成和修改代码。代码仍然重要,但它不再总是人类直接操作的第一层界面。人的工作越来越像在塑造一个生成回路:给目标,设边界,看结果,做判断,改约束,再推进。

这条线一直延伸到 vibe coding。那个词看似轻佻,背后却是 Software 2.0 的下一层体感。

nano 的尺度

nanoGPT 是 Karpathy 方法论里最典型的标本。

它的价值不在原创性,而在解剖性。

nanoGPT 的 README 把它描述为一个用于训练和微调中等规模 GPT 的简单、快速仓库。它的核心很克制:大约 300 行训练循环,大约 300 行模型定义,可以复现 GPT-2 124M 在 OpenWebText 上的训练,也可以从 tiny Shakespeare 这种低门槛任务开始。

这类项目最难的地方不是“代码少”,而是尺度刚好。

太小,只能得到玩具,容易制造理解幻觉;太大,就会变成框架,学习者被配置、抽象层、工程依赖淹没。nanoGPT 卡在中间:它足够接近真实训练,又没有复杂到遮蔽结构。模型定义、训练循环、数据准备、采样路径都摊在面前,读者可以沿着代码从字符级小模型一路摸到 GPT-2 复现。

这里有一种很克制的工程美学:复杂度没有被藏起来,只是被排好了顺序。

nanochat 则把这个尺度从“模型训练”推进到“系统缩影”。它面向单 GPU 节点,覆盖 tokenization、pretraining、finetuning、evaluation、inference 和 chat UI。换句话说,nanoGPT 让人理解一个 GPT 怎么训练,nanochat 让人理解一个 ChatGPT 式系统大概由哪些环节构成。

这一步很重要。

很多人谈 LLM 产品时,会把它压缩成“一个模型”。但真实系统不是这样工作的。它是一条生产链:tokenizer、预训练、微调、评估、推理、界面、交互、反馈。nanochat 把这条链做成一个小型可运行系统,让人看到 LLM 产品不是魔法,而是一组相互扣合的工程过程。

nanochat 里还有一个很有意思的设计:用 --depth 作为复杂度主旋钮。模型宽度、head 数、学习率、训练时长、weight decay 等会随之计算。用户不必一上来面对一堆超参,只需要先决定要一个多深的模型。

这不是讨好初学者,而是接口设计。

复杂系统必须有入口,入口不能等同于完整控制面。先给一个高信噪比旋钮,让人建立尺度感,再逐步打开内部机制。某种意义上,--depth 把一部分 scaling law 和训练经验固化成了可操作接口。

这正是 Karpathy 项目长期耐看的地方:它们不是把复杂性抹掉,而是把复杂性整理成可进入的顺序。

Vibe Coding

vibe coding 能传播开,不是因为它严谨,而是因为它准确抓住了一种新体感。

Karpathy 在 2025 年提出这个词,用来描述一种 AI 辅助的软件开发方式:开发者用自然语言描述任务,LLM 生成代码,再通过运行结果、错误信息和后续提示不断迭代。

很多讨论把它简化成“不会写代码也能做软件”。这个理解太轻,也容易误导。

vibe coding 的核心不是代码消失,而是控制方式改变。程序员不再只是在代码文本上操作,而是在一个生成回路上操作。写代码变成了看结果、说需求、粘错误、做选择、调方向、判断风险。代码仍然存在,只是不再总是人的第一接触面。

它最迷人的地方,也是最容易误导人的地方,来自同一个事实:代码生成变快了,理解并没有同步变快。

过去需要数小时甚至数天完成的界面、脚本、小工具,现在可以在对话中快速长出来。原型速度被压缩到一个前所未有的尺度。问题在于,生成速度会给人一种掌控幻觉。全量接受 diff,项目跑起来了,页面出现了,并不等于你掌握了系统。

一旦需求跨过玩具边界,状态管理、依赖关系、安全边界、数据一致性、可维护性都会回来讨债。

所以 vibe coding 真正提出的问题不是“未来还需不需要程序员”,而是当生成能力变得廉价,人的判断在哪里变得更贵。

答案不在每一行代码都亲手写,而在目标建模、任务切分、约束设计、验证意识、架构 taste,以及对长期后果的判断。模型越像执行者,人越像系统编辑。这里的“编辑”不是润色文字,而是决定什么可以进入系统,什么必须回滚,什么只是局部幻觉。

知识编译

llm-wiki 的形态和 nanoGPT、nanochat、autoresearch 不一样。

它不是一个完整仓库,也不是一套产品化系统,更接近 Karpathy 用 gist 写下的一份轻量方法草案:如何让 LLM 把资料整理成一个长期可用的 wiki,而不是每次提问时临时从原始材料里打捞答案。

这件事看上去像笔记工具,实质上是知识系统的时间结构变化。

传统 RAG 更像运行时检索:问题来了,切 chunk,向量召回,拼上下文,生成答案。llm-wiki 的思路更偏编译:资料进入系统时,就被摘要、命名、链接、归档,形成一个可以导航、维护、复用的知识结构。

RAG 解决的是瞬时访问问题,llm-wiki 处理的是长期沉淀问题。前者更像搜索,后者更像代谢。

资料进入系统后,不只是被存储,而是被压缩、改写、关联、重排,变成一个可以继续生长的知识图层。这里的重点不是 Markdown,也不是 wiki 这个外壳,而是知识如何从一次性上下文变成长期结构。

这和 Karpathy 其他作品的逻辑一致。他没有急着包装一个复杂产品,而是把一个新问题压到一个足够小的形式里。nanoGPT 是模型训练的最小标本,nanochat 是 LLM 系统的最小标本,autoresearch 是研究闭环的最小标本,llm-wiki 则是个人知识编译的最小标本。

它真正提出的问题不是 “AI 能不能帮我写笔记”,而是 AI 时代的个人知识系统究竟应该停留在搜索框,还是演化成一个持续整理、压缩、链接和更新的知识编译器。

研究沙盒

autoresearch 是这条线里最值得深挖的一环。

它很容易被误读成 “AI 自己做研究”的噱头。仓库本身要细得多。Karpathy 在 README 中写道:给 AI agent 一个小而真实的 LLM 训练环境,让它夜里自动实验;agent 修改代码,训练 5 分钟,检查结果是否变好,保留或丢弃,然后重复。第二天,人醒来看到实验日志,以及一个可能更好的模型。

重点不在 agent 有多聪明,而在实验环境如何被设计。

autoresearch 的核心只有三个文件:prepare.pytrain.pyprogram.md

prepare.py 固定数据准备、tokenizer、dataloader 和评估。它规定了 MAX_SEQ_LEN = 2048TIME_BUDGET = 300,也就是每次实验 5 分钟;还固定验证 token 数、验证 shard、tokenizer 和 evaluate_bpb。BPB 被用作与词表大小无关的指标,避免 agent 通过改评价口径获得虚假进步。

train.py 是可探索区域。它是一个单 GPU、单文件的 pretraining script,包含 GPTConfig、attention、MLP、优化器、训练循环和最终摘要。模型结构、batch size、depth、学习率、window pattern、optimizer 参数都直接暴露在文件里。agent 可以改,但改动范围被压在一个可审查表面上。

program.md 是治理层。它规定 agent 如何开分支、读文件、检查数据、初始化 results.tsv、先跑 baseline,再进入循环。每一轮都要修改、commit、运行、grep 指标、记录结果;变好就保留,变差就 reset。它还禁止修改 prepare.py、禁止新增依赖、禁止篡改 evaluation harness。

这三个文件合在一起,构成了一个极小的 research harness。

数据、tokenizer、验证集和 BPB 构成固定世界;train.py 承载可变假设;branch、commit、run log 和 results.tsv 留下执行证据;program.md 则规定何时保留、何时回滚,何时把复杂度视为成本。

尤其有意思的是,program.md 里写到了 taste:如果一个改动只带来极小指标提升,却增加很多丑陋复杂度,大概率不值得;如果删代码还能保持或提升结果,那是好结果。

这使 autoresearch 不像一个“自动科学家”口号,更像 agentic research 的最小工程形态。它没有先假设 agent 会神奇地思考,而是先设计一个让探索可度量、可回滚、可审计的实验场。

这对今天所有 agent 系统都有启发。

真正可用的 agent,不是给它一个宏大目标然后放任自由发挥,而是给它明确边界、稳定指标、可审查 diff、可回滚状态、低噪声日志和持续迭代协议。否则所谓 autonomous agent,只是会写代码的随机游走。

回到预训练

再回头看 Karpathy 加入 Anthropic,这件事就不只是人才新闻了。

他加入的是 pretraining team。预训练过去常被理解成规模游戏:数据、算力、架构、分布式系统、训练稳定性。但随着模型能力提升,预训练研究本身也会逐渐被模型参与改造。数据过滤、实验设计、训练脚本修改、指标分析、失败归因、文献吸收、代码重构,都可能进入 agentic loop。

Karpathy 的长期兴趣刚好落在这里。

他懂模型,也懂教育;写过前沿训练系统,也擅长把复杂系统拆成可操作标本;命名了 vibe coding 这种开发体感,又在 autoresearch 里给研究回路装上边界、指标和回滚机制。

所以,他加入 Anthropic 的看点,不只是“某个大佬换了牌桌”。更深的一层是,前沿实验室正在进入一个阶段:模型能力不只会用于产品,也会反过来改造研究流程。

未来的预训练团队,比拼的可能不只是研究员个人直觉,也包括谁能搭出更强的研究 harness:更快提出假设,更稳运行实验,更好记录证据,更少被噪声误导,更有效地把失败转成下一轮搜索。

Karpathy 回到 R&D,恰好落在这个交界处。

留下什么

Karpathy 的影响力,不在于一串响亮标签,而在于他持续生产一种东西:前沿能力的公共入口。

从 CS231n 到 nanoGPT,他在做学习入口;从 Software 2.0 到 vibe coding,他在命名控制权的迁移;从 llm-wiki 到 autoresearch,他把知识和研究也纳入可编排的回路。

这些作品有共同特征:小,但不轻;简洁,但不失真;能运行,但不只是 demo;能被 fork,也不会把复杂性彻底藏起来。

这也是普通人真正该吸收的部分。

AI 时代最廉价的是结论,最昂贵的是进入结构。你可以每天看几十条模型新闻,收藏一堆论文解读,试用十几个 agent 工具,但如果没有把一个系统拆开、跑通、改坏、修回来的经历,理解很容易停在表面。

Karpathy 的作品反复提醒我们:不要只消费前沿,要把前沿变成可操作对象。

未来的技术能力,不会只属于“会不会写某段代码”的人,而会越来越属于能设计回路的人:目标如何进入系统,约束如何生效,工具如何调用,结果如何评估,错误如何回滚,经验如何沉淀,复杂度如何付账。

这就是从 Software 2.0 到 vibe coding,再到 autoresearch 的暗线。

新闻总在报道谁去了哪座山。Karpathy 更像修路的人。他不替你完成攀登,也不把山说得很轻松。他只是不断把第一段路铺出来,告诉你:这不是神迹,是系统;不是玄学,是结构;不是只能仰望,也可以亲手跑起来。

References

[1]

CS231n:https://cs231n.stanford.edu/2016

[2]

Software 2.0:https://es.wikipedia.org/wiki/Software_2.0

[3]

nanoGPT:https://github.com/karpathy/nanoGPT

[4]

nanochat:https://github.com/karpathy/nanochat

[5]

vibe coding:https://en.wikipedia.org/wiki/Vibe_coding

[6]

llm-wiki:https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f

[7]

autoresearch:https://github.com/karpathy/autoresearch

[8]

Deep Visual-Semantic Alignments for Generating Image Descriptions:https://arxiv.org/abs/1412.2306

[9]

badmephisto:https://www.youtube.com/user/badmephisto