🎓 レベル:基礎 | 重要度:B(推奨) 📎 前提:OpenAI互換API | 原理:推論の実務(機械学習)
要点(結論先出し)
- 生成は「次トークンの確率分布からどう選ぶか」。**温度(temperature)**で分布の尖り、top-p / top-kで候補の絞り込みを制御する。
- 低温=堅実・再現的、高温=多様・創造的。事実回答やコードは低温、ブレストや創作は高温が目安(要最新確認)。
- これらはモデルを変えずに出力の性格を変えるノブ。原理は機械学習へ、ここはローカルでの設定の置き方に集中。
概念 ── 主要パラメータの役割
- temperature:確率分布の鋭さ。低いほど高確率トークンに集中(決定的)、高いほど平坦(多様)。
- top-p(核サンプリング):累積確率pまでの候補だけから選ぶ。動的に候補数が変わる。
- top-k:上位k個の候補に限定。固定数で絞る。
- repeat penalty / frequency penalty:同じ語の繰り返しを抑制。ループ防止。
- max tokens:生成の上限。暴走と無駄な計算を止める安全弁。
原理(サンプリングの数理)は機械学習へ → 推論の実務。
仕組み ── 「絞ってから引く」
flowchart LR LOGITS["次トークンの分布"] --> T["temperatureで鋭さ調整"] T --> P["top-p・top-kで候補を絞る"] P --> PEN["繰り返しペナルティを適用"] PEN --> PICK["1トークンをサンプリング"]
温度で分布の形を決め、top-p/top-kで裾を切り、ペナルティでループを防ぎ、最後に1つ引く——この順で出力の性格が決まります。
用途別の目安(要最新確認)
| 用途 | temperature | 補足 |
|---|---|---|
| 事実回答・要約 | 低め(例 0.0〜0.3) | 再現性・正確さ重視 |
| コード生成 | 低め | 構文の安定 |
| 一般対話 | 中(例 0.4〜0.7) | 自然さと安定の両立 |
| 創作・ブレスト | 高め(例 0.8〜1.0+) | 多様性重視 |
top-p は 0.9 前後を起点に、繰り返しが出るなら repeat penalty を少し上げる、が定番(要最新確認)。
運用の勘所
- まず温度だけ動かす。1つずつ変えて効きを見る(同時に全部いじらない)。
- 既定値は Modelfile(Ollama)やサーバ起動オプションに固定しておくと運用が安定 → Ollama
- 同じ出力を再現したいなら低温+シード固定(対応エンジン・要最新確認)。
なぜそうするか
モデルを変えなくても、サンプリングの設定だけで「堅い/柔らかい」を切り替えられる。用途ごとに既定値を決めておけば、毎回同じ品質で回せます。逆に既定のまま使うと、事実回答が無駄に揺れたり創作が単調になったりします。
⚠️ よくある落とし穴
- 全パラメータを同時にいじる:効きが分からなくなる。1つずつ。
- 高温で事実回答:ハルシネーションや揺れが増える。事実系は低温。
- max tokens 未設定:暴走・無限ループで時間とVRAMを浪費。上限を置く。
- 繰り返しをモデルの欠陥と決めつけ:repeat penalty / temperature で改善することが多い。
対応lab
- パラメータ切替は Ollama の lab(Modelfile の
PARAMETER)で実機確認。
関連
- API基本 → OpenAI互換API
- 体感速度 → ストリーミングと並行リクエスト
- 章の入口へ → 第5章 ローカルサービングとAPI 目次