LLM(大規模言語モデル)がテキストを生成する際に、次のトークンを選択するアルゴリズムの総称。貪欲法・ビームサーチ・サンプリング系など複数の手法があり、生成品質・多様性・速度のトレードオフを制御する。
LLMデコーディング戦略とは、大規模言語モデルが出力テキストを生成する際に、語彙全体の確率分布から次のトークンをどのように選択するかを決定するアルゴリズム群です。GPT-4o、Claude 4、Gemini 2.5 Pro など2026年現在の主要LLMはすべて自己回帰(autoregressive)方式でトークンを1つずつ生成しており、この選択戦略が生成テキストの品質・創造性・一貫性を大きく左右します。
デコーディング戦略は大きく「決定論的手法」と「確率的手法」に分類されます。
| 手法 | 多様性 | 品質 | 速度 | 主な用途 | パラメータ |
|---|---|---|---|---|---|
| Greedy | なし | 中 | 最速 |
| 翻訳・要約・コード生成 |
| なし |
| Beam Search (k=4) | 低 | 高 | 遅い(k倍) | 機械翻訳・音声認識 | beam_width=4〜8 |
| Top-k (k=50) | 中 | 中〜高 | 速い | 汎用テキスト生成 | k=40〜100 |
| Top-p (p=0.9) | 中〜高 | 高 | 速い | 創作・対話 | p=0.8〜0.95 |
| Temperature (τ=0.7) | 調整可 | 調整可 | 速い | 全般 | τ=0.1〜2.0 |
| Min-p (p=0.05) | 高 | 高 | 速い | 創作・ロールプレイ | min_p=0.02〜0.1 |
| Mirostat (τ=5.0) | 自動調整 | 高 | やや遅い | 長文生成 | target_perplexity=3〜8 |
実際のLLM APIでは Temperature と Top-p を組み合わせて使用するのが一般的です。
2024〜2026年に急速に普及した高速化技術です。小型のドラフトモデルが候補トークン列を先行生成し、大型の検証モデルが一括で承認・却下します。
JSON・XML・SQL など特定フォーマットに準拠した出力を保証する制約付きデコーディングです。
from vllm import SamplingParams
params = SamplingParams(
temperature=0.7,
top_p=0.9,
top_k=50,
max_tokens=2048,
repetition_penalty=1.1,
min_p=0.05
)
./llama-cli -m model.gguf \
--temp 0.7 \
--top-p 0.9 \
--top-k 40 \
--min-p 0.05 \
--mirostat 2 \
--mirostat-tau 5.0
Q1: Temperature を 0 に設定すれば毎回同じ出力になりますか? A: 理論上は決定論的になりますが、GPU の浮動小数点演算の非決定性やバッチサイズの違いにより、完全に同一の出力が保証されるわけではありません。OpenAI API では seed パラメータを併用することで再現性を高められます。
Q2: Top-k と Top-p はどちらを使うべきですか? A: Top-p(Nucleus Sampling)が一般的に推奨されます。Top-k は語彙の確率分布の形状に関係なく固定数のトークンを残すため、分布が平坦な場合に品質が低下しやすい問題があります。Top-p は分布の形状に適応するため、より安定した生成品質を実現できます。
Q3: Speculative Decoding を使うと生成品質は変わりますか? A: 品質は変わりません。Speculative Decoding は数学的に元のモデルと同一の出力分布を保証する手法です。ドラフトモデルの候補が検証モデルに却下された場合は通常のデコーディングにフォールバックするため、最終出力の品質は検証モデル単体と同等です。速度のみが向上します。
Q4: Repetition Penalty はどのように機能しますか? A: 過去に生成されたトークンの確率を減衰させることで繰り返しを抑制します。一般的な設定値は 1.0〜1.3 で、1.0 はペナルティなし、1.1〜1.2 が推奨範囲です。値が大きすぎると不自然な語彙選択になります。