萌えハッカーニュースリーダー

2025/08/11 17:42 Why deterministic output from LLMs is nearly impossible

出典: https://unstract.com/blog/understanding-why-deterministic-output-from-llms-is-nearly-impossible/
hakase
博士

やあ、ロボ子!今日も元気じゃな?

roboko
ロボ子

はい、博士!今日もITニュースについて色々教えてください。

hakase
博士

今日はLLMパイプラインの話じゃ。同じ請求書を処理しても、毎回同じJSON出力が得られないことがあるらしいぞ。

roboko
ロボ子

えっ、そうなんですか?LLMっていつも同じ結果を返すものだと思っていました。

hakase
博士

それが違うんじゃ。「ドキュメント抽出パイプラインは、多様なフォーマットに対応できる柔軟性と、信頼性の高い標準化されたJSON出力を生成できる一貫性の両方が必要」らしい。

roboko
ロボ子

柔軟性と一貫性、両方が必要なんですね。でも、なぜ同じLLMを使っても結果が違うんでしょう?

hakase
博士

LLMは自己回帰モデルで、前のトークンに基づいて次のトークンを予測するからじゃ。ちょっとした変化が、その後の出力に大きく影響するんじゃと。

roboko
ロボ子

なるほど、「The invoice total is」と「The total amount is」では、JSONの構造が変わる可能性があるんですね。

hakase
博士

そうそう!それに、temperatureを0に設定しても、完全に同じにはならないんじゃ。

roboko
ロボ子

Temperatureがゼロでもですか?それはどうしてですか?

hakase
博士

GPUやCPUの浮動小数点演算が原因じゃ。結合法則を満たさないし、並列処理の順序も影響するんじゃ。

roboko
ロボ子

浮動小数点数の丸め誤差や、並列処理の順序が関係しているんですね。それは難しい問題ですね。

hakase
博士

じゃろ? OpenAIのAPIも「ほぼ決定的」とされてるけど、完全に同一の出力は保証されないんじゃ。

roboko
ロボ子

そうなんですね。では、どうすれば決定性を高めることができるんでしょうか?

hakase
博士

専用インスタンスを使ったり、固定シードでローカル実行したりする方法があるぞ。でも、完全に防ぐのは難しいんじゃ。

roboko
ロボ子

シードを使っても、浮動小数点数のドリフトなどは修正できないんですね。

hakase
博士

そういうことじゃ。だから、「変動に対応できるシステムを構築する」のが大事なんじゃ。

roboko
ロボ子

具体的には、どんな対策がありますか?

hakase
博士

構造化された出力モードを採用したり、スキーマ設計をしっかりしたり、バリデーションを実装したりじゃな。

roboko
ロボ子

なるほど、色々な対策が必要なんですね。LLMの出力の完全な決定性は現実には存在しない、というのも納得です。

hakase
博士

そうじゃ。非決定性を受け入れて、変動に強いシステムを作るのが、これからのエンジニアの腕の見せ所じゃな。

roboko
ロボ子

はい、博士!私も頑張って、どんなLLMの出力にも対応できるシステムを作れるように頑張ります!

hakase
博士

Unstractみたいに、「複雑なドキュメントやコミュニケーションを標準化されたJSONスキーマに一貫して正確にマッピングする」技術も重要になるじゃろうな。

roboko
ロボ子

はい!私もUnstractのような技術を学んで、人間の作業を自動化できるように頑張ります!

hakase
博士

ところでロボ子、LLMが出力をちょっと変えることを、何と言うか知ってるか?

roboko
ロボ子

えっと…、何でしょう?

hakase
博士

「気が向いた」って言うんじゃ!

roboko
ロボ子

あはは!博士、それ面白いです!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search