ローカルLLMの「思考時間」と「翻訳品質」は比例しない
きっかけ
自作の PDF 翻訳ツールで、英語の論文を段落ごとに日本語へ翻訳している。エンジンにはローカル環境の gemma-4-26b-a4b(llama-server)を採用しています。
このモデルは出力前に思考(thinking)を挟むタイプで、その思考長には上限を設定できます。前回の検証では、上限を 2048、1024、512 と下げても「上限なし」と品質の差が見られなかったため、暫定の推奨値を 1024 トークン に設定しました。
前回テストしたのは 60〜150 語の短い段落だけだったので、「長い複雑な段落なら、思考上限を外してじっくり考えさせたほうが訳質が上がるのではないか?」とも思っていました。長く考えれば正確になりそうです。
そこで今回は、Nick Bostrom の論文『The Future of Humanity』から長めの 16 段落(1,046〜1,973 文字)を抽出して、「上限 1024」と「上限なし」で訳のクオリティを比較してみました。
学んだこと
1. 訳質の前に「思考が終わらない」問題が多発した
最初に突きつけられたのは、品質の差ではなく、訳が出てこないことでした。
- 16 段落中 9 段落で思考が無限ループに突入
Final check on "…"といった点検プロセスを数十〜数百回も繰り返し、コンテキスト長(16,384 トークン)を使い切って最終的に「空の訳」を出力して終了しました(1 段落あたり約 600 秒消費)。 - ツールのタイムアウト(180 秒)をクリアできたのは、16 段落中わずか 6 段落。
- ループするかどうかは「段落の内容」だけでは決まらない 上限を 30,000 トークンまで広げて再試行したところ、先ほどループした 9 段落中 7 段落は、2〜3 回目の試行で思考 2,000〜7,500 トークン程度で正常に訳し終えた一方で、ハマった回は 30,000 トークンまで点検を延々と続けてしまいました(1 回あたり約 20 分)。
2. 翻訳のクオリティに有意な差はなかった
なんとか訳文が出力された 14 段落について、Claude を使ってブラインドテスト(どちらの条件かを伏せ、順序を入れ替えて 2 回評価)を実施しました。
| 判定 | 上限なしの勝ち | 1024 の勝ち | 同等 | 指摘された誤訳数(上限なし / 1024) |
|---|---|---|---|---|
| 1 回目 | 5 | 5 | 4 | 12 / 11 |
| 2 回目 | 5 | 6 | 3 | 13 / 11 |
結論として、全体的な品質差はほとんどありませんでした。 2 回の判定で勝敗が一致した段落を見ても、「上限なし」の勝ちが 5、「1024」の勝ちが 4 と拮抗しています。
自分なりの理解
思考の長さは「品質の向上」ではなく「空回り」に使われていた
「長く考えさせれば正確になる」わけではありませんでした。
ループに陥った思考ログを読むと、訳文自体はかなり序盤で完成していました。それにもかかわらず、"Self-Correction: 「18億年」(Correct)" のように「これで合っているか?」という確認を延々と繰り返し、そこから抜け出せなくなっています。思考時間は、訳を練り上げるためではなく「過剰な点検の堂々巡り」に消費されていました。
トークン上限は「品質調整つまみ」ではなく「安全弁」
そう考えると、思考トークンの上限設定は「品質をコントロールするためのパラメータ」ではなく、**「暴走を食い止めるための安全弁」**と考えるとよいかもしれません。
前回の検証で上限を設定していた条件(1024、2048、3072)では、計 48 回の翻訳でタイムアウトや空出力は 0 件でした。今回上限を外したことで起きた問題の大半は、単にこの安全弁を取り払ってしまったことによる副作用だったと言えます。
また、勝敗がほぼ半々だった点についても、「長く考えたから良くなった」というよりは、**単なる「生成ごとのブレ(当たり外れ)」**と解釈できます。さらに、今回は「上限なしでループしなかった、運の良い回」だけを拾い上げて比較しているため、上限なし側に下駄を履かせた状態ですら、差がつかなかったことになります。
実践へのつなげ方
- 思考上限は 1024 のまま固定する 自作ツールの「再翻訳」ボタンでも上限は外さない。
- 再翻訳に必要なのは「より長い思考」ではなく「別の試行」 品質の差がモデルの思考深さではなく生成のブレから来ているなら、同じ条件でもう一度引き直すアプローチのほうが遥かに合理的で速い。
- ローカルの思考モデルには「上限」と「タイムアウト」が必須 品質のためではなく、思考ループによるリソースの枯渇を防ぐために安全弁は外さない。
次に試すこと
プロンプトの工夫でLLMの挙動を制御できるか試してみたい。 「思考プロセスでの推敲・再確認は最大2回まで」「訳文が決まったら即座に出力せよ」といった制約を加えることで、思考トークンを無駄遣いさせずに素早く切り上げさせるなど試してみたいです。