機雷がなんだ! 全速前進!

SEというかプログラマというか、日々のエンジニア生活の中で体験したことなどを中心に書き残しています。

生成AIの再現性と冪等性について

前回の記事「生成AIに関するモヤモヤを年内に一旦整理しておく」で生成AIに関するモヤモヤを一旦整理したのですが、一点重要なモヤモヤポイントを含め忘れていました。今さら至極当然のことではあるのですが「生成AIの再現性と冪等性」についての基本的な理解についても一旦整理しておきます。

概要

複数の生成AIに以下の質問をして得られた回答を比較分析しました。

プロンプト1:

一般的に、生成AIに対して全く同じ命令(プロンプト)を与えた場合、全く同じ回答を得ることはできますか?つまり再現性や冪等性は保証されますか?

プロンプト2:

再現性や冪等性を完全に保証する方法はありますか?

結論

(少なくとも現段階においては)一般的な生成AIにおいて、完全な再現性および冪等性は原則として保証されない。 生成AIは統計的な確率に基づいて次の単語を予測する「確率的モデル」であり、計算プロセスに不可避な揺らぎが含まれるためである。

補足

ちなみに、だから生成AIはダメだとか、これじゃ使えないという意味ではありません。 上記の前提や特徴を踏まえた上で、目的や用途に合った使い方をした方が良いという文脈での結論です。

例えば、稼働中の本番環境のソフトウェアやインフラの生成や修正などで冪等性が求められうようなケースには向いてないというだけです。 そもそも、シンプルかつ確実な手順で実現可能ならIaCやコマンドで対応すべきだと思いますし、単に適材適所の手段を選択するというだけです。 生成AIの特性を踏まえて 加速装置 あるいは 増幅器 としてうまくお付き合いする必要がありそうです。

詳細

各種生成AIから得た回答を、ローカルPC上にセットアップしたAIエージェント(Cline + gemini-3-flash-preview)で比較分析しました。

1. 生成AIと使用モデル

AIサービス 使用モデル (自称/推定) 補足
ChatGPT GPT-5.2 GPT-5.2 を基盤とした ChatGPT
Copilot 非公開 モデル詳細は非公開
Gemini 3.0 Gemini 3 Flash 高速モード
Gemini 3.0 (DeepSearch) Gemini 3 Flash 思考モード
Perplexity AI (無料版) Sonar (Llama 3.1 70Bベース) デフォルトモデル+Pro Searchモード

2. 各レポートの主張内容の比較

全てのレポートにおいて、「生成AIにおいて完全な再現性・冪等性は保証されない」という結論で一致しています。 しかし、その根拠や解決策の提示において、各モデルの特色が現れています。

共通の主張

  • 確率的モデル: 次の単語(トークン)を確率分布からサンプリングするため、本質的に変動する。
  • 温度パラメータ (Temperature): 0に設定することで再現性は高まるが、完全ではない。
  • モデル・環境の更新: モデルのアップデートやインフラ環境の変化が影響する。

特徴的な視点・詳細度

  • ChatGPT: 「生成させない設計(分類・選択のみ)」や「人間確定フロー」など、運用・設計面での回避策を具体的に提示している。
  • Gemini (通常/DS): 技術的な深掘りが目立つ。「GPUの非決定性(浮動小数点演算の誤差)」や「MoE (Mixture of Experts)」、「動的バッチ処理」など、インフラ・計算機科学的な要因を詳しく解説している。
  • Perplexity: 検索特化型らしく、複数の外部モデル(GPT-5.2, Claude 4.5等)のリストアップを含め、情報網羅性が高い。また、初回クエリとフォローアップクエリの対話形式で情報を整理している。
  • Copilot: 最も簡潔で要約された内容。基本的な要因と対策を箇条書きで分かりやすくまとめている。

3. 技術的深掘りの比較(再現性が得られない理由)

要因 ChatGPT Copilot Gemini Perplexity
確率的サンプリング
温度(Temperature)
モデルアップデート
並列演算/GPU誤差 - - -
インフラ/環境依存
MoEの影響 - - -

4. 解決策・代替案の比較

解決策 内容 提唱モデル
キャッシュ/保存 一度生成した結果をDB等に保存し、再利用する。 ChatGPT, Gemini, Perplexity
パラメータ調整 Temperature=0, Seed固定。 全モデル
設計による回避 分類・正規化に限定する、人間が承認する。 ChatGPT, Gemini (構造化出力)
環境固定 セルフホスト環境で演算ライブラリまで固定する。 Gemini

以上