大規模言語モデル(LLM)を活用した実践的なアプリケーション開発へと繋がる、知識、テクニック、ツールの包括的な解説書。
著者自身によるLLMを用いた数々の実験と、800本を超える論文の知見に基づき、モデルの構造や限界、活用手法、応用パターンを体系的に紹介することで、直感的な理解と応用力を身につけられるように構成されています。
LLMがどんなデータを用いて、どんな目的で訓練されているかといった原理的な側面から、ファインチューニング、推論の最適化、RAG(検索拡張生成)といった応用的な側面まで、PoC(概念実証)から一歩踏み出したアプリケーションの構築を目指す方に気づきを与える一冊です。
実践 LLMアプリケーション開発
―プロトタイプを脱却し、実用的な実装に迫るための包括的な手引き
Suhas Pai 著、金本 勝吉 監訳、オライリー・ジャパン編集部 訳
![[cover photo]](https://www.oreilly.co.jp/books/images/picture_large978-4-8144-0131-4.jpeg)
- TOPICS
- AI/LLM
- 発行年月日
- 2025年09月
- PRINT LENGTH
- 400
- ISBN
- 978-4-8144-0131-4
- 原書
- Designing Large Language Model Applications
- FORMAT
関連ファイル
目次
本書への賛辞 監訳者まえがき はじめに 第1部 LLMの構成要素 1章 イントロダクション 1.1 LLMの定義 1.2 LLMの略史 1.2.1 黎明期 1.2.2 LLMの時代 1.3 LLMのインパクト 1.4 企業におけるLLMの活用 1.5 プロンプティング 1.5.1 ゼロショット・プロンプティング 1.5.2 フューショット・プロンプティング 1.5.3 CoTプロンプティング 1.5.4 プロンプトの連鎖 1.5.5 敵対的プロンプティング 1.6 APIを通してLLMにアクセスする 1.7 LLMの強みと限界 1.8 最初のチャットボット・プロトタイプを作る 1.9 プロトタイプからプロダクションへ 1.10 まとめ 2章 事前学習(Pre-Training)データ 2.1 LLMの構成要素 2.2 事前学習データの要件 2.3 よく使われる事前学習データセット 2.4 合成事前学習データ 2.5 訓練データの前処理 2.5.1 データのフィルタリングとクリーニング 2.5.2 質の高い文書を選ぶ 2.5.3 重複排除 2.5.4 個人識別情報の除去 2.5.5 評価セットの混入除去 2.5.6 データの混合 2.6 下流タスクに対する事前学習データの効果 2.7 事前学習データセットにおけるバイアスと公平性の問題 2.8 まとめ 3章 語彙とトークン化 3.1 語彙 3.2 トークナイザー 3.3 トークン化パイプライン 3.3.1 正規化 3.3.2 プリトークン化 3.3.3 トークン化 3.3.4 後処理 3.3.5 特殊トークン 3.4 まとめ 4章 アーキテクチャと学習目的 4.1 予備知識 4.2 意味を表現する 4.3 Transformerのアーキテクチャ 4.3.1 自己注意 4.3.2 位置符号化(Positional 4.3.3 フィードフォワード・ネットワーク 4.3.4 レイヤー正規化 4.4 損失関数(Loss 4.5 内在的モデル評価 4.6 Transformerの中核となるアーキテクチャ 4.6.1 エンコーダのみのアーキテクチャ 4.6.2 エンコーダ・デコーダのアーキテクチャ 4.6.3 デコーダのみのアーキテクチャ 4.6.4 混合エキスパート(MoE)モデル 4.7 学習目的(Learning 4.7.1 完全言語モデリング 4.7.2 接頭辞言語モデリング 4.7.3 マスク言語モデリング 4.7.4 どの学習目的が優れているのか? 4.8 事前学習モデル 4.9 まとめ 第2部 LLMの活用 5章 LLMをユースケースに合わせる 5.1 LLMの世界をナビゲートする 5.1.1 LLMプロバイダーとは? 5.1.2 モデルの調整とその特色 5.1.3 オープンソースLLM 5.2 タスクに合わせたLLMの選び方 5.2.1 オープンソースLLMとプロプライエタリLLMの比較 5.2.2 LLMの評価 5.3 LLMをロードする 5.3.1 Hugging 5.3.2 Ollama 5.3.3 LLM推論API 5.4 デコーディング戦略 5.4.1 貪欲なデコーディング 5.4.2 ビームサーチ 5.4.3 Top-kサンプリング 5.4.4 Top-pサンプリング 5.5 LLMで推論を実行する 5.6 構造化された出力(Structured 5.7 モデルのデバッグと解釈可能性 5.8 まとめ 6章 ファインチューニング 6.1 ファインチューニングの必要性 6.2 ファインチューニング:最初から最後まで実施する例 6.2.1 学習アルゴリズムのパラメータ 6.2.2 メモリ最適化パラメータ 6.2.3 正則化パラメータ 6.2.4 バッチサイズ 6.2.5 PEFT 6.2.6 変数の精度を落として作業する 6.2.7 すべてをまとめる 6.3 ファインチューニングのためのデータセット 6.3.1 公開されているインストラクション・チューニング用データセットを活用する 6.3.2 LLMによりインストラクション・チューニング用データセットを生成する 6.4 まとめ 7章 高度なファインチューニング手法 7.1 継続事前学習 7.1.1 リプレイ/メモリ 7.1.2 パラメータ拡張 7.2 PEFT 7.2.1 新しい重みを追加する 7.2.2 サブセット・メソッド(Subset 7.3 複数のモデルを組み合わせる 7.3.1 モデル・アンサンブル 7.3.2 モデルマージ/フュージョン 7.3.3 アダプターのマージ 7.4 まとめ 8章 アライメントと論理的推論 8.1 アライメントの定義 8.2 強化学習 8.2.1 人間によるフィードバックの種類 8.2.2 RLHFの例 8.3 ハルシネーション 8.4 ハルシネーションを軽減する 8.4.1 自己整合性 8.4.2 検証の連鎖 8.4.3 Recitation 8.4.4 ハルシネーションに対処するためのサンプリング手法 8.4.5 レイヤーを対照させたデコーディング 8.5 コンテキスト内ハルシネーション 8.6 無関係な情報によるハルシネーション 8.7 論理的推論 8.7.1 演繹的推論 8.7.2 帰納的推論 8.7.3 アブダクション推論 8.7.4 常識的推論 8.8 LLMに論理的推論を促す 8.8.1 検証器による論理的推論能力の向上 8.8.2 推論時の計算量スケーリング 8.8.3 論理的推論のためのファインチューニング 8.9 まとめ 9章 推論の最適化 9.1 LLMによる推論の課題 9.2 推論を最適化する手法 9.3 計算量を削減する手法 9.3.1 KVキャッシュ 9.3.2 早期終了 9.3.3 知識蒸留 9.4 デコーディングを高速化する手法 9.4.1 投機的デコーディング 9.4.2 並列デコーディング(Parallel 9.5 メモリの使用量を減らす手法 9.5.1 対称量子化(Symmetric 9.5.2 非対称量子化 9.6 まとめ 第3部 LLMアプリケーションのパラダイム 10章 LLMから外部ツールを利用する 10.1 LLMにおける相互作用のパラダイム 10.1.1 受動的アプローチ 10.1.2 明示的アプローチ 10.1.3 自律的アプローチ 10.2 エージェントの定義 10.3 エージェント型ワークフロー 10.4 エージェント型システムの構成要素 10.4.1 モデル 10.4.2 ツール 10.4.3 データストア 10.4.4 エージェント・ループ 10.4.5 ガードレールと検証器 10.4.6 オーケストレーション・ソフトウェア 10.5 まとめ 11章 表現学習と埋め込み 11.1 埋め込み表現入門 11.2 意味検索 11.3 類似度の測定方法 11.4 埋め込みモデルのファインチューニング 11.4.1 ベースモデル 11.4.2 訓練データセット 11.4.3 損失関数 11.5 指示に基づく埋め込み表現 11.6 埋め込みベクトルの容量を最適化する 11.6.1 マトリョーシカ埋め込み 11.6.2 バイナリおよび整数による埋め込み表現 11.6.3 直積量子化 11.7 チャンク分割(Chunking) 11.7.1 スライディング・ウィンドウを用いたチャンク分割 11.7.2 メタデータを利用したチャンク分割 11.7.3 レイアウトを利用したチャンク分割 11.7.4 意味的なチャンク分割 11.7.5 レイトチャンク分割 11.8 ベクトルデータベース 11.9 埋め込み表現の解釈 11.10 まとめ 12章 RAG 12.1 RAGの必要性 12.2 RAGを利用する場面 12.3 RAGを使うべきかの判断 12.4 RAGのパイプライン 12.4.1 書き換え 12.4.2 検索 12.4.3 リランク 12.4.4 リファイン 12.4.5 挿入 12.4.6 生成 12.5 RAGを用いた記憶の管理 12.6 RAGによるフューショット学習用の事例の選定 12.7 モデルの訓練におけるRAGの利用 12.8 RAGの限界 12.9 RAGとロング・コンテキストのどちらを使うべきか? 12.10 RAGとファインチューニングのどちらを使うべきか? 12.11 まとめ 13章 デザインパターンとシステムアーキテクチャ 13.1 マルチLLMアーキテクチャ 13.1.1 LLMカスケード 13.1.2 ルーター 13.1.3 タスク特化型LLM 13.2 プログラミングパラダイム 13.2.1 DSPy 13.2.2 LMQL 13.3 まとめ 索引