← 所有文章

工程哲學: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 沒有任何人去寫那些權重。程式是被「養成」的,而非被「撰寫」的。

一次重新定義,便重組了其下游的一切。如果模型「就是」程式,那麼資料集就成了原始碼,損失曲線就成了編譯器的報錯,而工程師的工作也從撰寫邏輯,轉向形塑邏輯得以浮現的條件。同樣這場轉變,讓真正的架構是脈絡,而非程式碼——你不是去下指令規定行為,而是去打造行為賴以成形的底層基質。而貫穿 Karpathy 所有教學的,是一條信念:你無法信任一套自己打造不出來的堆疊。於是他公開地、一次一個反向傳播字元地,親手打造了每一層。

背景脈絡

Andrej Karpathy 於 1986 年生於斯洛伐克的布拉提斯拉瓦,十五歲時隨家人移居多倫多。他在多倫多大學主修電腦科學與物理,還在大學部時,便去旁聽Geoffrey Hinton的課與讀書會,早在神經網路成為正統的多年前,就吸收了這套思想。在英屬哥倫比亞大學取得碩士後,他前往史丹佛,在史丹佛視覺實驗室師從Fei-Fei Li攻讀博士,於 2015 年完成學業。他的博士研究坐落在電腦視覺與自然語言的交會處——教機器描述影像——正是接下來這十年將要撕裂開來的那道接縫。2

在史丹佛,他設計並教授了 CS231n,這是該校第一門深度學習課程,選課人數從 2015 年的 150 人,成長到 2017 年的 750 人。3 他是 OpenAI 在 2015 年的創始成員之一。2017 年,他出任 Tesla 的 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 程式碼,以及 Wikipedia 標記語言,而事先從沒有人告訴它們這些東西究竟是什麼。4

這篇文章是一場披著範例外衣的論證。藉由讓一個小模型做出某件既驚人又「清晰可讀」的事——你可以親眼看著一堆胡言亂語緩緩凝聚成語法——Karpathy 證明了序列模型僅僅憑藉資料,就吸收了深層的結構。隨文附上的 GitHub 上的 char-rnn 程式碼,其分量與文字本身不相上下。那條日後定義他整個職涯的心法,此時便已現身:為一個想法辯護,最強的論據,就是它最小的可運作版本,並附上程式碼。

Software 2.0(2017):重新定義

2017 年的這篇文章是拱心石。Karpathy 的主張是:對於一類日益增多的問題——視覺、語音、翻譯——蒐集資料並訓練網路,比親手寫程式更容易,而且訓練出來的網路往往更出色。Software 2.0「是用一種抽象得多、對人類也不友善得多的語言寫成的,例如神經網路的權重」,而且「沒有任何人類參與撰寫這段程式碼」。1

這篇文章真正的貢獻在於文化層面,而不只是技術層面。如果神經網路是一種程式設計典範,那麼團隊就需要為資料集做版本控制、為激活值做除錯工具,並為舊堆疊從未面對過的失敗模式建立一套紀律。將近十年後,Karpathy 把這套框架延伸到了 Software 3.0:你用平白的英文來編寫的大型語言模型——這也是為什麼他能稱英文為「最炙手可熱的全新程式語言」。5 變聰明的不是代理本身——而是底層基質;每經一次,工程的層次便往上挪了一層。

Tesla Autopilot(2017–2022):正式上線運行的 Software 2.0

Tesla 的 Autopilot 視覺堆疊:原始攝影機畫面(上)被重建成一套俯瞰式的「向量空間」(下),呈現道路邊緣與車道幾何——這是運行在一輛行進中車輛裡的 Software 2.0

身為 Tesla 的 AI 總監,Karpathy 在賭注最高的場景裡運行 Software 2.0:一輛高速行駛的車。Autopilot 的視覺系統是一支吞食攝影機畫面的神經網路艦隊,而他團隊的核心難題,正是那篇文章所預言的那一個——當程式就是資料集,改善程式就意味著改善資料。Tesla 打造了「資料引擎」:這套流程從車隊中挖掘出罕見而棘手的案例(一輛載著交通錐的卡車、一隻黃昏時分的鹿),為它們標記、重新訓練,再重新部署。隨著手寫的啟發式規則被刪除、被吸收進網路裡,程式碼庫也隨之縮小。Karpathy 直言,這正是 Software 1.0 的程式碼被 2.0 堆疊「吃掉」的過程——這是他那套論點在正式上線環境中最清晰的驗證。2

nanoGPT、micrograd 與〈Neural Networks: Zero to Hero〉(2022–):從零開始,逐字攤開

nanoGPT 的橫幅——Karpathy 對現有各種 GPT 實作開的玩笑:那些笨重的選項全被劃掉,換上一艘小巧、清晰可讀的「快艇」

離開 Tesla 後,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 歷史保持得乾淨到足以讓人一個提交一個提交地走過——一艘從正式級的 nanoGPT 蒸餾出來、能實際航行的快艇。7

教學法「本身」就是哲學。這裡沒有任何把梯度藏起來的函式庫匯入。你親手實作反向傳播,如此一來,當真實模型出狀況時,你才能「知道」——而非「相信」——它內部究竟發生了什麼。micrograd 就是 100 行裡的整套堆疊:沒有 PyTorch,沒有魔法,每一次乘法都看得見。

方法論

先講第一性原理,再談框架。 Karpathy 拒絕讓任何抽象站得住腳,除非他先親手打造了它底下的那個東西。micrograd 之所以存在,就是為了讓 PyTorch 的 autograd 永遠不會是個黑盒子。打造底下那一層,正是工程師版本的「拒絕引用一份自己沒讀過的資料」。

打造最小的可運作版本。 char-rnn、micrograd、nanoGPT,以及他較近期的 nanochat,全都刻意地小——小到能把整件事整個裝進腦袋裡,卻又完整到真能跑起來。這份「小」正是重點所在:一套 100 行的函式庫所教給你的,正是一套 100,000 行的函式庫所遮蔽掉的。

公開地學習。 Karpathy 所理解的幾乎一切,他都會發表出來——化為一篇部落格文章、一堂講座、一個乾淨的程式碼倉庫,或一則隨手丟出的推文,為某個整個領域早已感受到、卻還沒能說清楚的現象命名(「vibe coding」)。8 教學會逼出清晰;你沒辦法一邊還對反向傳播一知半解,一邊又把它攤在白板上逐步講明白。

以清晰作為思考的工具。 他的範例之所以清晰易懂——看著一個 RNN 一個字元接一個字元地學會語法——並不是在炫技。那是他用來除錯自身理解的方法。如果他沒辦法把它變得看得見,那就代表他還沒真正懂它。

影響鏈

是誰形塑了他

Geoffrey Hinton 點燃了引信。Karpathy 是透過多倫多 Hinton 周圍的圈子接觸到反向傳播與神經網路的,而那正是這個領域從邊緣翻轉為主流的精確時刻——就在 2012 年 ImageNet 那場成果之前。「神經網路不是小眾工具,而是運算的未來」這份信念,是 Hinton 的,並由他一路傳承下去。

Fei-Fei Li 形塑了這位匠人。身為他的博士指導教授,也是 ImageNet 的設計者,她給了 Karpathy 一種紀律:把資料當成核心對象來對待——把資料集視為那個決定一個模型能成為什麼樣子的東西。從某種真切的意義上來說,Software 2.0 正是一座以資料為中心的視覺實驗室,其信條被寫成了一套關於所有軟體的理論。

是他形塑了誰

整整一個世代的 ML 工程師。 多年來,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 在 Tesla 做了什麼?

從 2017 年到 2022 年,Karpathy 擔任 Tesla 的 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 提交地重現了 GPT-2(124M)。67

「vibe coding」這個詞是 Andrej Karpathy 發明的嗎?

是的。在 2025 年 2 月一則發於 X 的貼文裡,Karpathy 描述了「一種我稱之為『vibe coding』的全新寫程式方式,你完全順著感覺走,擁抱指數成長,甚至忘了程式碼根本存在」,而這之所以可能,是因為 LLM 寫程式工具已經好到足以靠對話來打造軟體。他後來把那則貼文稱為「隨手一則推文」;這個詞卻仍然進入了業界的詞彙庫。8


Sources


  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 在整個領域訕笑類腦神經網路時,挺過了兩次 AI 寒冬而堅持押注——信念勝於潮流,直覺勝於形式化。

4 分鐘閱讀

工程哲學:Raj Reddy,為最底層十億人打造的科技

Raj Reddy開創了能與人對話的機器——語音辨識、黑板模型——隨後將最先進的AI對準世界上最貧窮的人,而非最富有的人。

5 分鐘閱讀

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 分鐘閱讀