[翻訳] The Shift from Models to Compound AI Systems

[The Shift from Models to Compound AI Systems – The Berkeley Artificial Intelligence Research Blog](https://bair.berkeley.edu/blog/2024/02/18/compound-ai-systems/)の翻訳です。タイトルは「モデルから複合AIシステムへのシフト」と訳せるかと思います。

:::note warn
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
:::

プロンプトを与えるだけで、翻訳やコーディングのような一般的なタスクを実行するように指示できる大規模言語モデル(LLM)によって、2023年にAIはいかなる人の注目を浴びるようになりました。これによって、新たなLLMがどのような機能を提供するのかを気にしている全ての人にとって、AIアプリケーションにおける重要な要素としてモデルに対して大きな注目を持つようになることは自然な流れでした。さらに多くの開発者がLLMを用いて構築を始めると、このフォーカスが急速に変化していることに気づきました: **最先端のAIの成果は、単一のモデルからではなく、複数のコンポーネントによる複合システムによって得られています。**

例えば、Googleの[AlphaCode 2](https://storage.googleapis.com/deepmind-media/AlphaCode2/AlphaCode2_Tech_Report.pdf)は、あるタスクに対する100万のソリューションの候補を生成し、セットにフィルタリングするためにLLMを活用する注意深く構築されたシステムを通じて、プログラミングで最先端の結果を示しています。同様に、[AlphaGeometry](https://deepmind.google/discover/blog/alphageometry-an-olympiad-level-ai-system-for-geometry/)では、オリンピック問題を解くために、LLMとい従来の記号的ソルバを組み合わせています。エンタープライズにおいては、Databricksの我々の同僚は、LLMアプリケーションの60%では、何かしら[retrieval\-augmented generation \(RAG\)](https://github.com/)の形態をとっており、30%ではマルチステップのチェーンを使用していることを発見しました。かつては単一LLMの呼び出しから結果をレポートすることに慣れていた、従来の言語モデルタスクに取り組んでいる研究者であっても、さらに複雑な推論戦略から結果をレポートするようになっています: Microsoftは医療試験でGPT-4の精度を8%上回るチェーニングの戦略について[記述](https://www.microsoft.com/en-us/research/blog/the-power-of-prompting/)しており、GoogleのGeminiローンチの記事では、GPT-4の単一の呼び出しに対する比較に関して疑問を呈した、モデルを32回呼び出す新たなCoT@32の推論戦略を用いたGeminiのMMLUベンチマーク結果を計測しています。この複合システムへのシフトは、数多くの興味深い設計上の疑問を生み出しましたが、これは最先端のAIの成果が単にトレーニングをスケールアップするのではなく、スマートなエンジニアリングを通じて達成できることから、エキサイティングのものでもあります。

本記事では、複合AIシステムに向けたトレンドやAI開発者にとって何を意味するのかを分析します。なぜ開発者は複合システムを構築するのでしょうか？このパラダイムはモデルが改善しても残り続けるのでしょうか？そして、そのようなシステムを開発、最適化するために出現しているツール、このような領域はモデルのトレーニングよりもまだ注目されていない領域ですが、それらはどのようなものでしょうか？我々は、**複合AIシステムは将来的にはAIの成果を最大化するためのベストな方法になるだろう**と議論しており、2024年におけるAIのトレンドで最もインパクトのあるものの一つになるかも知れません。
![](https://bair.berkeley.edu/static/blog/compound-ai-systems/compound-ai-systems.png)
*新たなAIの成果は複合システムからもたらされるようになっています。*

 # なぜ複合AIシステムを使うのか？

 我々は、モデルに、リトリーバ、外部ツール対する複数の呼び出しを含む、コンポーネントとの複数のやり取りを行い、AIタスクに取り組むシステムとして複合AIシステムを定義しています。AIモデルはシンプルに、テキストの次のトークンを予測するTransformerのような[統計モデル](https://en.wikipedia.org/wiki/Statistical_model)です。

我々の調査によるとAIモデルは継続的に良くなっていますが、それらのスケーリングについては明確なゴールが見えておらず、最先端の成果は、複合システムから得られるようになってきています。なぜなのでしょうか？我々はいくつかの異なる理由を目撃しています:

1. **いくつかのタスクはシステムデザインを通じた改善が容易になっています。** LLMは多くのアプリケーションにおいて計算資源を増やすほどに優れた成果を達成することを予測できる特筆すべき[スケーリング則](https://arxiv.org/pdf/2001.08361.pdf)に従うようですが、複合システムを構築するよりは低いコスト対リターンとなります。例えば、現行のベストなLLMは現時点のコーディングコンテストの問題の30%を解決することができますが、トレーニングの予算を3倍にしても35%にしか改善しません。以前としてはこれではコーディングコンテストに勝てるほど信頼できるものではありません！一方で、[AlphaCode](https://storage.googleapis.com/deepmind-media/AlphaCode2/AlphaCode2_Tech_Report.pdf)のように、モデルから複数回サンプリングを行い、それぞれのサンプルを検証するようなシステムを構築することで、現行のモデルを用いてパフォーマンスを80%にまで改善できる場合があります。さらに重要なこととして、システムデザインを繰り返すことは、多くの場合トレーニング実行を待つよりも高速です。いかなる高価値アプリケーションにおいて、開発者はAIの品質を最大化するためにいかなるツールでも活用したいと考えると信じており、彼らはスケーリングだけではなく、システムのアイデアも活用すると考えています。我々はこれを、優れたLLMが最初のデモで素晴らしいながらもイライラするほど安定しないものとなるような状況にいるLLMのユーザー、そしてシステム的に品質を改善しようとするエンジニアリングチームを頻繁に目撃しています。
1. **システムは動的な場合があります。** 機械学習モデルは静的なデータセットでトレーニングされていることから、本質的にそれらの「知識」は固定であるという限界があります。このため、開発者は新鮮なデータを組み込むために、検索や取得のような他のコンポーネントとモデルを組み合わせる必要があります。さらに、トレーニングはモデルに全体的なトレーニングセットを「見せる」ので、より複雑な複合システムでは、アクセスコントロールを用いたAIアプリケーションを構築する必要があります(ユーザーがアクセス権を持つファイルのみをベースとしてユーザーの質問に答えるなど)。
1. **システムによってコントロールと信頼の改善が容易になっています。** ニューラルネットワーク自身をコントロールすることは困難です: トレーニングはそれらに影響を与えますが、モデルが特定の挙動を行わないことを保証するのはほぼ不可能です。開発者はモデルではなくAIシステムを用いることで、モデルのアウトプットをフィルタリングするなどして、より厳密に挙動をコントロールする助けとなります。同様に、ベストなLLMは以前として幻覚を見ますが、LLMと取得を組み合わせるなどシステムを結合させることで引用元を提供したり、[自動で事実を検証](https://arxiv.org/pdf/2305.14292.pdf)したりすことで、ユーザーの信頼を高めることができます。
1. **パフォーマンスのゴールは多岐に渡ります。** それぞれのAIモデルには決められた品質レベルとコストがありますが、アプリケーションでは多くの場合においてこれらのパラメータを変更する必要があります。インラインのコード提案のようないくつかのアプリケーションでは、ベストなAIモデルは高価すぎるので、Github Copilotのようなツールでは、結果を提供するために　[注意深くチューニングされた小規模なモデルと様々な検索の経験則](https://thakkarparth007.github.io/copilot-explorer/posts/copilot-internals.html)を活用しています。

また、生成AIにおける複合システムへのシフトは自動運転自動車のような他のAI領域の業界トレンドとマッチしています: 最先端の実装の多くは、複数の特殊なコンポーネントを持つシステムとなっています([こちらで議論が行われています](https://maithraraghu.com/blog/2023/does-one-model-rule-them-all/))。これらの理由から、複合AIシステムはモデルが改善したとしても最先端のパラダイムであり続けると我々は信じています。

# 複合AIシステムの開発

複合AIシステムは、デザインのアート、最適化のような明確なメリットを提供しますが、それらのオペレーションは黎明期といえます。表面上は、AIシステムは従来のソフトウェアとAIモデルの組み合わせですが、数多くの興味深い設計上の疑問が存在しています。例えば、全体的な「制御ロジック」は従来のコード(LLMを呼び出すPythonコードなど)で記述すべきか、AIモデルによってドライブすべきか？また、複合システムにおいて、開発者はどのリソース - 例えば、RAGのパイプライン、LLMあるいはリトリーバのどちらに多くのFLOPSを費やすべきか、あるいはLLMを複数回呼び出すべきか？などです。最後に、メトリックを最大化するためにエンドツーエンドのコンポーネントを持つAIシステムをどのように最適化すべきか？ニューラルネットワークのトレーニングで用いた方法を適用できるのか？このセクションでは、いくつかの例となるAIシステムの詳細を説明し、それらにおける課題と最近の研究を議論します。

## AIシステムのデザインスペース

様々な設計の選択肢を説明するために最近の複合AIシステムのいくつかを以下に示します:

| AIシステム | コンポーネント | デザイン | 成果 |
|:--|:--|:--|:--|
| [AlphaCode 2](https://storage.googleapis.com/deepmind-media/AlphaCode2/AlphaCode2_Tech_Report.pdf)  |プログラムをサンプリング、スコアリングするファインチューンされたLLM、コード実行モジュール、クラスタリングモデル   | コーディング問題に対して100万のソリューションを生成し、フィルタリング、スコアリング  | コーディングコンテストで人間の85%パーセンタいると合致  |
| [AlphaGeometry](https://deepmind.google/discover/blog/alphageometry-an-olympiad-level-ai-system-for-geometry/)  |  ファインチューンされたLLM、記号的数学エンジン | LLMを通じてジオメトリ問題における構造を繰り返し提示し、記号エンジンから導かれた事実をチェック  | 時間制限ありの国際数学オリンピックのテストでシルバーとゴールドの間に  |
| [Medprompt](https://www.microsoft.com/en-us/research/blog/the-power-of-prompting/)  |  GPT-4 LLM、正確な例を持つデータベースにおける最近傍検索、LLMが生成するチェインオブソートの例、複数のサンプルとアンサンブル | Fewショットプロンプトを構成するために類似した例を検索し、それぞれの例にモデルが生成したチェーンオブソートを追加し、最大11のソリューションを生成、判断することで医療の質問に回答  | よりシンプルなプロンプト戦略を用いて、MedPaLMのような専用医療モデル以上のパフォーマンスを実現  |
| [Gemini on MMLU](https://blog.google/technology/ai/google-gemini-ai/#performance)  | Gemini LLM、カスタム推論ロジック  | MMLUベンチマークのためのGeminiのCoT@32は、モデルから得られる32のチェインオブソートをサンプリングし、それらが十分に合意するトップの選択肢を返却、同意しない場合にはチェーンオブソートなしに生成  | GPT-4の5ショットプロンプトがMMLU 86.4%、Geminiの5ショットプロンプトが 83.7%と比較してMMLU 90.04%を達成  |
| [ChatGPT Plus](https://openai.com/chatgpt/pricing)  | LLM、タイムリーにコンテンツを取得するWebブラウザのプラグイン、Pythonを実行するためのコードインタプリタプラグイン、DALL-E画像ジェネレーター  | ChatGPT Plusは質問に回答するためにWebブラウザのようなツールを呼び出し。レスポンスの際にLLMがいつどのようにツールを呼び出すのかを決定。  |  数百万の利用者がいる人気のコンシューマーAI製品 |
| [RAG](https://arxiv.org/pdf/2005.11401.pdf), [ORQA](https://arxiv.org/pdf/1906.00300.pdf), [Bing](https://bing.com/), [Baleen](https://arxiv.org/pdf/2101.00436.pdf)など  |  LLM(複数回呼び出し)、取得システム | 検索クエリーを生成、あるいは現在の文脈で直接検索を行うなど、様々な方法で取得システムとLLMを組み合わせる。  |  検索エンジンやエンタープライズアプリで広く利用される技術 |

## 複合AIシステムでキーとなる課題

設計上、複合AIシステムはAIモデルと比較して新たな最適化やオペレーションの課題を引き起こします。

### デザインスペース

特定のタスクにおいて可能なシステムデザインの範囲は広範なものとなります。例えば、リトリーバや言語モデルを持つシンプルなretrieval-augmented generation (RAG)のケースにおいてさえも: (i) 選択すべき数多くの取得、言語モデル、(ii) クエリー拡張や再ランキングモデルのように取得品質を改善するためのその他のテクニック、(iii) LLMが生成するアウトプットを改善するためのテクニック(アウトプットが取得した文に関連しているかどうかを[チェック](https://arxiv.org/pdf/2305.14292.pdf)するために別のLLMを実行するなど)などが挙げられます。優れたデザインを見つけ出すために、開発者はこの広大な空間を探索しなくてはなりません。

さらに、開発者はシステムコンポーネントにおけるレーテンシー、コストの予算のように限られたリソースを割り当てる必要があります。例えば、100m秒以内にRAGの質問に回答しなくてはならない場合、リトリーバーが20m秒、LLMが80m秒で処理できるように予算を費やすべきか、それ以外の方法を考えるべきでしょうか？

### 最適化

MLでは多くの場合、複合システムの品質を最大化するには、コンポーネントがうまく協働するように、共同の最適化が必要となります。例えば、LLMがユーザーの質問を受け付け、リトリーバに送信する検索クエリーを生成し、解答を生成するシンプルなRAGアプリケーションを考えてみます。理想的には、*特定のリトリーバ*とうまく動作するクエリーを生成するようにLLMがチューニングされ、そのリトリーバは*当該のLLM*とうまく動作する回答になるようにチューニングされることでしょう。

PyTorchなどの単一のモデル開発においては、モデル全体には違いが出るので、ユーザーはエンドツーエンドでモデルを容易に最適化することができます。しかし、新たな複合AIシステムには検索エンジンやコードインタプリタのように違いが出ないコンポーネントが含まれるので、新たな最適化手法が必要となります。これらの複合AIシステムの最適化は、依然として新たな研究領域です。例えば、[DSPy](https://arxiv.org/pdf/2310.03714.pdf)は、事前学習済みのLLMのパイプラインに対する汎用オプティマイザやその他のコンポーネントを提供しますが、[LaMDA](https://arxiv.org/pdf/2201.08239.pdf)、[Toolformer](https://arxiv.org/pdf/2302.04761.pdf)、[AlphaGeometry](https://deepmind.google/discover/blog/alphageometry-an-olympiad-level-ai-system-for-geometry/)のような他のシステムは、これらのツールのモデルを最適化するためにモデルトレーニングの過程でツールの呼び出しを行います。

### オペレーション

機械学習オペレーション(MLOps)は、複合AIシステムにおいてさらに困難なものとなっています。例えば、SPAM分類器のような従来のMLモデルでの成功率の追跡は容易ですが、メッセージを分類するために外部API呼び出しや様々な数の「振り返り」を行うであろう、同じタスク向けのLLMエージェントのパフォーマンスを開発者はどのように追跡、デバッグすべきでしょうか？新世代のMLOpsツールは、これらの問題に取り組むために開発されることになるでしょう。興味深い問題には以下のようなものがあります:

- **モニタリング:** 開発者は複雑なAIシステムをどのようにして効率的にロギング、分析、デバッグトレースを行うことができるのでしょうか？
- **DataOps:** 多くのAIシステムにはベクトルDBのようなデータサービングのコンポーネントが含まれており、それらの挙動はサーブされるデータの品質に依存することになるので、これらのシステムのオペレーションにおけるいかなるフォーカスは、データパイプラインをも対象とすべきです。
- **セキュリティ:** 研究結果によると、コンテンツフィルターを持つLLMチャットbotのような複合AIシステムは、モデル単体と比べて[これまでにないセキュリティリスク](https://arxiv.org/pdf/2309.05610.pdf)を引き起こす可能性があることが示されています。新たなツールはこれらのシステムのセキュリティを保護することが求められます。

## 出現するパラダイム

複合AIシステムを構築する際の課題に取り組むために、様々な新たなアプローチが業界や研究領域で生まれています。これらの課題に取り組むために、最も広く活用されているもののいくつかと、研究から得られた例をハイライトします。

**AIシステムのデザイン: 配合のフレームワークと戦略。** 多くの開発者は、AIモデルやその他のコンポーネントを複数呼び出すアプリケーションを構築可能にする[“言語モデルプログラミング”](https://www.twosigma.com/articles/a-guide-to-large-language-model-abstractions/)を活用するようになっています。これには、開発者が従来のプログラムから呼び出すことができる[LangChain](https://www.langchain.com/)、[LlamaIndex](https://www.llamaindex.ai/)、LLMがアプリケーションを起動できる[AutoGPT](https://autogpt.net/)、[BabyAGI](https://github.com/yoheinakajima/babyagi)、そして、[Guardrails](https://www.guardrailsai.com/)、[Outlines](https://outlines-dev.github.io/outlines/)、[LMQL](https://lmql.ai/)、[SGLang](https://arxiv.org/pdf/2312.07104.pdf)のようにLLMのアウトプットをコントロールするツールが含まれます。これと並行して、研究者は[chain\-of\-thought](https://arxiv.org/pdf/2201.11903.pdf)、[self\-consistency](https://arxiv.org/pdf/2203.11171.pdf)、[WikiChat](https://arxiv.org/pdf/2305.14292.pdf)、[RAG](https://github.com/)などのモデルやツールの呼び出しを用いて、より良いアウトプットを生成する数多くの新たな推論戦略を開発しています。

**品質を自動で最適化: DSPy。** 学術領域からもたらされた[DSPy](https://arxiv.org/pdf/2310.03714.pdf)は、ターゲットのメトリックを最大化するために、LLMやその他のツールから構成されるシステムを最適化することを狙いとした初のフレームワークです。ユーザーはLLMや他のツールの呼び出しを行うアプリケーションを記述し、検証セットに対する精度のようなメトリックを提供すると、DSPyはエンドツーエンドのパフォーマンスを最大化するために、プロンプトの指示、fewショットの例、それぞれのおジュールに対するその他のパラメータの選択肢を生成することで自動でチューニングを行います。効果はDSPyのモジュールが常に違いの出るレイヤーである訳ではにことを除いて、[PyTorch](https://pytorch.org/)におけるマルチレイヤーネットワークの最適化と似たものとなります。これを実行するために、DSPyはクリーンな方法でLLMの言語能力を活用します: それぞれのモジュールを指定するために、ユーザーは`user_question -> search_query`のように自然言語のシグネチャを記述し、ここではインプットの名前とアウトプットのフィールドには意味があり、DSPyは自動でこれを適切なプロンプトと指示、fewショットの例、さらには背後の言語モデルに対する重みの更新処理にも変換します。

**コストの最適化: FrugalGPTとAIゲートウェイ。** 様々なAIモデルやサービスが利用できるようになることで、あるアプリケーションに適切なものを選択することが難しくなっています。さらに、それぞれのモデルは入力が異なると優れたパフォーマンスを示すことがあります。[FrugalGPT](https://arxiv.org/pdf/2305.05176.pdf)は、ターゲットの予算で品質目標を最大化するために、様々なAIモデルのカスケードに入力を自動でルーティングするフレームワークです。小規模な例をベースとすることで、同じコストでベストなLLMサービスよりも最大4%上回り、品質を保ちながらもコストを最大90%削減することができるルーティング戦略を学習します。FrugalGPTは、AIアプリケーションのそれぞれのコンポーネントのパフォーマンスを最適化するために、[Databricks AI Gateway](https://docs.databricks.com/en/generative-ai/external-models/index.html)、[OpenRouter](https://openrouter.ai/)、[Martian](https://withmartian.com/)のようなソフトウェアで実装されているAIゲートウェイ、AIルーターの広く出現しているコンセプトの一例です。これらのシステムは、複合システムでAIタスクがより小さくモジュール化されたステップに分割されることでよりうまく動作し、ゲートウェイはそれぞれのステップの個別のルーティングを最適化することができます。

**オペレーション: LLMOpsとDataOps。** AIアプリケーションでは、モデルのアウトプットとデータパイプラインが信頼性を持って動作していることに対して、常に注意深いモニタリングが必要となります。しかし、複合AIシステムにおいて、それぞれの入力に対するシステムの挙動は非常に複雑なものとなるので、アプリケーションによって実行されるすべてのステップと中間アウトプットを追跡することが重要となります。[LangSmith](https://www.langchain.com/langsmith)、[Phoenix Traces](https://docs.arize.com/phoenix/quickstart/llm-traces)、[Databricks Inference Tables](https://www.databricks.com/blog/announcing-inference-tables-simplified-monitoring-and-diagnostics-ai-models)のようなソフトウェアは、きめ細かい粒度でこれらのアウトプットを追跡、可視化、評価することができ、あるケースにおいてはデータパイプラインの品質や後段のメトリクスと関連づけることができます。研究領域の[DSPy Assertions](https://arxiv.org/pdf/2312.13382.pdf)では、アウトプットを改善するためにAIシステムで直接モニタリングのチェック結果からのフィードバックを活用する方法を模索しており、品質モニタリングを自動化するための[MT\-Bench](https://arxiv.org/pdf/2306.05685.pdf)、[FAVA](https://arxiv.org/pdf/2401.06855.pdf)、[ARES](https://arxiv.org/pdf/2311.09476.pdf)のようなAIベースの品質評価手法も検討されています。

# まとめ

生成AIは、自然言語のプロンプトを通じて様々な能力を解放することで、すべての開発者を興奮させています。開発者はデモの先を目標とし、自分達のAIアプリケーションの品質を最大化しようとしていますが、彼らはLLMの能力をコントロールし、強化するための自然な手段として複合AIシステムに注目し始めています。複合AIシステム開発のベストプラクティスを見つけ出すことは、依然としてオープンクエスチョンとなっていますが、デザイン、エンドツーエンドの最適化、オペレーションの助けとなるエキサイティングなアプローチがすでに存在しています。我々は、複合AIシステムがAIアプリケーションを前進させるために品質や信頼性を最大化するベストな手段であると信じており、2024年における最も重要なトレンドの一つになるかもしれません。