AI・機械学習
中級
Dynamic Temperature(ダイナミックテンパレチャー)(ダイナミックテンパレチャー)
LLMデコーディングにおいてトークン確率分布のエントロピーに応じて温度パラメータを動的に調整するサンプリング手法。固定温度より自然で一貫性の高い出力を実現し、llama.cppやLM Studioで実装されるDynatempが代表例。
0 回閲覧
0 いいね
2026/6/7 更新
関連タグ
dynamic-temperature
dynatemp
temperature-sampling
llm-decoding
Dynamic Temperature(Dynatemp)とは
Dynamic Temperature(Dynatemp)はLLMのデコーディングにおいて、固定した温度パラメータの代わりに、各ステップの確率分布の形状に基づいて温度を動的に決定するサンプリング戦略です。
温度パラメータの基本
固定温度の問題
LLMの温度パラメータはlogitsをスケーリングします:
probs = softmax(logits / temperature)
- 温度が低い(例: 0.3): 分布が鋭くなり、最高確率のトークンを選びやすくなる(決定的)
- 温度が高い(例: 1.5): 分布がフラットになり、多様なトークンを選ぶ(ランダム)
固定温度の問題: モデルが確信している文脈でも、確信していない文脈でも同じ温度を適用するため、不自然な出力になりやすい。
動的温度調整の考え方
Dynatempは「確率分布のエントロピー(不確かさ)に合わせて温度を変える」アプローチです:
def compute_dynatemp(logits, temp_min, temp_max, exp=1.0):
probs = softmax(logits)
entropy = -sum(p * log(p) for p in probs if p > 0)
# エントロピーを正規化(0〜1に変換)
max_entropy = log(len(probs)) # 一様分布のエントロピー
normalized_entropy = entropy / max_entropy
# エントロピーに応じて温度を決定
t = temp_min + (temp_max - temp_min) * (normalized_entropy ** exp)
return t
パラメータ
| パラメータ | 説明 | 推奨値 |
|---|---|---|
temp_min / dynatemp_low | 最低温度(確信時) | 0.1〜0.5 |
temp_max / dynatemp_high | 最高温度(不確か時) | 1.0〜2.0 |
dynatemp_range | 温度の変動幅 | 0.3〜0.7 |
dynatemp_exp | エントロピーとの非線形関係 | 1.0(線形) |
llama.cppでの設定
./llama-cli \
--model /path/to/model.gguf \
--temp 0.7 \
--dynatemp-range 0.5 \
--dynatemp-exp 1.0 \
--prompt "Tell me about the history of Japan"
内部的には temp - dynatemp_range/2 〜 temp + dynatemp_range/2 の範囲で動的調整されます。
LM Studioでの設定
LM Studioのパラメータパネルで:
- Temperature: ベース温度
- Dynamic Temperature Range: 変動幅(0.0で無効)
- Dynamic Temperature Exponent: 非線形係数
実際の挙動イメージ
文章: "The capital of France is ___"
→ モデルは「Paris」に高い確信 → 分布が尖る
→ dynatemp: 低温度(0.2)適用 → "Paris"が安定的に選択
文章: "In my opinion, the best color is ___"
→ モデルは多様な選択肢に分散した確信 → 分布がフラット
→ dynatemp: 高温度(1.4)適用 → 多様な色が出力
まとめ
Dynamic Temperatureは固定温度サンプリングの根本的な限界を解決する実用的な手法です。エントロピーベースの動的調整により、事実確認(低温度で安定)と創作(高温度で多様)を同一プロンプト内で自然に切り替えます。llama.cpp/KoboldCPP/LM Studioなどローカル推論環境で実装が進んでおり、2025年時点でのローカルLLM活用で実用的な選択肢です。