ゼネラリストからスペシャリストへ: 複合AIに向けたAIシステムの進化

[From Generalists to Specialists: The Evolution of AI Systems toward Compound AI \| Databricks Blog](https://www.databricks.com/blog/generalists-specialists-evolution-ai-systems-toward-compound-ai)の翻訳です。

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

[複合AIシステム](https://www.databricks.com/jp/blog/mosaic-ai-build-and-deploy-production-quality-compound-ai-systems)のバズりは、いい意味で現実のものです。どんなにパワフルであっても単一のAIでは効率的に取り組むことに苦戦する複雑な問題を解決するために、複合AIシステムは、複数のAIモデル、ツール、システムのベストなパーツを組み合わせます。

# 振り返り: モノリシックからマイクロサービスへ

複合AIシステムのマジックに飛び込む前に、アプリケーション開発がどのように進化したのかを少し巻き戻してみましょう。モノリシックアプリケーションの日々を覚えていますか？それらは、フロントエンドのインタラクション、バックエンドの処理、データベースの管理全てを単一のコードベースで取り扱う巨大なオールインワンのソフトウェアシステムでした。それらはパワフルでしたが、自身の欠点を持っていました。

**モノリシックアーキテクチャの課題:**

- **更新の遅さ:** アプリケーションの一部のちょっとした調整にシステム全体の再デプロイを必要としました。
- **スケーリングの問題:** システムのある領域の負荷が高まった際、システム全体をスケールアップしなくてはなりませんでした。
- **単一障害点:** あるコンポーネントがクラッシュしたら、システム全体がダウンします。

これは、大規模なモノリシックアプリケーションを小規模で自己完結型のサービスに分割できるようにした、**マイクロサービスアーキテクチャ**を生み出すことになりました。それぞれのマイクロサービスは、ユーザー認証や在庫管理のような特定のビジネス機能にフォーカスしており、モノリシックシステムでは応えることができなかった柔軟性やスケーラビリティを提供します。

**マイクロサービスの利点:**

- **更新が迅速:** あるマイクロサービスのみを更新、デプロイし、他の部分には触れません。
- **スケーラビリティ:** 需要に応じて個々のサービスをスケールします。
- **障害の分離:** あるサービスがクラッシュしても、他の部分は稼働し続けます。

しかし、マイクロサービスも課題が無いというわけではありませんでした:

- **大きなオーバーヘッド:** 多数のサービスの管理には、多くの調整やインフラストラクチャが必要でした。
- **レーテンシー:** サービス間通信は物事を遅くします。
- **一貫性の問題:** サービス全体でデータを同期し続けることはトリッキーでした。

# AIの世界も同じ方向に向かっています

GPT-4やMeta Llamaのような大規模言語モデルがパワフルなゼネラリストである、AIの世界でも同じ進化を我々は目撃しています。それらは、モノリシックアプリケーションと同じように、さまざまなタスクへの対応に優れていますが、全ての仕事を完璧にこなせるわけではありません。

**複合AIシステム**は、生成AIバージョンのマイクロサービスです。これらのシステムは、AIのタスクを特化されたセグメントに分解します。全てのを行うのに一つの巨大なモデルに依存するのではなく、それぞれが特定のタスクに最適化された複数のモデル、ツール、コンポーネントをデプロイします。

**なぜ、複合AIシステムはそんなにうまくいくのか:**

- **ゼネラリストとスペシャリスト:** 大規模な基盤モデルは広範な洞察をもたらしますが、特化したモデルは医療診断やリアルタイムのサイバーセキュリティ脅威検知のようなニッチのタスクに取り組みます。
- **モジュール性:** 新しいモデルが必要ですか？システム全体を再トレーニングすることなしに入れ替えるだけです。
- **最適化:** モデルやツールをタスクの特定部分にファインチューニングすることができ、システム全体をより効率的、正確にすることができます。

# 複合AIシステムの動作原理

それでは、実際の複合AIシステムとはどのようなものでしょうか？それぞれが特定の領域に秀でており、複雑なタスクを解決するために協力するAIモデルのチームを思い描いてみます:

1. **複数のLLM:** それぞれが特定のタスクや領域に最適化された、さまざまな言語モデルを活用することができます。
1. **外部ツール:** 検索エンジンやAPI、検索システムが補強された情報をAIパイプラインに流し込むことができます。
1. **オーケストレーター:** タスクオーケストレーターは、目の前のタスクに対してそれぞれのモデルやツールをいつどのように使うのかを指示します。

このモジュール化されたアプローチによって、マイクロサービスが従来のアプリケーション開発に革命をもたらしたように、複合AIシステムは、複雑な課題を小規模で管理可能なステップにブレークダウンすることができます。

# Mosaic AI: 複合AIシステムの背後のパワー

この進化をリードしているプラットフォームの一つが、**DatabricksのMosaic AI**です。複数のAIモデル、データ検索システム、外部APIをインテグレーションすることで、プロダクション品質の複合AIシステムを構築するために必要なツールを企業に提供します。

**なぜDatabricks Mosaic AIが突出しているのか:**

- **シームレスなインテグレーション:** 内部のデータソースと外部のツールをセキュアかつ容易に接続し、モデルで取り扱う立地で文脈に基づいたデータを提供します。
- **スケーラビリティ:** Mosaic AIモデルサービングを用いて、需要に基づいて個々のコンポーネントをスケールさせることができます。
- **カスタマイズ性:** 確実により正確な結果にするために、それぞれのコンポーネントをカスタムデータでファインチューンすることができます。

# メンテナンスbotの複合AIシステムの構築

これをより具体的にするために、Databricks Mosaic AIを活用した**メンテナンスbot**を例に挙げてみましょう。このbotは、機械のトラブルシュートのアシスト、修理マニュアルへのアクセス、文脈に基づく洞察を提供するように設計されています。

![](https://www.databricks.com/sites/default/files/inline-images/compound-ai-system-architecture-for-maintenance-bot.png?v=1727817740)

**ステップごとのフローのブレークダウン:**

1. **マニュアルのチャンキングと格納:**
    - マニュアルが小規模なピースに分割され、Databricksのエンべディングモデルを用いてベクトルエンべディングに変換されます。これらのエンべディングは、クイックに取得できるようにベクトル検索インデックスに格納されます。
1. **過去のデータ収集と格納:**
    - システムは、メンテナンスログ、サービスリクエスト、在庫データ、工場の機械からのIoTセンサーのデータを収集します。このデータは、メダリオンアーキテクチャでクレンジング、集計、格納され、補強されたデータは、機械、部品、障害、エラーコードなどのリレーションシップを格納するグラフデータベースに格納されます。
1. **複合AIシステムの構築:**
    - AIが複数のコンポーネントをオーケストレートする**DsPyフレームワーク**を用いて:
        - ユーザーの質問(例:どのようにエラーDF-3466を修復する？)はベクトルのエンべディングに変換され、ベクトルデータベース内部のマニュアルデータで検索が行われます。
        - 同時に、質問はファインチューンされた[text\-to\-cypher Llamaモデル](https://huggingface.co/collections/tomasonjo/llama3-text2cypher-demo-6647a9eae51e5310c9cfddcf)を用いてCipherクエリーに変換されます。Cipherクエリーは、当該のエラーが以前報告されたのかどうか、どのように修復されたのかを確認するためにグラフデータベースにクエリーするために用いられ、文脈に基づく洞察を提供します。
1. **レスポンスの要約:**
    - DsPyフレームワークは、マニュアルからのレスポンスと、グラフデータベースからのレスポンスの両方を組み合わせ、Llama基盤モデルを用いて、ユーザーに対する結果を要約します。
1. **Mosaic AIによるデプロイ:**
    1. 複合AIシステムをオーケストレートする**DsPy**フレームワークは、[**Databricks Model Serving**](https://www.databricks.com/jp/product/model-serving)にデプロイされ、このAIシステムがスケーラブルでセキュアなものになるようにします。[**Mosaic AI Gateway**](https://www.databricks.com/blog/new-updates-mosaic-ai-gateway-bring-security-and-governance-genai-models)は、エンドポイントのアクセスとセキュリティを管理します。
1. **NLPによるFAQ生成:**
    - ユーザーのリクエストおよびレスポンスのログは**Deltaテーブル**に格納されます。NLPを用いて、FAQが特定、ランキングされ、将来的に類似の問題が起きた際にはユーザーに提示されるようになります。

このメンテナンスbotは、複雑なユーザーの問い合わせを効率的かつインテリジェントに解決するために、ベクトルエンべディング、グラフデータベース、LLMのような複数のAIコンポーネントを組み合わせる複合AIシステムな完璧な例と言えます。

# 未来は複合的です

マイクロサービスがアプリケーションの構築方法を変化させたように、複合AIシステムは、AIで複雑な問題を解決する方法を変化させています。特化モデルとツールを組み合わせることで、より柔軟で効率的でパワフルなAIシステムを構築することができます。

そして、[**Databricks Mosaic AI**](https://www.databricks.com/jp/product/machine-learning)のようなプラットフォームを用いることで、企業はこれらのシステムを大規模にデプロイすることができるので、彼らのAIソリューションが最先端であるだけではなく、プロダクションレベルのものにもします。天才的なAIチームを協働させることができるのに、一つの脳に落ち着けますか？AIの未来は複合的であり、まさに今起きていることなのです。

複合AIシステムの詳細については、ブログ記事[The Shift from Models to Compound AI Systems](https://bair.berkeley.edu/blog/2024/02/18/compound-ai-systems/)をご覧ください。

**訳者註:** 翻訳版はこちらです。

https://qiita.com/taka_yayoi/items/287ad22441d6abc7e07e

### はじめてのDatabricks

[はじめてのDatabricks](https://qiita.com/taka_yayoi/items/8dc72d083edb879a5e5d)

### Databricks無料トライアル

[Databricks無料トライアル](https://databricks.com/jp/try-databricks)