関数を呼び出す

美容とファッションの専門家が関数を呼び出す

Dall-Eを使用して作成した画像

OpenAIの関数呼び出しと解説のベンチマーキング

この記事にご協力いただいたRoger Yangさんに感謝します。

サードパーティの大規模な言語モデル(LLM)の可観察性は、AnthropicのClaude、OpenAIのGPTモデル、GoogleのPaLM 2などのモデルがプロプライエタリであるため、主にベンチマーキングと評価によってアプローチされます。このブログ記事では、GPTモデルを関数呼び出しと解説を使用して、さまざまなパフォーマンスメトリックに対してベンチマークを行います。特に、GPTモデルとOpenAIの機能が幻覚的な応答と関連応答の正しい分類にどのように対応するかに興味があります。以下の結果は、異なるLLMアプリケーションシステムの速度とパフォーマンスのトレードオフ、およびこれらの結果と解説がデータラベリング、LLM支援評価、品質チェックにどのように活用できるかについての議論を示しています。実験フレームワークも以下に提供されているため、実践者はデフォルトの分類テンプレートを反復して改善することができます。

OpenAIの関数呼び出しと解説

OpenAIの関数呼び出しを使用すると、さまざまなGPTモデルに関数を説明することができます。これにより、それらの関数を呼び出すための引数を含むJSONオブジェクトが生成されます。関数呼び出しは、OpenAI GPTモデルの機能と外部ツールやAPIを信頼性を持って接続するためのツールまたはエージェントとして機能します。解説に関しては、LLMが特定の方法で応答する理由を理解するのが難しい場合がありますので、これらはLLMに対して出力が正しいかどうかを正当化するよう促すために設計されています。その後、LLMからの出力に’関連’または’無関係’のラベルとLLMからの解説を付けることができます。以下は、LLMの応答をデバッグするための’関連’の評価の例です。

画像作者によるもの

以下の「結果とトレードオフ」セクションでは、2つのユースケース(関連性の予測と幻覚の予測)の比較表が提供されます(それぞれTable 1およびTable 2です)。各テーブルは、特定のプロンプト指示とLLMの属性に基づくGPT-4-turbo、GPT-4、GPT-3.5、GPT-3.5-turboのパフォーマンスをさまざまな分類メトリック(正答率、適合率、再現率、F1スコア)で比較しています。

次のメトリック(中央処理時間を追加)で4つの基礎モデルが評価されます:

  • 関数呼び出しなし&解説なし
  • 関数呼び出しあり&解説なし
  • 関数呼び出しあり&解説あり
  • 関数呼び出しなし&解説あり

LLMのプロンプトテンプレートはそれぞれ変更されません(つまり、通常のプロンプト補完)。「関数呼び出しなし&解説なし」の例では、LLMにその回答をenumとして入力できるJSONオブジェクトに入れるように依頼します。「関数呼び出し&解説なし」の例では、同じJSONオブジェクト内で答えに加えて、LLMがその解答を解説するように依頼します(Google colabノートブックを参照)。

ベンチマークされたデータセットと評価メトリック

LLMの出力から幻覚的な応答と関連応答を正しく特定することは、現在LLMアプリケーションを実装している顧客の最大の課題の一つです。幻覚の最適化にはすべての幻覚応答の正確な特定と事実に基づいた出力の追跡が含まれます。検索と推奨を利用するユーザーエクスペリエンスの一部としての使用事例では、速度と結果の関連性がユーザー満足度に最も重要な要素です。関連するものと関連しないものに対してLLMシステムのパフォーマンスを評価するために、主要なメトリックについて把握しておく必要があります。

  • 精度と再現率:取得された情報の関連性はどれくらいですか?
  • 正確性:応答は文脈に沿って正確ですか?
  • 遅延時間:システムが応答を提供するまでにかかる時間はどれくらいですか?
  • ユーザーフィードバック:関連性と応答時間がユーザーの体験にどのような影響を与えましたか?

結果とトレードオフ

以下は、関連性のない予測と関連性のある予測のベンチマークにおけるLLMシステムの結果です:

Table 1 by author

以下は、妄想的な予測と事実に基づく予測のベンチマークにおけるLLMシステムの結果です:

Table 2 by author

結果の分析に入る前に、このGoogle colabノートブックで自分自身によってこれらの結果を再現することができます。通常、LLMの非決定論的な性質のため、これらの表の数値を完全に再現することはできませんが、このノートブックではサンプリングにシードが追加されているため、毎回同じ結果になります。また、バイナリのカテゴリが正確に50/50になるように層化サンプリングも追加されています。 ただし、このノートブックをOpenAI APIキーで実行するには計算コストがかかります。デフォルトのサンプル数は2に設定されていますが、このブログ投稿の結果を再現するために数を100に変更することもできます。

VoAGI処理時間

明確さのために、これらの比較(100サンプルを使用)は、Google Colabで標準のOpenAI APIアカウントとキーを使用して実行されました。したがって、異なる環境で実行すると、遅延時間の値は正確ではない可能性がありますが、最も遅いモデルと最も速いモデルは再現されます。

さらに、評価に説明を使用すると、コンパイルには通常、3〜20倍の時間がかかります(これは関数呼び出しに依存しません)。

全体の関連性に対するモデルの予測能力について

  • 遅延時間:GPT-3.5-instruct > GPT-3.5-turbo > GPT-4-turbo > GPT-4

妄想に対するモデルの予測能力について

  • 遅延時間:GPT-3.5-instruct > GPT-3.5-turbo ~ GPT-4-turbo > GPT-4

関数呼び出しを行うGPTモデルは、関数呼び出しを行わないLLMよりもわずかに遅延時間が長くなる傾向がありますが、これにはいくつかの注意点があります。まず、遅延時間は、OpenAIが私たちに返すHTTPヘッダから抽出されます。したがって、アカウントやリクエストを行う方法によっては、遅延時間の値が変動する可能性があります。関数呼び出しのトレードオフは、使用目的によっても異なります。たとえば、関数呼び出しを行わない場合、例と詳細な説明を提供して出力の構造を正確に指定する必要があります。ただし、使用目的が構造化データ抽出である場合、OpenAIの関数呼び出しAPIを直接使用するのが最も簡単です。

全体として、関数呼び出しを行うLLMは、関数呼び出しを使用せずに通常のプロンプト補完を使用するLLMsと同等のパフォーマンスを発揮します。OpenAIの関数呼び出しAPIをプロンプトエンジニアリングの代わりに使用するかどうかは、使用目的と出力の複雑さに依存するべきです。

GPTモデルのパフォーマンス比較

全体の関連性に対するモデルの予測能力について:

  • パフォーマンス:GPT-4 ~ GPT-4-turbo ~ GPT-3.5-turbo >>> GPT-3.5-instruct

幻覚の予測能力において、以下のようにモデルの性能が並びます:

  • 性能:GPT-4 ~ GPT-4-turbo > GPT-3.5-turbo > GPT-3.5-instruct

興味深いことに、両方のユースケースで説明を使っても、性能が常に向上するわけではありません。以下で詳しく説明します。

評価指標

関連性を予測するためにLLMを選ぶ場合、GPT-4、GPT-4-turbo、またはGPT-3.5-turboを使用する必要があります。

GPT-4-turboは出力が関連しているかを正確に識別しますが、50の例をすべて思い出すという点では、実際にはランダムな結果とそれほど変わらないです。説明を使っても再現率は向上しません。

GPT-3.5-turboも同様のトレードオフに苦しんでおり、レイテンシーと正確性が低くなっています。これらの結果から、GPT-4が最も高いF1スコア(適合率と再現率の調和平均)と総合的な最高の性能を持っていることがわかります。また、実行時間はGPT4-turboとほぼ同じです。

GPT-3.5-instructはすべてを関連性のあるものと予測し、したがって関連性を予測するための適切なLLMではありません。興味深いことに、説明を使用すると予測性能が劇的に向上しますが、他のLLMに比べてはまだ性能が劣っています。また、GPT-3.5-instructはOpenAIの関数呼び出しAPIを使用することができず、2024年初頭に廃止される可能性があります

幻覚を予測するためにLLMを選ぶ場合、GPT-4、GPT-4-turbo、またはGPT-3.5-turboを使用する必要があります。

結果は、GPT-4がGPT-4-turboよりもより頻繁に幻想的な出力と事実の出力を正しく識別していることを示しています(精度、正確性、再現率、F1スコアのいずれでも約3%の向上)。

GPT-4とGPT-4-turboの性能は、GPT-3.5-turboよりもわずかに優れています(小さな差がノイズではないかどうかを結論付ける前に、より多くのサンプルが使用されるべきです)。ただし、説明を使用する予定がある場合は、GPT-3.5-turboを使用することも検討に値するかもしれません。

GPT-3.5-turboは、GPT-4およびGPT-4-turboと比較して、幻想的な出力と事実の出力の予測に対する説明が3倍以上高速に返されます。ただし、幻想的な予測が正しく行われた場合のGPT-4モデルの再現率と比較すると、GPT-3.5モデルの再現率は低下しています。

議論と意義

アプリケーションで使用するLLMを選ぶ際には、その決定には一連の実験と反復が必要です。同様に、評価者としてLLMを使用するかどうかを決定する際にも、ベンチマークと実験が必要です。基本モデルの評価(基礎モデルの評価)と可観測性を通じたLLMシステムの評価の2つの主要なベンチマーク方法について、この記事ではまとめて説明しています。

Image by author | Evaluating two different prompt templates on a single foundational model. We are testing the same dataset across the two templates and seeing how their metrics like precision and recall stack up.

最終的には、アプリケーションのパフォーマンス評価におけるLLMの適性を判断する際には、関連性の予測メトリックの性能に加えて、システムのレイテンシーも考慮する必要があります。この記事では、これらのモデルがスピードとパフォーマンスを向上させるための技術の追加なしでパフォーマンスを発揮する方法についてまとめています。これらの数字はベースラインとして機能するため、チームはプロンプトエンジニアリング、プロンプトテンプレート(および保存されたライブラリ)の使用、エージェント、ファインチューニング、RAGやHyDEのような検索と回収アプリケーションといった方法で、LLMシステムの性能を向上させることができます。

潜在的な将来的な課題:データラベリングのための説明

このベンチマークを通じて、説明が提供されることで予測されるラベルが変わるという興味深い例をいくつか見つけました。以下の例では、説明を使用しない場合には「関連性」と予測され、またグラウンドトゥルースでも「関連性」のラベルがあります。さらに、「ゴールデンデータセット」でもラベリングの誤りが発生することがあります(特に主観的なタスクの場合)。そのため、LLM(Language Model)から正当化された説明があれば、グラウンドトゥルースのラベルを編集することができます。これは、LLMによる評価や品質チェックの支援と考えることができます。

以下は、関連性に関するウィキデータセットの例です。列 ‘D’はデータセットによって提供されたグラウンドトゥルースのラベルで、列 ‘E’は関数呼び出しや説明を行わない場合の予測ラベル、列 ‘F’は説明(列 ‘G’)を用いて生成された予測ラベルです。したがって、列 ‘E’ と列 ‘F’& ‘G’ は、2つの別々のLLM呼び出しからの応答です。F&Gは図1からわかるように、同じ呼び出しから生成されました。

Figure 1 (by author): スクリプトのスクリーンショット(colabで提供されるコード)。ここでは、ラベルと説明が一緒に返されますが、説明が最初に提供されるように要求します(プロンプトを参照)。

以下の表は、グラウンドトゥルースのラベルが「関連性」となっている場合に、LLMの呼び出しがない場合には「関連性」と予測されますが、LLMに最初に説明を提供するように要求した場合には「無関係」とラベルが変更された例を示しています。私たちが頻繁にローマ帝国について考えているにも関わらず、「ローマ帝国はどれくらい続いたのか?」という質問に対する複数段落の回答は、要求を満たすために十分に簡潔で関連性があるとは言えません。LLM支援評価では、データラベリングを必要とする企業にとってコストと時間の節約の可能性があります。また、説明が提供する可視性とともに、LLMが予測に使用した参照文書も返されることは、LLMの観測性における主要な進展です。

著者による例

結論

この記事が新しいLLMアプリケーションシステムのパフォーマンスと速度のトレードオフをよりよく理解し、バランスを取るために役立つことを願っています。いつものように、生成AIとLLMOpsの領域は急速に進化しているため、これらの知見や領域が時間とともにどのように変わるかを注視することは興味深いでしょう。

ご質問はありますか?お気軽にお問い合わせください!

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more