100ドルで「俺のAI」を茹で上げる:karpathy/nanochatで学ぶLLM開発の三段仕込み
このプロジェクトは、AI界の巨匠アンドレイ・カルパティ(Andrej Karpathy)氏が公開した、「100ドル(約1.5万円)で、自分だけのChatGPTを作っちゃおう!」という、非常にエキサイティングなリポジトリです。
まるで、こだわりのラーメンを「スープの出汁(事前学習)」から「トッピング(調整)」まで全部自分で作るような、LLM(大規模言語モデル)開発のフルコースを体験できるのが魅力です。
ソフトウェアエンジニアにとって、LLM開発はブラックボックスに見えがちですが、nanochat はそれを以下の3つの工程(ラーメンの味の違いのようなもの)に分けて見せてくれます。
| 工程(味) | やっていること | エンジニア的なメリット |
| 醤油(Pretraining) | ネットの膨大な文章を読み込み、基礎的な「言語の知識」を身につける。 | 巨大なモデルがどうやって「言葉」を覚えるのか、その根本がわかる。 |
| 味噌(SFT / Fine-tuning) | 対話データ(指示と回答)を使って、「チャット形式」で答える練習をする。 | 特定の用途(例:社内ヘルプデスク用)へのカスタマイズ方法が学べる。 |
| 豚骨(Tool Use / RL) | 計算機を使ったり、論理的に考えたりする「高度な能力」を足す。 | AIに「計算ミスを防ぐ」ためのPython実行機能をどう組み込むかが見える。 |
「フルスタック」の教科書
トークナイザー(文字の数値化)、モデル構築(PyTorch)、学習、推論、そしてWeb UIまで、8,000行程度のコードに全て詰まっています。巨大なライブラリに隠された「中身」を一行ずつ読めます。
コスト感覚の習得
「LLM開発には数億円かかる」という常識を壊し、クラウドGPU(H100等)を数時間借りるだけで、実際に動くモデルが作れるという「コストパフォーマンスの肌感覚」が身につきます。
ハッカブル(改造しやすい)
コードが非常にシンプルなので、自分の好きなデータセットを混ぜたり、モデルの構造を少し変えて実験したりするのが簡単です。
まずは公式の「スピードラン(4時間・100ドルコース)」を試すのが定石です。
環境準備
8 x H100 GPU などの強力なGPUを積んだクラウドマシン(Lambda Labsなど)を用意します。
リポジトリのクローン
git clone https://github.com/karpathy/nanochat.git
cd nanochat
スクリプトの実行
あとは魔法のコマンドを叩くだけです。
./runs/speedrun.sh
これだけで、トークナイザーの作成からチャットモデルの完成まで、ノンストップで走り抜けます。
エンジニアなら、モデルがどう定義されているか気になりますよね。nanochat の核心(Transformerブロック)は、非常に読みやすい PyTorch で書かれています。
# 非常に簡略化したイメージです。実際はもっと洗練されています!
class Block(nn.Module):
def __init__(self, config):
super().__init__()
# 注目すべきポイントを計算する「アテンション」
self.attn = Attention(config)
# 知識を蓄える「ニューラルネットワーク」
self.mlp = MLP(config)
# 学習を安定させる「レイヤーノーマライゼーション」
self.ln_1 = LayerNorm(config.n_embd)
self.ln_2 = LayerNorm(config.n_embd)
def forward(self, x):
# 残差接続(Shortcut Connection)を使って計算
x = x + self.attn(self.ln_1(x))
x = x + self.mlp(self.ln_2(x))
return x
このように、最新の Llama 3 などでも使われている設計思想(RoPE、GQA、RMSNormなど)が、最小限の実装で示されています。
「いきなり100ドル払うのはちょっと...」という場合は、まずはコードを眺めて、「トークナイザーがどうやって日本語や英語を数字に変えているか」という部分だけをローカルPCで動かしてみるのも面白いですよ。