中級 11 分構成

温度、top-p、top-k: パラメータ

端的な回答

top-p(nucleus sampling)は、確率の高いトークンから順に、累積確率がp(例えば0.9)に達するまでのトークンだけを残します。top-kは、例えば40個という固定数の候補を残します。温度はサンプリングのランダム性を調整し、0に近い場合、モデルはほぼ常に最も確率の高いトークンを選びます。Ollamaは温度0.8、top-k 40、top-p 0.9で開始します。

ローカルモデルの設定で必ず登場する数値が3つあります。温度(temperature)、top-p、top-kです。このガイドでは、それぞれの設定が候補となる単語のリストから何を取り除き、何を動かすのかを、具体的な数値の例とともに説明します。Ollamaとllama.cppのデフォルト値、モデル開発元が公開している推奨設定、そしてその適用方法も紹介します。

著者 Mohamed Meguedmi·更新 2026-09-29·Windows・macOS・Linuxでテスト済み

#Top-p、top-k、温度:定義を1つの表で解説

モデルは単語を生成するたびに、語彙内の各トークンの確率を計算します。その後、サンプリングパラメータによって、どのトークンを選ぶかが決まります。Top-pとTop-kは候補を絞り込み、温度は確率の高いトークンと低いトークンの間の差を調整します。いずれもモデルに知識を追加するものではなく、多様性とリスクだけを調整します。

各パラメータの役割
パラメータ作用する対象低い値値が高い場合Ollama のデフォルト値
temperature出現確率の高いトークンと低いトークンの差より決定性の高い回答多様性が増え、誤りも増える0,8
top_p累積確率によって決まるリストのサイズ短いリスト、保守的な出力候補リストが広くなり、多様性が増す0,9
top_k最大候補数候補は少ない候補が多い40
min_p最大確率を基準とする相対的なしきい値緩やかなフィルタリング強いフィルタリング0.0(無効)
repeat_penalty最近使用されたトークンに対するペナルティ繰り返しが増える繰り返しが減る一方、不自然な出力になるリスクがある1.0(無効)

これらのデフォルト値は、OllamaのModelfileリファレンスに記載されているものです。多くのモデルでは、設定ファイルに独自の値が指定されており、それらがデフォルト値を上書きします。そのため、後述するように、モデルの説明を確認することが重要です。

#LLMが次の単語を選択する仕組みは?

ローカルAIキット

お使いのマシンで、プライベートかつ無料のChatGPTを1時間で構築 — LM Studio、Ollama、Open WebUI、ご自身のドキュメント、クラウド不要。

  • 永久に利用できるオンラインスペース
  • PDF + ファイル
  • 生涯アップデート

モデルは各位置について、語彙全体にわたる確率分布を生成します。常に最も確率の高いトークンを選ぶ方法は「貪欲デコーディング」と呼ばれ、単調で繰り返しの多い文章になり、ときには同じ出力を繰り返すループに陥ります。そのため、サンプリングパラメータで制御しながら、ランダムにトークンを選びます。シード(seed)を固定すると、この選択を再現できます。Ollamaのドキュメントには、同じシードと同じプロンプトを使えば同じ文章が生成されると明記されています。

フィルターの適用順序は重要です。LM Studioなどでも使われているGGUF推論エンジンのllama.cppでは、デフォルトの順序はペナルティ、DRY、top-n sigma、top-k、typical-p、top-p、min-p、XTCで、最後に温度が適用されます。つまり、top-kとtop-pは元の確率に作用し、温度は残った候補からサンプリングするためだけに使われます。多くのチュートリアルでは逆の順序が説明されていますが、実際の順序はエンジンによって異なる場合があり、llama.cppでは--samplersパラメータで設定できます。

i
使う上で何が変わるか
llama.cppでは温度がフィルターの後に適用されるため、温度を上げても、top-kやtop-pですでに除外された不適切なトークンが候補に戻ることはありません。残った候補の間で確率が再配分されるだけです。

#数値を使った例:各設定で何が残るか

次の単語の候補を7つとし、それぞれの確率を0.45、0.25、0.12、0.08、0.05、0.03、0.02とします。この表は説明用の計算例であり、実際のモデルで測定した結果ではありません。

フィルターによって残る候補は?
フィルタールール残る候補カバーされる確率
なしすべての単語7100 %
top_k = 3トップ3382 %
top_p = 0,9累積値が0.90に達した時点で終了します4 (0,45 + 0,25 + 0,12 + 0,08)90 %
top_p = 0.7累計0.70270 %
min_p = 0.1最も確率の高いトークンの確率の10%を超えるトークンを残す。しきい値は0.045595 %

要点は次の通りです。top-k は状況に関係なく常に同じ数の候補を保持しますが、top-p と min-p は適応します。モデルが非常に確信している場合(トークンの確率が 0.95 など)、top-p は候補を 1 つまたは 2 つに絞る可能性があります。一方、10 語の間で迷っている場合は、より多くの候補を保持します。そのため、top-p は top-k よりも好まれることが多いです。

#1. 温度:ランダム性を調整するボタン

サンプリングの前に、モデルのロジットを温度で割ります。温度が低いとトークン間の差が広がり、最も確率の高いトークンが他を圧倒します。温度が高いと差が縮まります。温度が0の場合、モデルは常に最も確率の高いトークンを選び、試行のたびに同じ出力を生成します。この点はllama.cppのドキュメントでも確認されています。

前の例に対する温度の影響(説明用の計算例)
候補元の確率T = 0,5T = 1,5
1er45 %70 %34 %
2e25 %22 %23 %
3e12 %5 %14 %
4e8 %2 %11 %
5e à 7e合計10%1,3 %17,8 %
0 à 0,3
抽出、分類、忠実な要約:毎回同じ回答を期待しています。
0,4 à 0,7
技術文書の作成、翻訳、サポート:内容が逸脱しない範囲で多様性を持たせる。
0,8
Ollama および llama.cpp のデフォルト値:一般的な会話。
1以上
創造性、ブレインストーミング;誤りや逸脱のリスクが高まります。
!
温度0では、コード生成において常に最適とは言えません
パースする必要のある出力(JSON、分類など)には、低めの温度が妥当です。ただし、推論モデルの提供元は、より高い値を推奨することがよくあります。Qwen3.5 のモデル仕様では、推論モードでのコード関連タスクには 0.6、一般的なタスクには 1.0 が示されています。温度を 0 に固定する前に、モデル仕様を確認してください。

#2. Top-p:適応フィルター

Top-p(核サンプリング、nucleus sampling)は、確率の高いトークンから順に、累積確率がpに達するまで候補として残します。0.9なら、確率分布の裾にある10%分を除外し、1.0なら何も除外しません。Ollamaのドキュメントでは、たとえば0.95のように値を高くすると、より変化に富んだ文章になり、0.5のように低くすると、より焦点を絞った保守的な文章になると説明されています。

0,5 à 0,7
非常に保守的:無難な回答になりますが、ときには単調です。
0,9
Ollamaのデフォルト値:多様性を損なわずに、確率分布の裾を切り落とします。
0,95
llama-server のデフォルト値であり、複数のモデルのドキュメントで推奨されている値です。
1,0
フィルターが無効の場合、温度のみが作用します。

#3. Top-k:固定上限

Top-kは、確率が最も高いk個のトークンだけを残します。Ollamaのドキュメントでは、このパラメータを、意味の通らない出力が生成される確率を下げる手段として説明しています。値を高くすると(100)回答はより多様になり、低くすると(10)より保守的になります。デフォルト値はllama.cppと同じ40です。llama.cppでは、0にするとこのパラメータが無効になります。

Top-k、top-p、またはmin-p:どの設定を使うべきか
フィルター利点制限使用タイミング
top_kシンプルで、計算量に上限を設けられる分布の形を考慮しない:モデルの確信度が高いときは候補が多すぎ、迷っているときは少なすぎる緩やかな制限(20〜100)
top_pモデルの確信度に応じて調整分布が平坦な場合、ロングテール部分まで通してしまうことがあります多様性の主な設定
min_p最大の確率を基準とする相対的なしきい値で、temperatureの設定値が高くても安定あまり知られておらず、Ollamaではデフォルトで無効になっていますtop_pの代わりに使い、多くの場合は高めのtemperatureと組み合わせる

「top p vs top k」という検索クエリについては、top-pを主な設定として使い、top-kは安全策として残してください。同じ試行で両方を調整しないでください。そうすると、どちらの設定が違いを生んだのか分からなくなります。

#既定値と開発元の推奨事項

エンジンのデフォルト値は、汎用的な妥協点です。モデルの提供元は、それぞれのモデルに適した値を公開していることが多く、その値はデフォルト値と異なる場合があります。以下はQwen3.5のモデルカードが同モデル群に推奨する設定です。Ollamaのデフォルト値(温度0.8、top-p 0.9、top-k 40)と比較してください。

Hugging Face における Qwen3.5-9B のモデルページで推奨される設定
モード温度top_ptop_kpresence_penalty
論理的推論、一般的なタスク1,00,95201,5
論理的推論と正確なコード生成0,60,95200,0
思考なし、一般的なタスク0,70,8201,5

これらの値は、このモデルファミリーに適用されるもので、すべてのモデルに当てはまるわけではありません。他の開発元のモデルカードには異なる値が記載されています。Hugging FaceのモデルカードやOllamaライブラリのモデルページで、推奨サンプリングパラメータに関するセクションを探してください。Qwenのモデルカードにも、これらのパラメータへの対応は推論エンジンによって異なると明記されています。

#ペナルティ:繰り返し、出現頻度、出現の有無

ローカルモデル、特に小型のものや強く量子化されたものは、同じ文を繰り返すことがあります。ペナルティが対策になりますが、その欠点はあまり知られていません。Ollamaではrepeat_penaltyのデフォルト値は1.0で、無効になっています。ドキュメントでは、より強いペナルティを与える値の例として1.5が示されています。よく挙げられる1.1は、自分で選んで設定する値であり、デフォルト値ではありません。

repeat_penalty
最近出現したトークンにペナルティを適用します。repeat_last_n(デフォルトは64)で、参照する範囲を設定します。
frequency_penalty
出現回数に比例するペナルティ。長い生成に向いています。
presence_penalty
トークンが出現した時点でペナルティが適用され、より多様な語彙を促進します。Qwen は複数のモードで 1.5 を推奨しており、値が高すぎると言語の混在リスクがあります。
→
ペナルティを少しずつ上げる
強いペナルティは、モデルが珍しい単語や意外な単語を選ぶように促します。repeat_penaltyは0.05〜0.1ずつ段階的に上げ、繰り返しがなくなった時点で上げるのをやめてください。

#Ollama にこれらの設定を適用する

方法は2つあります。名前を付けたモデルの設定値を固定する Modelfile を使う方法と、Modelfile と同じパラメータを指定できる API リクエストの options フィールドを使う方法です。Modelfile は日常的な利用に、API はプログラムからの利用に適しています。

Modelfile:カスタムモデル
FROM llama3.2
PARAMETER temperature 0.3
PARAMETER top_p 0.9
PARAMETER top_k 40
このモデルを作成して起動する
ollama create llama-precis -f ./Modelfile
ollama run llama-precis
API リクエストで同じ設定を指定する例
curl http://localhost:11434/api/generate -d '{"model":"llama3.2","prompt":"Résume en une phrase : ...","stream":false,"options":{"temperature":0.3,"top_p":0.9}}'

Modelfile(システムプロンプト、コンテキスト、テンプレート)の詳細については、カスタマイズガイドを参照してください。LM Studio と Jan では、同じパラメータをモデルの設定パネルで調整できます。

#推論モデル:すべてを温度だけで調整しない

推論モデルは、回答を出す前にまず思考の過程を生成します。Ollama では、これらのモデルは思考用の独立したフィールドを公開しており、利用できるコマンドはモデルによって異なります。ドキュメントでは、指定可能な値とデフォルト値を確認するために show API に問い合わせることを勧めています。例えば gpt-oss のレベルは low、medium、high で、デフォルトは medium です。

単純な質問に対して無駄なリトライを減らすには、まず存在する思考レベルを調整すべきです。温度はモデルのドキュメントに従って設定すべきで、思考が極端に冷たいと停止し、極端に熱いと散漫になる可能性があります。

#用途別の初期プリセット

調整の出発点となる設定値(モデル固有の推奨設定がある場合を除く)
用途温度top_pその他の設定
抽出、分類、JSON0 à 0,20,9プロンプトで厳密な形式を指定
忠実な要約0,2 à 0,30,9repeat_penaltyはわずかに1を上回る
一般的な会話0,7 à 0,80,9エンジンのデフォルト設定
執筆、アイデアの生成0,8 à 1,00,95presence_penaltyを中程度に設定
フィクション、創造性1,00,95話の脱線を抑える

これらのプリセットは出発点であり、測定値ではありません。一度に1つのパラメータを変更し、同じプロンプトを3回実行して比較してください。多様性を期待しているのに3回の試行で同じ回答が得られる場合は、温度が低すぎるか、シードが固定されています。

#症状と試してみるべき設定

モデルが同じフレーズを繰り返します
repeat_penaltyを1.1前後に設定するか、presence_penaltyを有効にするか、num_predictで生成を短くしてください。
単調でありきたりな回答
温度を1段階上げます(0.7から0.9へ)、またはtop_pを緩めます。
モデルは事実を創作します
温度を下げてください。ただし、それだけでは不十分です。ハルシネーションに関するガイドを参照してください。
JSONが破損している
temperatureを低く設定し、出力形式を明示的に指定してください。Ollamaの構造化出力モードが利用できる場合は、それを使ってください。
言語の混在または不自然な語彙
presence_penaltyまたはrepeat_penaltyを下げたり、モデルの量子化をわずかに上げたりしてください。
top-p、top-k、温度パラメータに関するよくある質問
LLMにおけるtop-pとは何ですか?+
top-pは、確率の高いトークンから順に、確率の合計が閾値p(例えば0.9)に達するまでのトークンだけを残すフィルターです。それ以外はサンプリング前に除外されます。top-kとは異なり、候補数は変動します。モデルの確信度が高ければ少なく、迷っていれば多くなります。
top-pとtop-kの違いは何ですか?+
top-kは、状況にかかわらず、たとえば40個のように常に一定数の候補を残します。top-pは累積確率に応じて候補数が変わります。そのため、top-pはモデルの確信度によりよく適応し、top-kは確率が極めて低いトークンを除外するための単純な歯止めとして機能します。
温度とtop-pを同時に調整する必要がありますか?+
効果を理解するために、一度に一つのパラメータのみを変更することをお勧めします。実際には、top-pとtop-kはデフォルト値またはモデルの仕様書の値に設定し、温度を調整してください。複数の設定を同時に変更すると、どの変更が違いを生んだのか判断できなくなります。
コード用の温度は?+
推論機能のないモデルでは、低い値(0〜0.2)にすると再現性のある出力が得られます。推論機能のあるモデルでは、開発元のモデルカードに従ってください。Qwen3.5のモデルカードでは、推論モードで正確なコードを生成する場合は0.6を推奨しています。ご自身のケースで試し、コードがコンパイルできるか、テストに合格するかを確認してください。
Ollama でのデフォルト値は?+
Modelfileのドキュメントでは、温度が0.8、top-kが40、top-pが0.9、min-pが0.0(無効)、繰り返しペナルティが1.0(無効)と記載されています。モデルに独自の値が組み込まれていて、これらの値を上書きする場合があります。ollama show --modelfile でその値を確認できます。
min-p とは何ですか?使うべきですか?+
min-pは、最も確率の高い候補の確率に一定の割合を掛けた値よりも、確率が低いトークンを候補から除外します。min-pが0.05で、最も確率の高いトークンの確率が0.9なら、しきい値は0.045です。top-pの代替であり、Ollamaではデフォルトで無効になっています。モデルカードで推奨されている場合にのみ使用してください。
このガイドは役に立ちましたか?

ご意見、誤りのご指摘、補足はありますか?ぜひお知らせください。皆さんにとってより良いガイドにするために役立ちます。