
シリーズ · 全 6 部
ローカルLLMで覗く 言語モデルの中身 — トークンから PHOTON まで
LLM を「使える」から「中身を説明できる」へ。トークン・Attention・KVキャッシュ・サンプリング・ゼロから学習を最小実装で積み上げ、最終回で富士通の新アーキテクチャ PHOTON (ACL 2026) を手元の Mac でミニチュア擬似再現する、6 部構成の実装ノート。
✓ 完結
こんな人におすすめ
- ローカル LLM (Ollama / MLX) は動かせるが、中で何が起きているかは説明できない人
- 「475 倍高速化」のようなニュースを、鵜呑みにも全否定にもせず自分で検証したいエンジニア
- Transformer / KVキャッシュ / サンプリングを、論文ではなく動くコードで理解したい人
推奨読書順
- Part 1
LLM はトークンを1つずつ予測している — 自己回帰ループを手元で覗く
LLM は文章を一度に書くのではなく、トークンを 1 つずつ予測して繋げています。小型モデルを MLX で手元に動かし、トークン化が文字でも単語でもないことと、「生成時間はトークン数に比例する」ことを実測で確かめます。連載「言語モデルの中身」Part 1。
- Part 2
Attention は過去を読み直している — Q/K/V と O(T²) の壁を最小実装で覗く
Transformer の心臓 self-attention を、数式ではなく最小の Python 実装で組み立てます。Q/K/V が何をしているか、なぜ各トークンが他の全トークンを見る構造が系列長の二乗 O(T²) の計算量とメモリを生むのかを、系列長を変えた実測で確かめます。長い文脈ほど重くなる理由と、次回 KV キャッシュが必要になる動機が手元の数字で腹落ちします。連載「言語モデルの中身」Part 2。
- Part 3
KVキャッシュは記憶のコスト — 文脈が伸びるほど decode が重くなる理由を実測する
Attention(Part 2)を毎ステップ再計算すると、系列が伸びるたびに同じ O(T²) を繰り返すことになります。それを避けるのが KV キャッシュですが、代わりに何を払っているのでしょうか。mlx_lm の内部キャッシュを直接 introspect し、キャッシュサイズが context 長・層数・head 数に線形で膨らむこと、decode の速度が計算量ではなくこのキャッシュを読み出す帯域で決まる(memory-bound)ことを、理論式と実測の一致で確かめます。連載「言語モデルの中身」Part 3。
- Part 4
サンプリングは賭けだ — 1 回の正解 vs N 回の多数決、self-consistency で精度を買う代償を実測する
LLM の生成は確率分布からのサンプリングです。同じ質問を temperature>0 で何度も投げると、毎回同じ答えが返ってくるとは限りません。この「ブレ」を欠陥ではなく資源として使うのが self-consistency(N 回サンプリングして多数決)です。GSM8K の数学文章題で N=1 と N=3,5,10,20 の正答率を bootstrap CI 付きで実測し、精度が上がる分だけ何倍のコストを払っているのかを確かめます。連載「言語モデルの中身」Part 4。
- Part 5
小さな言語モデルをゼロから学習する — nanoGPT 級を MPS で回し、PPL・速度・メモリを自分で測る
推論は既存モデルの重みを使い回すだけですが、学習は重みそのものを一から作る作業です。nanoGPT 級(約1,080万パラメータ)の小さな Transformer を TinyShakespeare で実際にゼロから学習し、train/val loss の推移・perplexity・所要時間・ピークメモリを Apple Silicon の MPS で自分で測ります。連載「言語モデルの中身」Part 5。
- Part 6
PHOTON を読んで、手元でミニチュア再現する — 475 倍をスループット×メモリに分解し、チャンク階層を自分で測る
富士通 PHOTON は「GPU リソース当たり最大 475 倍」を謳いますが、これはスループット÷メモリの合成値です。実スループットは約 44 倍、メモリ削減は約 11 倍とその内訳を分解し、源泉であるチャンク階層構造(bottom-up encoder + top-down decoder)をミニチュアで自作します。Part 5 の nanoGPT 級モデルと3 seedで比較した、小規模な一実験の観察として、PPL・スループット・メモリのどれが再現でき、どれが規模に依存するのかを自分の手元で確かめます。連載「言語モデルの中身」最終回・Part 6。
サンプルコード
連載に対応する動くサンプルは github.com/zawazawa5809/llm-internals-companion にあるん。各 Part に対応する git tag から checkout できる。clone とセットアップ手順は repo の README にまとまっているん。
