100ドルで「俺のAI」を茹で上げる:karpathy/nanochatで学ぶLLM開発の三段仕込み


100ドルで「俺のAI」を茹で上げる:karpathy/nanochatで学ぶLLM開発の三段仕込み

karpathy/nanochat

2026-02-03

このプロジェクトは、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で動かしてみるのも面白いですよ。


karpathy/nanochat