Compound AI Systems
Compound AIシステムがモデル、ツール、データ、ルールを組み合わせる仕組みを学びます。信頼性の高いAIワークフローのためのアーキテクチャ、アプリケーション、トレードオフ、ベストプラクティスを探ります。
複合AIシステムは、単一のモデルではなく、相互に作用する複数のコンポーネントから構築されたAIアプリケーションです。1つのシステムで、モデル、検索サービス、データベース、決定論的ルール、外部ツール、人によるレビューを組み合わせ、1つの調整されたワークフローに統合する場合があります。たとえばコンピュータビジョンでは、1つのモデルが物体を検出し、トラッキングソフトウェアがIDを維持し、ビジネスルールがイベントを解釈し、監視サービスが本番環境のパフォーマンスを監視する構成が考えられます。複合AIシステムの特徴は構成にあります。つまり、各部分が情報を交換し、意思決定する方法によって、システムレベルの動作が生まれます。
複合AIシステムの仕組み#
複合システムは、大きなタスクを専門化された段階に分割します。一般的なコンポーネントには、データ前処理、1つ以上のAIモデル、ストレージ、検証ロジック、API、オーケストレーション層などがあります。OpenAPI Specificationで定義されているような明確なコントラクトによって、各サービスが受け入れ、返すデータを定義します。
制御は、従来のコードが固定された順序でコンポーネントを呼び出す決定論的な方式にも、AIエージェントオーケストレーション層が実行時にツールや経路を選択する動的な方式にもできます。AIオーケストレーションは、アプリケーション全体の依存関係、リトライ、リソース、データフローを調整します。
一般的なパターンには、検索によって言語モデルにコンテキストを提供する検索拡張生成や、カメラ、レーダーなどの入力を組み合わせるセンサーフュージョンパイプラインがあります。孤立したモデルから統合システムへと移行する、より広範な変化については、複合AIシステムに関するBerkeley AI Researchの概要で説明されています。(bair.berkeley.edu)
複合システムが重要な理由#
構成によって、開発者は1つの巨大なモデルを再トレーニングすることなく、アプリケーションを改善できます。専門化されたコンポーネントを交換、スケーリング、最適化しても、ワークフローの残りの部分は安定したままにできます。ルールと検証段階によって、確率的なモデル出力だけに依存する場合よりも高い制御性を確保することもできます。
これらの利点には、システムレベルのトレードオフも伴います。
- 障害の伝播: 検出の誤り、検索の失敗、または利用できないAPIによって、下流のすべての意思決定が影響を受ける可能性があります。
- レイテンシとコスト: 各モデル呼び出し、ネットワークリクエスト、検証段階が、応答全体に割り当てられた予算の一部を消費します。
- インターフェースの乖離: 1つのサービスを更新すると、その出力形式や前提条件が変わり、別のコンポーネントが気付かないまま動作しなくなる可能性があります。
- 評価の難しさ: あるコンポーネントの性能が高くても、エンドツーエンドの結果が優れているとは限りません。
そのため、機械学習オペレーションはワークフロー全体を対象にする必要があります。OpenTelemetryのオブザーバビリティガイダンスでは、トレース、メトリクス、ログによって分散サービス全体で何が起きたかを明らかにする方法が説明されています。また、MLflowの実験トラッキングでは、モデル設定と評価結果を記録できます。(opentelemetry.io)
関連概念と主な違い#
複合AIシステムは、単に複雑なモデルを別の名前で呼んだものではありません。
モデルアンサンブルは、投票、平均化、スタッキングなどによって、複数のモデルの予測を組み合わせます。アンサンブルは複合システム内の1つのコンポーネントになれますが、通常はデータベース、ツール、ワークフローロジック、運用サービスを備えていません。
エージェント型ワークフローでは、モデルが自律的にアクションやツールを選択できます。複合システムはより広い概念であり、自律型エージェントを使用せず、固定パイプライン、イベント駆動型サービス、人による承認を利用するものも数多くあります。
同様に、RAGは検索と生成を組み合わせる特定の複合パターンです。複合AIは、言語モデルを使用せずに、コンピュータビジョン、予測、最適化、ロボティクス、従来型ソフトウェアを調整することもできます。
実世界での利用例#
-
製造業の外観検査: カメラが製品を撮影し、Ultralytics YOLO26モデルが欠陥を検出し、ルールベースのロジックが重大度と位置を確認し、生産システムが各製品を不合格または合格にします。不確実なケースは人の検査員に振り分けることができ、保存された画像は後の再トレーニングに役立ちます。
-
交通・駐車場分析: 検出によって車両を特定し、マルチオブジェクトトラッキングによってフレーム間のIDを維持し、幾何学的ロジックによって車線または駐車領域の占有状況を判定し、ダッシュボードが件数とアラートを集計します。エラーによって、重複カウント、渋滞イベントの見逃し、空き状況の誤った推定が発生する可能性があるため、すべての段階を連携させてテストする必要があります。
次の簡略化した例は、認識結果を決定論的な意思決定ロジックに渡す方法を示しています。
from ultralytics import YOLO
# Perception component
model = YOLO("yolo26n.pt")
results = model("https://ultralytics.com/images/bus.jpg")
result = results[0]
# Policy component
person_class = next(i for i, name in result.names.items() if name == "person")
person_count = int((result.boxes.cls == person_class).sum())
decision = "review" if person_count >= 4 else "continue"
print({"people_detected": person_count, "next_step": decision})
result.save(filename="compound_system_input.jpg")ここでは、YOLOが構造化された観測結果を生成し、独立したポリシーロジックが次のアクションを決定します。本番システムでは、ストレージ、通知、アクセス制御、人によるレビューなどを追加できます。
実践的な設計ガイダンス#
測定可能なエンドツーエンドの目標から始め、各コンポーネントに明確な責任を1つずつ割り当てます。すべての境界でスキーマとタイムアウトを定義し、コンポーネントを個別にテストするとともに、モデル精度だけでなく現実的なワークフローを評価します。
トレースを使用して個々のリクエストを追跡し、レイテンシとコストの予算を設定し、利用できないサービスに備えてリトライや安全なフォールバックを用意します。Kubernetesのヘルスプローブは、デプロイされたサービスがレディネスとライブネスのシグナルを公開する方法の一例です。
リスク管理では、データアクセス、外部ツール、人による上書き、下流への影響など、システム全体を対象にする必要があります。NIST AI Risk Management Frameworkは、これらのリスクをガバナンス、測定、管理するためのライフサイクル指向のガイダンスを提供します。チームは、より広範な複合アプリケーション内のビジョンコンポーネントについて、Ultralytics Platformを使用して、データセットのアノテーション、トレーニング、デプロイメント、本番監視を接続できます。(nist.gov)









