GPT-4 の出力がなぜそれほどランダムなのか、深く考えたことはありますか?

GPT-4 の出力がなぜそれほどランダムなのか、深く考えたことはありますか?

今年はAI分野で大規模言語モデル(LLM)が注目され、OpenAIのChatGPTやGPT-4が大人気となりました。 GPT-4 は、自然言語の理解と生成、論理的推論、コード生成などにおいて、優れた驚くべきパフォーマンスを発揮します。

しかし、GPT-4 によって生成された結果には大きな不確実性があることが徐々にわかってきました。 GPT-4 は、ユーザーが入力した質問に対してランダムな回答を返すことがよくあります。

大規模モデルには温度パラメータがあり、生成される結果の多様性とランダム性を制御するために使用されることが分かっています。温度を 0 に設定すると貪欲サンプリングとなり、モデルによって生成された結果は決定論的になります。ただし、温度 = 0.0 の場合でも、GPT-4 によって生成された結果はランダムです。

開発者の円卓会議で、誰かが OpenAI の技術スタッフに直接この質問をしたところ、次のような答えが返ってきました。「正直に言うと、私たちも困惑しています。システムに何らかのエラーがあるか、最適化された浮動小数点計算に不確実性があるのではないかと考えています…」

注目すべきは、2021年にはすでに、一部のネットユーザーがOpenAI Codexについてこの疑問を提起していたことだ。つまり、このランダム性にはより深い理由がある可能性があるということです。

画像ソース: https://community.openai.com/t/a-question-on-determinism/8185

現在、Sherman Chann という開発者が個人ブログでこの問題を詳細に分析し、「GPT-4 の生成結果の不確実性は、スパース MoE によって引き起こされる」と述べています。

シャーマン・チャンのブログアドレス: https://152334h.github.io/blog/non-determinism-in-gpt-4/

Sherman Chann このブログ投稿は、Google DeepMind の最近のソフト MoE に関する論文「From Sparse to Soft Mixtures of Experts」に触発されました。


論文アドレス: https://arxiv.org/pdf/2308.00951.pdf

Soft MoE 論文のセクション 2.2 には、次のような説明があります。

容量の制約下では、すべてのスパース MoE はトークンを固定サイズのグループにルーティングし、グループ内のバランスを強制 (または推奨) します。グループに異なるシーケンスまたは入力からのトークンが含まれている場合、通常、これらのトークンはエキスパート バッファー内の使用可能な位置をめぐって互いに競合します。その結果、一部の入力シーケンスが他の入力の最終予測に影響を与える可能性があるため、モデルはシーケンス レベルでは決定論的ではなく、バッチ レベルでのみ決定論的になります。

以前は、GPT-4 を専門家混合 (MoE) モデルと呼ぶ人もいました。シャーマン・チャンはこれに基づいて次のような仮説を立てました。

GPT-4 API は、バッチ推論を実行するバックエンドでホストされます。一部のランダム性は他の要因によるものである可能性がありますが、API の不確実性の大部分は、スパース MoE アーキテクチャが各シーケンスの決定論を強制できないことに起因しています。

つまり、シャーマン・チャンは、「スパース MoE モデルにおけるバッチ推論が、GPT-4 API における不確実性のほとんどの根本原因である」という仮説を立てています。この仮説を検証するために、Sherman Chann は GPT-4 を使用してコード スクリプトを作成しました。

 import os import json import tqdm import openai from time import sleep from pathlib import Path chat_models = ["gpt-4", "gpt-3.5-turbo"] message_history = [ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "Write a unique, surprising, extremely randomized story with highly unpredictable changes of events."} ] completion_models = ["text-davinci-003", "text-davinci-001", "davinci-instruct-beta", "davinci"] prompt = "[System: You are a helpful assistant]\n\nUser: Write a unique, surprising, extremely randomized story with highly unpredictable changes of events.\n\nAI:" results = [] import time class TimeIt: def __init__(self, name): self.name = name def __enter__(self): self.start = time.time() def __exit__(self, *args): print(f"{self.name} took {time.time() - self.start} seconds") C = 30 # number of completions to make per model N = 128 # max_tokens # Testing chat models for model in chat_models: sequences = set() errors = 0 # although I track errors, at no point were any errors ever emitted with TimeIt(model): for _ in range(C): try: completion = openai.ChatCompletion.create( model=model, messages=message_history, max_tokens=N, temperature=0, logit_bias={"100257": -100.0}, # this doesn't really do anything, because chat models don't do <|endoftext|> much ) sequences.add(completion.choices[0].message['content']) sleep(1) # cheaply avoid rate limiting except Exception as e: print('something went wrong for', model, e) errors += 1 print(f"\nModel {model} created {len(sequences)} ({errors=}) unique sequences:") print(json.dumps(list(sequences))) results.append((len(sequences), model)) # Testing completion models for model in completion_models: sequences = set() errors = 0 with TimeIt(model): for _ in range(C): try: completion = openai.Completion.create( model=model, prompt=prompt, max_tokens=N, temperature=0, logit_bias = {"50256": -100.0}, # prevent EOS ) sequences.add(completion.choices[0].text) sleep(1) except Exception as e: print('something went wrong for', model, e) errors += 1 print(f"\nModel {model} created {len(sequences)} ({errors=}) unique sequences:") print(json.dumps(list(sequences))) results.append((len(sequences), model)) # Printing table of results print("\nTable of Results:") print("Num_Sequences\tModel_Name") for num_sequences, model_name in results: print(f"{num_sequences}\t{model_name}")

N=30、max_tokens=128 の場合、結果は次の表のようになります。

Sherman Chann が logit_bias 問題に気付く前は、次の結果が得られました (max_tokens=256)。

実験結果によると、GPT-4 の出力は常に不確実です (一意の完了値が非常に高く、同じ入力に対して GPT-4 によって生成される出力が常に異なることを示しています)。これは、GPT-4 に問題があることをほぼ裏付けています。そして、反復的で無駄なサイクルに陥らない他のすべてのモデルにも、ある程度の不確実性があります。これは、信頼性の低い GPU コンピューティングでも、ある程度のランダム性が生じる可能性があることを示しているようです。

シャーマン・チャン氏は次のように述べた。「不確実性がスパース MoE バッチ推論の固有の特徴であるならば、この事実はそのようなモデルを使用するあらゆる研究にとって明白であるはずです。Google Deepmind の研究チームは明らかにこれを知っていたようで、彼らはこの問題があまりにも些細なものだと考え、論文の中で何気ないコメントとしてそれを書いただけです。」

さらに、シャーマン・チャン氏は、GPT-3.5-Turbo でも MoE が使用される可能性があると推測しました。

ネットユーザーはどう思う?

このブログ投稿が公開された後、開発者たちは GPT-4 出力の不確実性についても議論し始めました。これは「マルチスレッド並列処理」によって発生する可能性があると考える人もいます。

「計算は決定論的ですが、計算を実行する複数のプロセッサ間でクロック周波数の偏差が生じる可能性があります」と言う人もいます。

シャーマン・チャンの仮説を支持する開発者は、「GPT-3.5-Turboは、OpenAIがGPT-4用に構築した小さなテストモデルである可能性がある」と述べた。

別の開発者は次のように分析しています。「Soft MoE の論文によると、スパース MoE は不確実性をもたらすだけでなく、エキスパート モジュールの割り当てをめぐって競合する同時リクエストの数に応じてモデルの応答品質が左右される可能性もあります。」

これについてどう思いますか?

<<:  GitHubが11,000スターを獲得、ソフトウェア開発プロセスをシミュレート、オープンソースフレームワークMetaGPTが爆発的に増加

>>:  MetaGPTが人気に! 2ドルでボスになれる、GitHubには11.2万個のスターがつき、AIエージェント「オールラウンダー」が誕生

ブログ    

推薦する

C# アルゴリズムで実装された文字列反転の簡単な分析

C# を使用して文字列反転アルゴリズムを実装することに関する面接の質問を見てみましょう。文字列反転の...

...

トランスフォーマーに挑むマンバの起源とは?著者の博士論文はSSMの進化の道筋を明らかにしている

大型模型の分野では、トランスフォーマーが全容を一手に引き受けています。しかし、モデルのサイズが拡大し...

テックネオテクノロジーサロ​​ン - 第14号 - アルゴリズムに基づくIT運用・保守の実践と探究

【51CTO.comオリジナル記事】 [51CTO オリジナル記事、パートナーサイトに転載する場合は...

無人運転技術がますます成熟するにつれて、将来も運転免許証を取得する必要があるのでしょうか?それは確かだ

北京や上海などの街では、特別な車をよく見かけます。これらの車は車体の上部と側面に特別な装置が付いてい...

MITは、ニューラルネットワークトレーニングのブラックボックスを自動的に覗くネットワーク解剖フレームワークを提案

MIT の新しいテクノロジーは、視覚データでトレーニングされたニューラル ネットワークの内部の仕組み...

WPS AIは正式に公開され、WPSスマートドキュメントに初めて適用されました。

9月5日、Kingsoft OfficeはWPS AIを正式に公開したと発表しました。AI機能はま...

ボストン・ダイナミクスのロボット犬「スポット」が新たなスキルを獲得:縄跳びや服拾い

海外メディアCNETによると、ボストン・ダイナミクスのロボット犬「スポット」はすでにダンス、鉱山探索...

交換されますか? GPT4コードインタープリター完全自動

こんにちは、みんな。今日は、GPT-4 コード インタープリターがデータ分析、科学研究の描画、機械学...

機械学習を学ぶ必要がない5つの理由

機械学習を学び始めるべきだと言うインフルエンサーが増えています。彼らの言うことを聞くべきでしょうか?...

「宝くじ仮説」の著者による新しいPyTorchライブラリは人気があり、モデルのトレーニングが2〜4倍高速化されます。

さまざまなタスクに人工知能を導入する企業が増えるにつれ、AI モデルのトレーニングはコストがかかり、...

第 4 次小売革命を経て、WOT の 3 人の専門家が真のスマート小売とは何かを語ります。

[51CTO.comよりオリジナル記事] 6月21日、WOT2019グローバル人工知能技術サミット...

外国メディアが報じたところによると、EUはデータプライバシーを弱めるため、エンドツーエンドの暗号化にバックドアを検討している。

インド、米国、英国、オーストラリアに続き、エンドツーエンドの暗号化は欧州連合から厳しい監視を受けてい...

古典的な論文を実装するための60行のコード:ポアソンディスクサンプリングを完了するのに0.7秒、Numpyよりも100倍高速

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...