ローカルAIモデルで安定した結果を得る方法
同じプロンプトが毎回違う形を返すと、ローカルモデルは予測できないように感じます。あるときは箇条書き、あるときは作文、あるときは謝罪に作文が付きます。その大半は設定と、欠けた制約であり、壊れたインストールではありません。要約、抽出、小さなコード作業を、毎日の流れで使えるほど繰り返せるようにできます。
このページは、すでに明確なプロンプトを書いていることを前提にします。文言がまだ緩いなら、先に ローカルAIモデル向けに、より良いプロンプトを書く方法を読んでください。試験に耐える方法は 実際に効くことにまとめてあります。
答えが変わる理由
サンプリングは次のトークンを、いくらかの無作為で選びます。温度(temperature)が高いほど無作為は増えます。長いチャットでは、前のルールが最新の質問から遠くなります。開いたプロンプト(「役立つ何かを書いてください」)には妥当な完成が多く、サンプラーが迷う余地があります。その余地を縮めるとばらつきは減ります。より低い温度、本当の再実行が必要なときのシード(seed)、余地の少ない形式、短いコンテキスト、そして五つの仕事を頼まれていないモデル。
1. プロンプトを書き換える前に温度を下げる
繰り返したい作業では、温度を 0.1 から 0.3 のあいだにします。なぜ変えるか分からなければ、top-p はアプリの既定のままにしてください。それから同じプロンプトを三回実行します。
同じプロンプト、三つの意図:
- 温度 0.9: ルールが3つ、5つ、または4つ出ることがあり、ある実行には親しみやすい前置きが付きます。言い回しが飛び回ります。まだプロンプトを判断しないでください。
- 温度 0.2: ほとんどの実行でルールは4つになるはずです。言い回しは少し変わります。それは普通です。
- 温度 0: 最も再現しやすく、ときには最も無味です。抽出に使ってください。文章なら 0.2 でたいてい足ります。
変えすぎていて、入れ替えを起こす設定はそのままです。プロンプトを固定し、温度を下げ、形式がまだ違うときだけ一行を直してください。
2. プロンプトを比べるときはシードを使う
Ollama、LM Studio、その他いくつかの実行環境ではシードを設定できます。同じモデル、同じプロンプト、同じシード、同じサンプリング設定なら、ほぼ同一で戻るはずです。文言の変更が役立ったかは、そうして分かります。
実務的な比較:
- 温度を 0.2 に、シードを 42 にします。
- プロンプトAの出力を保存します。
- 一行を変えてプロンプトBを作ります。シードはそのままです。
- AとBを比べます。Bが良ければそれを残し、シード 43 で一度試して、形式がまだ保たれるか見ます。
アプリにシードの制御がなければ、ビット単位の反復は得られません。それでも形式と低い温度は要求でき、毎日の使用に必要なのはそれです。シードは試験のためであり、要約を読む利用者のためではありません。
3. 迷いにくい形式にする
形がきついほど、サンプラーにできることは減ります。ラベルは「これを整理してください」より良いです。
モデルがまだ推奨する返信を足すなら、禁止を最後の行に独立させてください。「返信を書かないでください。」最後の行のルールは、真ん中に埋もれたルールより守られることが多いです。
4. 壊れやすい形式には一行の点検を足す
JSON、表、正確な個数に使ってください。普通の散文には使わないでください。
出力を読んでください。「JSON を確認しました」で始まる段落が見えたら、モデルは点検を見せています。「JSON だけを出力してください」を足すか、点検を外してキーの一覧に頼ってください。小さいモデルの一部は、静かな点検ができません。その場合は、キーの一覧だけのプロンプトの方が良いです。
確認するものがありません。硬いメッセージと、ときには品質についての段落が出ます。代わりに語数を上限にしてください。
5. コンテキストを短く保つ
十件前のメッセージのルールは、小さいモデルが落としやすいです。繰り返す仕事では、チャットを続けないでください。新しいセッションを始めるか、最新のメッセージの先頭にルールを再び貼ってください。
安定して残る型:
- ルールのあるシステムメッセージ、または最初のメッセージが一つ。
- 原文のある利用者メッセージが一つ。
- 修正が必要なら、履歴全体ではなく、ルールと前回の出力を含む新しいチャット。
しばしば分かりません。形式を再び貼ってください。「前と同じ」は形式ではありません。
6. モデルの大きさを作業に合わせる
狭いプロンプトの小さいモデルは、雑なプロンプトのより大きい汎用モデルより一貫することが多いです。ただし魔法ではありません。書き換え、抽出、あなたが渡したテキストの短い要約には小さいモデルを使ってください。より長いコードや複数段階の推論が必要なら、より大きいローカルモデルを使ってください。3B モデルに400行のファイルを見直させ、安定した見直しを期待しないでください。
形式が 7B モデルでは保たれ、3B モデルで崩れるなら、プロンプトは残してモデルを替えてください。小さいモデルが埋もれるまでルールを足し続けないでください。
繰り返せるチェックリスト
- 形式をラベル、個数、または JSON のキーとして書いてください。
- 原文はルールのあと、明確なラベルの後ろに置いてください。
- 信頼したいものには温度を 0.2 にしてください。
- 頼んだ答えより少し上に、最大トークンの上限を置いてください。
- 二回実行してください。形が違えば、新しいルールを足す前に最後の行を締めてください。
- 二つの文言を比べているなら、シードを設定してください。
- チャットが長ければ、やり直してルールを再び貼ってください。
一貫性とは言えないこと
- 温度が 0 に近く、プロンプトがとてもきつくない限り、毎回同じ文になることではありません。
- モデルが見られない本当の出典を引用させることではありません。原文を貼ってください。
- 出力を読む必要をなくすことではありません。安定して間違った答えも、間違っています。抽出なら、欄を二つ原文と照合してください。
- 「決して間違えない専門家です」という巨大な前置きを貼っても良くはなりません。その行はサンプリングを変えません。
プロンプトが安定したら保存してください。プロンプト集は、自分のものの隣に置ける出発点です。保存したプロンプトがコンテキストウィンドウに長すぎるか不安なら、大きいファイルを付ける前に トークンカウンターで推定してください。