クイックリファレンス
この章では、開発やデバッグ中にすぐ参照できるよう、主要な式、アーキテクチャ仕様、APIリファレンス、失敗モードの診断をまとめます。
RLとアラインメントの主要式
\[ \begin{aligned} \text{PPO Clip:}&\quad L = \mathbb{E}[\min(r_t\hat{A}_t, \text{clip}(r_t,1{\pm}\epsilon)\hat{A}_t)], \quad r_t = \pi_\theta(a_t|s_t)/\pi_{\text{old}}(a_t|s_t) \\ \text{DPO:}&\quad L = -\mathbb{E}[\log\sigma(\beta\log\tfrac{\pi_\theta(y_w|x)}{\pi_\text{ref}(y_w|x)} - \beta\log\tfrac{\pi_\theta(y_l|x)}{\pi_\text{ref}(y_l|x)})] \\ \text{GRPO:}&\quad \hat{A}_i = (r_i - \mu_G)/\sigma_G, \quad \text{then PPO clip update (no critic)} \\ \text{KTO:}&\quad L = \lambda_w(1 - v(y_w)) + \lambda_l \cdot v(y_l), \quad v = \sigma(\beta\log(\pi_\theta/\pi_\text{ref}) - z) \\ \text{IPO:}&\quad L = \mathbb{E}[(\log(\pi_\theta(y_w)/\pi_\text{ref}(y_w)) - \log(\pi_\theta(y_l)/\pi_\text{ref}(y_l)) - 1/(2\beta))^2] \\ \text{ORPO:}&\quad L = L_\text{SFT}(y_w) - \lambda\log\sigma(\log(\text{odds}(y_w)/\text{odds}(y_l))) \\ \text{GAE:}&\quad \hat{A}_t = \textstyle\sum_{l=0}^{T-t}(\gamma\lambda)^l\delta_{t+l}, \quad \delta_t = r_t + \gamma V(s_{t+1}) - V(s_t) \\ \text{KL Penalty:}&\quad R_\text{total} = r_\phi(x,y) - \beta D_\text{KL}[\pi_\theta(y|x)|\pi_\text{ref}(y|x)] \\ \text{RM (Bradley-Terry):}&\quad L = -\mathbb{E}[\log\sigma(r_\phi(x,y_w)-r_\phi(x,y_l))] \\ \text{Best-of-N:}&\quad y^* = \arg\max_{y_i \sim \pi_\theta(\cdot|x),, i=1..N} r_\phi(x, y_i) \end{aligned} \]
Transformerとアーキテクチャの式
\[ \begin{aligned} \text{Self-Attention:}&\quad \text{Attn}(Q,K,V) = \text{softmax}(QK^\top / \sqrt{d_k}) \cdot V \\ \text{Multi-Head:}&\quad \text{MHA}(X) = \text{Concat}(\text{head}_1, \ldots, \text{head}_h)W^O,\quad \text{head}_i = \text{Attn}(XW_i^Q, XW_i^K, XW_i^V) \\ \text{RoPE:}&\quad f(x_m, m) = x_m e^{im\theta_j}, \quad \theta_j = 10000^{-2j/d} \\ \text{LoRA:}&\quad W' = W_0 + (\alpha/r) \cdot BA, \quad B \in \mathbb{R}^{d \times r},; A \in \mathbb{R}^{r \times k} \\ \text{KD (soft targets):}&\quad L_\text{KD} = (1{-}\alpha)L_\text{CE}(y, \hat{y}) + \alpha, T^2 \cdot \text{KL}(p_T^\text{teacher} | p_T^\text{student}) \\ \text{FFN (SwiGLU):}&\quad \text{FFN}(x) = (\text{Swish}(xW_1) \odot xW_3) W_2 \end{aligned} \]
デコーディング手法
| 手法 | 式/ルール | 主要パラメータ |
|---|---|---|
| 貪欲法 | \(y_t = \arg\max_v P(v\vert y_{<t})\) | — |
| ビームサーチ | 共同確率で上位 \(B\) 個の部分系列を保持する | \(B=4\)–\(8\) |
| 温度 | \(P'(v) = \text{softmax}(\text{logit}_v / T)\) | \(T \in [0.1, 1.5]\) |
| Top-\(k\) | 上位 \(k\) 以外のロジットをゼロ化して再正規化する | \(k=40\)–\(100\) |
| Top-\(p\)(nucleus) | 最小の集合 \(V'\) を保持する(\(\sum_{v \in V'} P(v) \geq p\) を満たすもの) | \(p=0.9\)–\(0.95\) |
| Min-\(p\) | \(P(v) \geq p_\text{min} \cdot P(v_\text{max})\) のトークンを保持する | \(p_\text{min}=0.05\)–\(0.1\) |
| 反復ペナルティ | \(\text{logit}_v \leftarrow \text{logit}_v / \theta\) を、\(v\) が以前に出現していれば適用する | \(\theta=1.1\)–\(1.3\) |
システムと並列化
| 式 | 値(70B、BF16) | 説明 |
|---|---|---|
| モデルメモリ | \(2P\) bytes | \(140\) GB(重みのみ) |
| Adamオプティマイザー | \(2P \times 4\) bytes(m + v) | \(280\) GB |
| 完全学習フットプリント | \(\sim 8P\) bytes | \(560\) GB(重み+オプティマイザー+勾配) |
| FSDPのGPUあたりメモリ | \(8P / N_\text{GPUs}\) | GPU 8基で \(70\) GB |
| 生成の演算強度 | \(2P / 2P = 1\) FLOP/byte | 大幅なメモリ帯域幅律速 |
| 生成のトークンレート | HBM_BW \(/ (2P)\) | \(\sim\)14 tok/s(A100、batch=1) |
| 層あたりのTP AllReduce | \(2 \times 2 \cdot \frac{T-1}{T} \cdot bsd\) bytes | \(\sim\)188 MB(70B、TP=8) |
| PPバブル率 | \((P-1)/(P+M-1)\) | \(P\)=ステージ数、\(M\)=マイクロバッチ数 |
| MFU | observed_toks \(\times\) 6\(P\) / peak_FLOPS | 目標: \(>40%\) |
GPUハードウェア仕様
| GPU | メモリ | 帯域幅(HBM) | BF16 TFLOPS | NVLink | 注記 |
|---|---|---|---|---|---|
| A100-80GB | 80 GB HBM2e | 2.0 TB/s | 312 | 600 GB/s | 主力機、広く利用可能 |
| H100-80GB | 80 GB HBM3 | 3.35 TB/s | 989 | 900 GB/s | 現行世代、FP8対応 |
| H200-141GB | 141 GB HBM3e | 4.8 TB/s | 989 | 900 GB/s | 大きなコンテキスト/少ないGPU数 |
| B200 | 192 GB HBM3e | 8.0 TB/s | 2250 | 1800 GB/s | 次世代(2025年) |
ハイパーパラメータの範囲
| パラメータ | 通常の範囲 | デフォルト | 注記 |
|---|---|---|---|
| \(\beta\)(DPO/KTO) | 0.05–0.5 | 0.1 | 大きいほど保守的 |
| \(\epsilon\)(PPOクリップ) | 0.1–0.3 | 0.2 | 大きいほど更新が積極的 |
| \(\gamma\)(GAE割引) | 0.99–1.0 | 1.0 | エピソード型タスクでは1.0を使う |
| \(\lambda\)(GAE) | 0.9–0.99 | 0.95 | 小さいほどバイアスが大きく、分散が小さい |
| KL係数(\(\beta_\text{KL}\)) | 0.01–0.2 | 0.05 | 目標KL \(\approx\) 5–8へ自動適応 |
| LR(RLHF) | 1e-7 – 5e-6 | 5e-7 | 事前学習より大幅に小さい |
| LR(SFT) | 1e-5 – 5e-5 | 2e-5 | 標準的なファインチューニング範囲 |
| LoRAランク \(r\) | 8–128 | 16–64 | \(r\) が大きいほど容量とメモリが増える |
| LoRAのalpha \(\alpha\) | \(r\) – \(2r\) | \(2r\) | スケーリング係数。有効スケールは \(\alpha/r\) |
| 温度(生成) | 0.6–1.0 | 0.7 | 小さいほど候補の多様性が低い |
| 生成数 \(K\) | 4–64 | 4–16 | GRPO/Online DPO/Best-of-N用 |
| 勾配クリップノルム | 0.5–2.0 | 1.0 | 勾配爆発を防ぐ |
TRL APIクイックリファレンス
| トレーナー | 手法 | 主要設定 | データ形式 |
|---|---|---|---|
SFTTrainer | 教師ありFT | packing, max_seq_length | prompt + completion |
RewardTrainer | 報酬モデル | center_rewards_coefficient | prompt + chosen + rejected |
PPOTrainer | PPO | init_kl_coef, target_kl, cliprange | プロンプト(オンライン生成) |
DPOTrainer | DPO/IPO | beta, loss_type="sigmoid"/"ipo" | prompt + chosen + rejected |
GRPOTrainer | GRPO | num_generations, beta, use_vllm | プロンプト+reward_fn |
OnlineDPOTrainer | Online DPO | num_generations, reward_model_path | プロンプト(オンライン生成) |
KTOTrainer | KTO | desirable_weight, undesirable_weight | prompt + completion + label |
ORPOTrainer | ORPO | beta | prompt + chosen + rejected |
Best-of-N (manual) | Best-of-N | n_samples | プロンプト(推論) |
RAGパイプラインの式
\[ \begin{aligned} \text{Cosine similarity:}&\quad \text{sim}(q, d) = \frac{q \cdot d}{|q| \cdot |d|} \\ \text{Retrieval:}&\quad \mathcal{D}_k = \text{top-}k_{d \in \mathcal{C}} ; \text{sim}(\text{embed}(q),; \text{embed}(d)) \\ \text{RAG generation:}&\quad P(y|q) = P_\text{LLM}(y ;|; q, \mathcal{D}_k) \\ \text{Chunking overlap:}&\quad \text{stride} = \text{chunk_size} - \text{overlap} \\ \text{Reranker (cross-enc):}&\quad \text{score}(q, d) = \text{MLP}(\text{BERT}([q; d])) \end{aligned} \]
エージェント設計パターン
| パターン | 構造 | 適する用途 |
|---|---|---|
| ReAct | Think \(\to\) Act \(\to\) Observe \(\to\) loop | 一般的なツール利用エージェント |
| Plan-and-Execute | Plan \(\to\) Execute steps \(\to\) Revise | 長期計画、構造化タスク |
| Supervisor | ルーター \(\to\) 専門エージェント | 複数ドメイン、明確なサブタスク境界 |
| Swarm(ハンドオフ) | エージェントが制御とコンテキストを移譲 | カスタマーサービス、エスカレーションフロー |
| 階層型 | 委譲するエージェントの木構造 | 複雑な分解 |
| Human-in-the-loop | エージェント \(\to\) 承認ゲート \(\to\) 継続 | 高リスク、不可逆なアクション |
エージェント通信プロトコル
| プロトコル | 範囲 | トランスポート | 主要概念 |
|---|---|---|---|
| MCP | ツール統合 | stdio / HTTP+SSE | サーバーがツールを公開し、クライアントが発見・呼び出す |
| A2A | エージェント間 | HTTP + JSON-RPC | ライフサイクルを持つタスク(submitted\(\to\)working\(\to\)done) |
| OpenAI Function Calling | ツール利用 | APIペイロード | JSONスキーマをtools[]配列に置く |
コンテキストウィンドウ予算
\[ C \geq \underbrace{S}_{\text{system}} + \underbrace{M}_{\text{memory/RAG}} + \underbrace{T}_{\text{tool defs}} + \underbrace{H}_{\text{history}} + \underbrace{R}_{\text{reserved output}} \]
128Kコンテキストの 目安:
-
システムプロンプト: 1–4Kトークン(固定)
-
ツール定義: 2–8K(ツール数に応じて増加)
-
RAGコンテキスト: 4–16K(上位 \(k\) チャンク)
-
履歴: 無制限に増加 \(\rightarrow\) 要約/切り詰め
-
予約出力: 2–8K
よくある失敗モードと修正
手法選択の決定木
-
選好ペア(chosen+rejected)があるか?
-
ラベルにノイズがある \(\rightarrow\) IPO
-
メモリ制約があり、まだSFTをしていない \(\rightarrow\) ORPO
-
クリーンなデータで計算資源が限られる \(\rightarrow\) DPO
-
DPOが頭打ちで探索したい \(\rightarrow\) Online DPO
-
-
二値フィードバック(賛成/反対)しかないか? \(\rightarrow\) KTO
-
検証可能な報酬(数学/コード)があるか? \(\rightarrow\) GRPO
-
コストを問わず最高品質が必要か? \(\rightarrow\) PPO
-
学習なしで改善したいか? \(\rightarrow\) Best-of-N
評価指標
| 指標 | 範囲 | 測定対象 |
|---|---|---|
| パープレキシティ | \([1, \infty)\) | モデルの意外度。低いほど言語モデリングが良い |
| 勝率(ベースライン比) | \([0, 1]\) | 評価者または人間が好む出力の割合 |
| BLEU | \([0, 1]\) | 参照との \(n\)-gram重複(適合率重視) |
| ROUGE-L | \([0, 1]\) | 参照との最長共通部分列 |
| Pass@\(k\) | \([0, 1]\) | テストに合格するものが \(\geq\)1 個の、\(k\) 個のコードサンプルにおける確率 |
| MMLU / GPQA | \([0, 1]\) | 知識/推論ベンチマークの多肢選択正解率 |
| HumanEval | \([0, 1]\) | 生成コードの機能的正しさ |
| Faithfulness(RAG) | \([0, 1]\) | 検索コンテキストに裏付けられた主張の割合 |
| コンテキスト関連性 | \([0, 1]\) | クエリに関連する検索内容の割合 |
| 回答関連性 | \([0, 1]\) | 回答が質問に対応している度合い |
推論とテスト時計算量のスケーリング
| 手法 | 計算コスト | 仕組み |
|---|---|---|
| Chain-of-Thought(CoT) | 1.5–3\(\times\) トークン | プロンプトで「段階的に考える」 |
| Self-Consistency | \(N \times\) 生成 | \(N\) 個のCoT経路をサンプリングし、最終回答を多数決する |
| Tree-of-Thought(ToT) | \(B \times D \times\) 生成 | 推論木をBFS/DFSで探索し、分岐を評価する |
| Best-of-\(N\) | \(N \times\) 生成 | \(N\) 個をサンプリングし、RMで採点して最高のものを選ぶ |
| ビームサーチ(推論上) | \(B \times\) 生成 | 上位 \(B\) 個の部分推論系列を保持する |
| 予算強制 | 可変 | 難しい問題に動的に多くのトークンを割り当てる |
| 検証(ORM/PRM) | \(N \times\) 生成+採点 | \(N\) 個の解を生成し、結果/プロセスRMで順位付けする |
メモリシステムの種類
| 種類 | 保存先 | 用途 |
|---|---|---|
| 作業メモリ | コンテキストウィンドウ | 現在の会話、直近のツール結果 |
| エピソード記憶 | ベクトルストア | 過去の対話、ユーザー設定、セッション履歴 |
| 意味記憶 | 知識グラフ/埋め込み | 事実、概念、ドメイン知識 |
| 手続き記憶 | スキルライブラリ/コード | 手順、学習したワークフロー |
MCPクイックリファレンス
| プリミティブ | 方向 | 副作用? | 目的 |
|---|---|---|---|
| ツール | クライアント \(\to\) サーバー | あり | アクション(作成、変更、削除)を実行する |
| リソース | クライアント \(\to\) サーバー | なし(読み取り専用) | データ(ファイル、DBレコード、設定)を読む |
| プロンプト | クライアント \(\to\) サーバー | なし | 一般的なタスク用の再利用可能なテンプレート |
| サンプリング | サーバー \(\to\) クライアント | なし | サーバーがクライアントへLLM生成を要求する |
トランスポート: stdio(ローカルサブプロセス)またはHTTP+SSE(リモート、ストリーミング可能)。
発見: 接続初期化時にクライアントがtools/list、resources/list、prompts/listを呼び出す。
ツールアノテーション: readOnlyHint、destructiveHint、idempotentHint、openWorldHint。
A2Aプロトコルクイックリファレンス
| 概念 | 説明 |
|---|---|
| エージェントカード | /.well-known/agent.json にあるJSON。名前、スキル、対応コンテンツ型を含む |
| タスク | 作業単位: id、status、artifacts。ライフサイクル: submitted \(\to\) working \(\to\) completed/failed |
| メッセージ | タスク内の通信単位(role: user/agent、parts: text/file/data) |
| アーティファクト | エージェントが生成する出力(構造化データ、ファイル、生成コンテンツ) |
| プッシュ通知 | 長時間タスク向けのWebhook更新(tasks/pushNotification/set経由) |
主要エンドポイント: tasks/send(作成/更新)、tasks/get(ステータスのポーリング)、tasks/sendSubscribe(SSEストリーム)。
エージェントフレームワークの比較
| フレームワーク | オーケストレーション | マルチエージェント | 適する用途 |
|---|---|---|---|
| LangGraph | 明示的な状態グラフ | 条件付きルーティング | 本番: 永続化、HITL、細かな制御 |
| OpenAI Agents SDK | 宣言的なハンドオフ | ハンドオフベース | シンプルさ: ガードレール、トレーシング、迅速な開始 |
| AutoGen(AG2) | 会話駆動 | GroupChat | プロトタイピング: コード実行、調査 |
| CrewAI | 役割ベースのチーム | 逐次/並列 | ローコード: 迅速なデモ、単純なパイプライン |
| Google ADK | セッション+イベント | A2Aネイティブ | エンタープライズ: アーティファクト管理、マルチモーダル |
エージェント型RLの式
\[ \begin{aligned} \text{Trajectory GRPO:}&\quad \hat{A}_i = (R(\tau_i) - \mu_G)/\sigma_G, \quad R(\tau_i) = \sum_{t} r_t^{(\tau_i)} \\ \text{Agent reward:}&\quad R = w_1 R_\text{task} + w_2 R_\text{efficiency} + w_3 R_\text{safety}, \quad R_\text{eff} = \max(0, 1 - \text{steps}/N_\text{max}) \\ \text{Masking:}&\quad \mathcal{L} = \sum_{t \in \text{agent tokens}} \min(r_t \hat{A}_t,; \text{clip}(r_t) \hat{A}_t) \quad \text{(mask env outputs)} \\ \text{Pass@}k:&\quad 1 - \frac{\binom{n-c}{k}}{\binom{n}{k}}, \quad n = \text{total samples},; c = \text{correct} \end{aligned} \]
エージェントセキュリティチェックリスト
| 脅威 | 層 | 緩和策 |
|---|---|---|
| プロンプトインジェクション(直接) | 入力 | 入力検証、指示階層、区切り文字 |
| プロンプトインジェクション(間接) | ツール出力 | ツール出力を信頼できないものとして扱い、検索文書内の指示に従わない |
| ツールの誤用 | 実行 | 最小権限、destructiveHintゲート、サンドボックス化 |
| データ漏えい | 出力 | 出力フィルタリング、許可ドメインへのツールアクセス制限 |
| 過度な自律性 | アーキテクチャ | 最大反復回数、コスト予算、人間の承認ゲート |
| 混乱した代理人 | マルチエージェント | タスクの出所を確認し、能力ベースのアクセス制御を行う |
エージェント評価指標
| 指標 | 式/定義 | 目標 |
|---|---|---|
| タスク成功率(TSR) | 正常完了数/タスク総数 | \(>85%\)(本番) |
| 完了までのステップ数 | 成功タスクあたりのエージェントアクション平均 | 低いほど効率的 |
| タスクあたりコスト | 総トークン数 \(\times\) トークン単価 | 予算に依存 |
| レイテンシ(TTFC) | リクエストから最初の有用な出力までの時間 | 対話用途では \(<5\)s |
| ツール呼び出し精度 | 正しいツール選択数/呼び出し総数 | \(>90%\) |
| 回復率 | 成功した再試行数/初期失敗数 | \(>60%\) |
| 人間へのエスカレーション率 | 人間が必要なタスク数/タスク総数 | \(<15%\) |
主要なエージェントベンチマーク
| ベンチマーク | ドメイン | 指標 | 最先端(2025年) |
|---|---|---|---|
| SWE-bench Verified | ソフトウェア工学 | 解決済み課題の割合 | \(\sim\)70% |
| WebArena | ウェブ閲覧 | タスク成功率 | \(\sim\)40% |
| OSWorld | デスクトップコンピューター利用 | タスク成功率 | \(\sim\)25% |
| GAIA | 汎用AIアシスタント | 完全一致正解率 | \(\sim\)75%(L1) |
| Tau-bench | ツール利用の信頼性 | 合格率(5試行) | \(\sim\)65% |
| HumanEval / MBPP | コード生成 | Pass@1 | \(>95%\) |