MicroArchitectures
H.Ueda
Programmer
ブログ
llama.cpp のソースを読み解く技術書「llama.cpp 詳解 ― 推論エンジンの内部を読む」を出しました(第1部を無料公開)
ローカル LLM 推論エンジン llama.cpp のソースコードを読み解く技術書 「llama.cpp 詳解 ― 推論エンジンの内部を読む」(著:艶雨)を Amazon の Kindle で出版しました。
第1部(導入)を自社サイトで無料公開しています。まずはそこから、雰囲気だけでも確かめてください。続き(全26章+付録)は Kindle 版でお読みいただけます。Kindle Unlimited 対象なので、ご利用中の方は追加費用なしでそのまま読み進められます。
- 📖 第1部を無料で読む(自社サイト):https://microarchitectures.jp/books/llama-cpp-deep-dive/
- 🛒 Kindle 版(全26章+付録・Kindle Unlimited 対象):https://www.amazon.co.jp/dp/B0H81D27N1
どんな本か
「llama.cpp は動かせる。でも、その中で何が起きているかは説明できない」——そんな方のための一冊です。
本書は、llama-cli にプロンプトを渡してから 次の 1 トークンが返ってくるまでに何が起きているのかを、ソースコードそのものから順を追って読み解きます。
- プロンプト → トークン化 → 埋め込み → 計算グラフ → バックエンド実行 → サンプリング という推論の骨格を、自分の言葉で説明できるようになります
- テンソル計算ライブラリ ggml と、その上に乗る llama.cpp 本体の役割分担を区別できるようになります
- 量子化・KV キャッシュ・バックエンド選択が、速度やメモリにどう効くのかを仕組みから理解できます
- トラブルや性能問題に、当て推量ではなく仕組みから原因を切り分けられるようになります
「量子化で精度はどれだけ落ちるのか」を実測
言葉だけでなく、実際に測っています。付録では Llama-3.2-3B を各量子化形式に変換し、パープレキシティ(PPL)の増加量を実測して並べています(wikitext-2・本書のピン留めコミットでビルド)。
| 量子化 | bpw(目安) | PPL 増加(F16 基準・小さいほど高精度) |
|---|---|---|
| F16(基準) | 16.00 | 基準(PPL 10.5255) |
| Q8_0 | 8.50 | +0.0129 |
| Q6_K | 6.56 | +0.0467 |
| Q5_K_M | 5.50 | +0.0741 |
| Q4_K_M | 4.50 | +0.3075 |
| Q3_K_M | 3.44 | +1.0814 |
| Q2_K | 2.63 | +6.0064 |
「なぜ Q4_K_M が推奨の出発点なのか」「2bit まで落とすと何が起きるのか」を、数字と仕組みの両面から説明します。
章構成(全7部・全26章+付録3)
- 第1部 導入:地図を手に入れる(第1章〜第3章) = 対象読者とゴール/LLM 推論の最小概念/llama.cpp の全体像(ブロック図・データフロー図)※この部を無料公開
- 第2部 まず動かす(第4章〜第5章) =
examples/simpleの精読/llama-cliの起動から対話ループまで - 第3部 ggml:テンソル計算エンジン(第6章〜第14章) =
ggml_tensorと計算グラフ/アロケータ/バックエンド抽象/CPU・量子化カーネル/Metal・CUDA・Vulkan - 第4部 モデルとデータの読み込み(第15章〜第17章) = GGUF フォーマット/モデルローダ/トークナイザと語彙
- 第5部 推論の中核(第18章〜第20章) = 計算グラフ構築/
llama_contextとデコード/KV キャッシュとメモリ - 第6部 出力の制御(第21章〜第23章) = サンプリング/GBNF による文法制約/チャットテンプレート
- 第7部 応用ツール(第24章〜第26章) = 量子化ツール/サーバ/LoRA・埋め込み・投機的デコード
- 付録 = 型と対応表/環境構築/用語集
前提知識
C++ の基本文法(関数・構造体・ポインタ・テンプレートが読めるレベル)があれば読み進められます。LLM や Transformer の知識は前提としません。 トークン・埋め込み・Attention・KV キャッシュといった概念は、ソースを読むのに必要な範囲でゼロから積み上げます。学習や数学的導出には踏み込まず、「学習済みモデルを読み込んで推論する」という一本の道筋に集中します。
なぜ第1部だけ無料なのか
本書は図版・コード・逐行の読解・章をまたぐ相互参照を多く含みます。まず第1部(llama.cpp の地図)を無料公開し、そこで「読める・面白い」と感じていただけた方に、続きを Kindle でお届けする形にしています。図も読みやすい形で届けたいので、本文はサイト版で公開しています。
リンク
- 📖 第1部を無料で読む(自社サイト):https://microarchitectures.jp/books/llama-cpp-deep-dive/
- 🛒 Kindle 版(全26章+付録・Kindle Unlimited 対象):https://www.amazon.co.jp/dp/B0H81D27N1
- 🔧 解説対象のソース(llama.cpp 本家):https://github.com/ggml-org/llama.cpp
ぜひお読みください。