Compound AI Systems
複合AIシステムは、1回のモデル呼び出しではなく、モデル、リトリーバー、ツール、ルールなど、相互に作用する複数のコンポーネントを使ってタスクを解決します。
複合AIシステムとは、単一モデルへの1回の呼び出しではなく、複数のモデル呼び出し、検索システム、外部ツール、ルール、人によるレビューなど、相互に作用する複数のコンポーネントでタスクを解決するアプリケーションです。Matei Zahariaらは、Berkeley、Stanford、Databricksなどの研究者とともに、2024年2月のBerkeley AI Researchの記事でこの傾向を取り上げ、最先端の成果が単一の巨大モデルではなく、システムから得られる例が増えていると論じました。例として、大規模言語モデル(LLM)で最大100万個の候補プログラムを生成してから絞り込み、採点するAlphaCode 2、LLMと記号推論エンジンを組み合わせて数学オリンピックの幾何問題を解くAlphaGeometry、そしてモデルがウェブ閲覧、Pythonの実行、画像生成のタイミングを判断するChatGPTが挙げられています。同記事では、Databricksのデータとして、LLMアプリケーションの60%が何らかの検索拡張生成(RAG)を利用し、30%がマルチステップチェーンを利用していることも紹介されています。
より大きなモデルではなくシステムを構築する理由#
- 低コストで品質を向上: サンプリング、投票、検証を使うと、より大きなモデルをトレーニングするより低コストで精度を高められます。Googleは、32個の思考連鎖の回答をサンプリングし、十分な数の回答が一致した場合に多数派を返すCoT@32を用いたGemini Ultraが、MMLUベンチマークで90.04%を達成したと報告しました。これは、5ショットプロンプティングのGPT-4の86.4%を上回ります。
- 最新データ: モデルが持つ知識はトレーニングのカットオフで止まりますが、検索システムやベクトルデータベースを使うと、クエリ時に新しい情報、非公開情報、アクセス制御された情報を提供できます。
- 制御と信頼性: フィルター、AIガードレール、引用、検証手順を使うと、単一のモデルにプロンプトを与えて従うことを期待するよりも、動作を制約しやすくなります。
- コスト目標: モデルルーティングでは、簡単なリクエストを小型モデルに、難しいリクエストを大型モデルに振り分けます。各アプリケーションは品質、レイテンシ、価格のトレードオフを個別に選択できます。
1つのリクエスト処理経路に、4つすべてのアイデアを組み合わせられます。
コンピュータビジョンにおける複合システム#
本番環境のビジョンアプリケーションは、ほとんどの場合、初めから複合システムです。検出器が物体を検出し、トラッカーがフレーム間で物体を対応付け、幾何学的ルールが位置をイベントに変換し、ストレージとアラートがイベントに応じて動作します。Ultralytics Solutionsは、YOLO26モデルを中心とする複数のシステムをパッケージ化しています。物体カウントでは、検出、マルチオブジェクトトラッキング、線または領域の判定を組み合わせ、トラックIDごとに進入時または退出時の1回だけをカウントします。セキュリティアラームシステムは、画面内の検出数が設定したしきい値に達すると、フレームをメールで送信します。より小規模なパイプラインも同じパターンに従い、モデルが構造化された観測結果を出力し、それを別のロジックが処理します。
from ultralytics import YOLO
# 認識コンポーネント: 検出器がピクセルを構造化された観測結果に変換します
model = YOLO("yolo26n.pt")
results = model("https://ultralytics.com/images/bus.jpg")
detections = results[0].summary()
# ポリシーコンポーネント: 決定論的なルールが信頼度の高い検出を受け入れ、不確かな検出にフラグを付けます
accepted = [d["name"] for d in detections if d["confidence"] >= 0.5]
uncertain = [d["name"] for d in detections if d["confidence"] < 0.5]
# ルーティングコンポーネント: 不確かな結果は後続の自動処理ではなく、人に引き渡します
action = "human review" if uncertain else "auto-approve"
print({"accepted": accepted, "uncertain": uncertain, "action": action})出力される判定は、レビュー担当者がモデルを再トレーニングせずに内容を確認して変更できるルールに基づいています。また、人に回された不確かな画像にラベルを付けると、アクティブラーニングループで次のモデルに使うトレーニングデータを追加できます。
複合システムの構築と運用#
コンポーネントをまたぐとエラーは累積します。各段階が90%の確率で正しくても、3段階を通した結果が正しい確率は約73%にしかならないため、チームは各部分だけでなく、固定されたタスク群でシステム全体を評価します。検索エンジンやルールなど、勾配でトレーニングできないコンポーネントには別の最適化手法が必要です。DSPyなどのフレームワークでは、パイプライン全体の単一指標に基づいて、パイプライン内のすべてのプロンプトを調整します。本番環境では、可観測性のトレースにより、各リクエストをモデル呼び出しやツールのすべてにわたって追跡します。また、バージョン管理やモデル監視などの機械学習運用(MLOps)の実践は、すべてのコンポーネントに適用されます。1つのコンポーネントの更新が、次のコンポーネントへの入力を気付かないうちに変えることがあるためです。
複合AIと関連用語との比較#
- モデルアンサンブル: 同じ入力に対する複数モデルの予測を1つの出力にまとめます。アンサンブルは、複合システムに含められるパターンの1つです。
- エージェント型ワークフロー: モデルが実行時に制御フローを決定し、ツールや手順を選択する複合システムです。多くの複合システムでは、このような判断を伴わない固定パイプラインを使います。
- 専門家混合(MoE): 1つのモデル内で、トークンを専門家サブネットワーク間に振り分けます。各部分は一緒にトレーニングされます。複合システムでは、別々に構築・デプロイされたコンポーネント間でリクエストを振り分けます。










