← すべての記事

エンジニアリング哲学:Andrej Karpathy、自分では書かないスタック

Andrej Karpathy, AI researcher and educator

要点

  • 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 の講義と輪読会に参加して、ニューラルネットワークの福音を、それが正統になる何年も前から吸収していました。ブリティッシュコロンビア大学で修士号を取ったのち、スタンフォードに進み、Stanford Vision Lab の Fei-Fei Li のもとで博士課程を、2015年に修了しました。彼の博士研究はコンピュータービジョンと自然言語の交わるところ——機械に画像を説明させること——にありました。まさに、その後の10年が引き裂いていく接ぎ目です。2

スタンフォードでは、同大学初の深層学習講座 CS231n を設計し教えました。受講者は2015年の150人から、2017年には750人へと増えました。3 2015年には OpenAI の創設メンバーの一人になりました。2017年には Tesla の AI ディレクターとなり、Elon Musk の直属で Autopilot のビジョンスタックを率いました。2023年に OpenAI へ戻り、2024年には AI 教育会社 Eureka Labs を立ち上げるために退社、そして2026年には Anthropic の事前学習チームに加わりました。2 あらゆる移り変わりを貫く一本の筋は、勤め先ではありません。機械を底の底まで理解し、そのうえで他のみんなにそのやり方を見せる、という強いこだわりです。

仕事

「The Unreasonable Effectiveness of Recurrent Neural Networks」(2015):論証としてのデモ

Karpathy's char-rnn diagram: the network reads the characters "h, e, l, l" through an input, hidden, and output layer and learns to predict the next character at each step -- "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

このエッセイの本当の貢献は、技術だけにとどまらず、文化的なものでした。ニューラルネットワークがプログラミングのパラダイムであるなら、チームにはデータセットのためのバージョン管理、活性のためのデバッガ、そして旧来のスタックには無縁だった故障モードのための規律が必要になります。それからほぼ10年後、Karpathy はこの枠組みを Software 3.0 へと拡張しました。普通の英語でプログラムする大規模言語モデルです。だからこそ彼は英語を「最も熱い新しいプログラミング言語」と呼べたのです。5 賢くなったのはエージェントではない——土台のほうが賢くなり、そのたびにエンジニアリングが一段ずつ上の層へと移っていったのです。

Tesla Autopilot(2017–2022):本番環境の Software 2.0

Tesla's Autopilot vision stack: raw camera feeds (top) reconstructed into a bird's-eye "vector space" of road edges and lane geometry (bottom) -- Software 2.0 running in a moving car

Tesla の AI ディレクターとして、Karpathy は最も賭けの大きい場所で Software 2.0 を動かしました。速度を出して走る自動車です。Autopilot のビジョンシステムはカメラ映像を取り込むニューラルネットワークの群れであり、彼のチームの中心的な課題は、まさにエッセイが予言したものでした——プログラムがデータセットそのものであるとき、プログラムを改善するとはデータを改善することなのです。Tesla はデータエンジンを築きました。車両群から、まれで難しい事例(交通コーンを積んだトラック、夕暮れの鹿)を掘り出し、ラベルを付け、再学習させ、再展開するパイプラインです。手で書かれたヒューリスティクスが削除されてネットワークへと吸収されるにつれ、コードベースは縮んでいきました。Karpathy はこれを、Software 1.0 のコードが 2.0 のスタックに「食べられて」いくこと、とそのまま言い表しました——彼のテーゼの、最も明快な本番環境での実証です。2

nanoGPT、micrograd、そして「Neural Networks: Zero to Hero」(2022–):ゼロから、一つひとつ解き明かす

The nanoGPT banner -- Karpathy's joke about the available GPT implementations: the heavyweight options struck out in favor of a small, legible "speedboat"

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行のライブラリは、10万行のライブラリがぼかしてしまうものを教えてくれます。

公開しながら学ぶ。 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 エンジニアリングのハブエージェントアーキテクチャのガイドにあります。

FAQ

Andrej Karpathy の言う「Software 2.0」とは何ですか?

Software 2.0 は、2017年のエッセイに由来する Karpathy の用語で、人間が明示的に書いた命令としてではなく、ニューラルネットワークの重みとして書かれたプログラムを指します。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」とは何ですか?

これは、深層学習を Python でゼロから組み上げながら教える、Karpathy の無料の動画講義シリーズです。micrograd——約100行の自動微分エンジン——から始まり、言語モデルを経て、ゼロから作る GPT へと積み上げていきます。講義「Let’s build GPT: from scratch, in code, spelled out」も含まれます。続く build-nanogpt リポジトリは、空のファイルから始めて、git のコミットを一つずつ重ねながら GPT-2(124M)を再現します。67

Andrej Karpathy は「vibe coding」という言葉を作ったのですか?

そうです。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.” 

関連記事

エンジニアリング哲学:ジェフリー・ヒントン、流行より信念

ジェフリー・ヒントンは、学界が脳型ニューラルネットワークを嘲笑していた2度のAIの冬を通じて、それに賭け続けました。流行より信念を、形式論より直観を。

3 分で読める

エンジニアリング哲学:デミス・ハサビス、知能を解けばすべてが解ける

デミス・ハサビスは知能を第一原理から構築した――ゲームを実証の場とし、神経科学を着想源として――そしてそれをタンパク質の折りたたみ問題に向け、ノーベル賞を勝ち取った。

1 分で読める

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 分で読める