kbits

ソフトウェア2.0

原題: Software 2.0
著者: Andrej Karpathy
公開日: 2017-11-11
ソースURL: https://karpathy.medium.com/software-2-0-a64152b37c35
アーカイブ日: 2026-06-11


要約

Andrej Karpathy(当時TeslaのAI担当ディレクター、後にOpenAIの共同設立者)が2017年にMediumに投稿したこの記事は、ニューラルネットワークを単なる「機械学習ツールボックスのひとつの道具」ではなく、ソフトウェア開発そのもののパラダイムシフトとして位置づける視点を提示した。この「Software 2.0」という概念は、その後のAI業界で広く参照される foundational な考え方となった。

ソフトウェア1.0と2.0の違い

Software 1.0 とは、人間のプログラマーがPythonやC++などの言語で明示的な命令を一行一行書き下ろす従来のプログラミングである。各コード行は、プログラマーがプログラム空間の中で「望ましい振る舞い」の一点を特定する作業に相当する。

Software 2.0 は、ニューラルネットワークの重みという、はるかに抽象的で人間には扱いにくい言語で書かれる。典型的なネットワークには数百万もの重みがあり、人間が直接これを書き下ろすことは不可能だ。代わりに、私たちは「入力と出力のペアのデータセットを満たす」や「囲碁の対局に勝つ」といった目標を指定し、ニューラルネットワークのアーキテクチャという「大まかなスケルトン」を書き、計算資源を使って目的に合致するプログラムを探索する。この探索を効率的にするのが、バックプロパゲーションと確率的勾配降下法(SGD)である。

Karpathyの比喩を借りれば、Software 1.0では人間が書いたソースコード(.cppファイルなど)がコンパイルされてバイナリになる。Software 2.0では、「ソースコード」は①望ましい振る舞いを定義するデータセットと②ニューラルネットのアーキテクチャ(大まかな骨格)から成り、訓練プロセスがデータセットをバイナリ(最終的なニューラルネットワーク)にコンパイルする。そして、実際の「ソフトウェア開発」の大部分は、ラベル付きデータセットのキュレーション、収集、調整、クリーニングという形を取る。チームは「2.0のプログラマー(データラベラー)」と「1.0のプログラマー(訓練インフラの維持)」に二分される。

現実世界での移行例

Karpathyは、各領域で明示的なコードからSoftware 2.0への移行が進行中だと指摘する。

Karpathyは、これらの多くの例がGoogleで進行中であることにも言及し、「Software (1.0) is eating the world, and now AI (Software 2.0) is eating software」という力強い一文で総括する。

Software 2.0の利点

Karpathyは、従来のC++コードベースと比較したConvNetの利点を列挙する。

  1. 計算的に均質: ニューラルネットの演算は、行列乗算とReLU(ゼロでの閾値処理)というわずか2種類の操作で構成される。従来のソフトウェアの命令セットと比較して格段に均質であり、正しさや性能の保証が容易。
  2. シリコンに焼き込みやすい: 命令セットが小さいため、カスタムASICやニューロモルフィックチップとして実装しやすい。低消費電力のインテリジェンスがあらゆる場所に浸透する未来が訪れる。
  3. 一定の実行時間: ニューラルネットのフォワードパスは毎回正確に同じFLOPSを消費する。C++コードベースのような実行経路による変動がゼロ。無限ループの心配もない。
  4. 一定のメモリ使用量: 動的メモリ割り当てがなく、スワップやメモリリークの可能性が極めて低い。
  5. 高い移植性: 行列乗算の連続は、任意の計算構成で実行するのが従来のバイナリよりもはるかに容易。
  6. 高い俊敏性: C++コードを2倍高速にしてほしいと言われたら大変な作業だが、Software 2.0ではチャネル数を半分にして再訓練するだけで、ちょうど2倍速く、少し性能の落ちたプログラムが手に入る。逆に、より多くのデータや計算資源が手に入れば、チャネルを増やして再訓練するだけで即座に性能が向上する。
  7. モジュールの最適な融合: 別々に訓練された2つのSoftware 2.0モジュールは、全体を通して逆伝播させることで容易に最適化できる。
  8. 人間より優れている: 画像/動画、音声/音声に関わる多くの価値ある領域で、ニューラルネットは人間が書けるどんなコードよりも優れたプログラムになる。

Software 2.0の限界

一方で、以下の欠点も認識されている。

プログラミングの未来

Karpathyは最後に、Software 2.0時代のツールエコシステムについて考察する。Software 1.0には強力なIDE(シンタックスハイライト、デバッガ、プロファイラ、git連携など)の膨大なツール群が存在する。しかしSoftware 2.0での「プログラミング」はデータセットの蓄積、整頓、クリーニングである。最初のSoftware 2.0 IDEを開発するのは誰なのか? — 例えば、モデルが誤ラベルを疑う画像をハイライトする機能、予測によるラベルシーディング、不確実性に基づくラベル推奨などだ。

同様に、GitHubはSoftware 1.0コードのホームだが、Software 2.0のGitHubは存在するか? リポジトリはデータセットであり、コミットはラベルの追加や編集で構成される。そして、pip/conda/Dockerに相当するニューラルネットワークのパッケージマネージャは何なのか?

「短期的には、繰り返し評価が可能で安価であり、アルゴリズム自体を明示的に設計することが難しいあらゆる領域でSoftware 2.0が普及するだろう。長期的には、AGIを開発するとき、それは確実にSoftware 2.0で書かれることになる」


論評

この記事が2017年に発表されてから9年が経った2026年現在、Karpathyの見立ては驚くべき精度で的中している。大規模言語モデル(LLM)の台頭、画像生成(Stable Diffusion, DALL-E)、音声合成の自然さ、AlphaFoldによるタンパク質構造予測 — これらのすべてが「データからプログラムをコンパイルする」というSoftware 2.0の枠組みで理解できる。

特に印象的なのは、Karpathyが記事の終盤で「Software 2.0 IDE」や「Software 2.0 GitHub」の可能性に言及している点だ。2026年現在、まさにそうしたツール群が現実のものとなりつつある。Hugging Faceはデータセットとモデルのハブとして「Software 2.0のGitHub」の役割を果たし、Weights & BiasesやComet MLは訓練の可視化・管理を行う「2.0のIDE」として機能している。また、RLHF(人間のフィードバックからの強化学習)やインストラクションチューニングといった技術は、まさに「データセットの編集によるプログラム修正」というKarpathyのビジョンを具現化している。

「計算の均質性」の議論も興味深い。Transformerアーキテクチャは基本的に行列乗算+ソフトマックス+レイヤー正規化だけで構成され、GPU TPUといった専用ハードウェアとの驚異的な親和性を示した。2026年のAIチップ市場はKarpathyの予見した「シリコンに焼き込まれたSoftware 2.0」の世界そのものと言える。

この記事の最大の功績は、ニューラルネットワークを「機械学習の一手法」から「新しいプログラミングパラダイム」へと再定義したことにある。この視点の転換によって、AI開発は「モデルを選んで訓練する」作業ではなく「プログラム(=データセット+アーキテクチャ)を編集する」ソフトウェア工学の一分野として捉え直された。Karpathyが記事の冒頭で「This interpretation completely misses the forest for the trees」と警告した通り、ニューラルネットを単なる分類器として見る見方は本質を捉えていない。2017年の発表から9年を経てなお、このフレームワークはAI開発を理解するための最も強力なレンズの一つであり続けている。