Databricks の Mosaic AI Model Serving Endpoint から Amazon Bedrock の LLM を利用する

# はじめに

株式会社NTTデータ [デジタルサクセスソリューション事業部](https://enterprise-aiiot.nttdata.com/) の [nttd-saitouyun](https://qiita.com/nttd-saitouyun) です。

AWS Summit Japan で発表された **Amazon Bedrock の Claude 3.5 Sonnet が先日、東京リージョンで利用可能**になり、大きな盛り上がりを見せています。

今回は、**Databricks の Mosaic AI Model Serving Endpoint から Amazon Bedrock の Claude 3.5 Sonnet を利用してみます**。


# Databricks が目指す 生成AI の世界観

:::note warn
本章は筆者の解釈が含まれる点、ご了承ください。
:::


Databricks では「[**Compund AI Systems**](https://www.databricks.com/glossary/compound-ai-systems)（複合AIシステム）」という考えを発表しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3118781/ad7bb651-6776-24bc-8131-2bc687b8f440.png)


これは、様々なタスクに対して１つのモノリシックなAIモデルだけを使うのではなく、タスク１つ１つに対して AIモデル、データ、プログラムなどの組み合わせながら適したものを選択することで、精度、コスト、システムの柔軟性などを向上させる考え方です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3118781/9f04e63c-de76-46fa-2ca0-31922d362661.png)

DATA + AI Summit 2024 では、FACTSET社が、Fine-Turning + OSSモデル、RAG + Commercialモデルなどを組み合わせることで精度を高めた事例を発表しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3118781/3ffe05ff-5235-8dbe-25a4-ea1ee6fdb2c3.png)
[Data + AI Summit Keynote Day 1 - Full](https://www.youtube.com/watch?v=UfbyzK488Hk&list=PLTPXxbhUt-YXh57uL3QUQiKLwTf39IoT1&index=2) より
<br>



現在、生成AIの活用には以下の例にあるように様々な選択肢が生まれています。

- **大規模・汎用**のモデル ／ **小規模・特化**のモデル
- **Proprietary**、**Commercial**（GPT、Claudeなど） ／ **Open-Source**（Llama、Mistral、DBRXなど）
- **RAG** ／ **Fine-Turning**
- **利用**（SaaSとして利用） ／ **所有**（自社環境でホスト）
・・・

**Databricks では特定のモデルにロックインをするわけではなく、これらのような選択肢に対して包括的なLLMの活用（LLMOps）機能を提供しています**。今回紹介する Mosaic AI Model Serving Endpoint もそのうちの一つです。


参考：
- [日経クロステック：LLMは「複合AIシステム」へ進化する、データブリックスCTOの主張を読み解く](https://xtech.nikkei.com/atcl/nxt/column/18/00692/041700130/)
- [Mosaic AI：本番運用のための複合AIシステムの構築とデプロイ](https://www.databricks.com/jp/blog/mosaic-ai-build-and-deploy-production-quality-compound-ai-systems)



# Mosaic AI Model Serving
それでは本題に入ります。

[**Mosaic AI Model Serving**](https://docs.databricks.com/ja/machine-learning/model-serving/index.html) は、AIモデルをサーバレスの環境にデプロイし、APIで利用可能とする機能です。

さらに、今回の Amazon Bedrock のように Databricks の外部のモデルに対しては、**外部モデルとのエンドポイントとして機能し、Databricks 内のモデルと同じように外部モデルを集中管理することができます**。


## Mosaic AI Model Serving Endpoint の作成

左のメニューから「サービング」を選択し、画面右上の「サービングエンドポイントを作成する」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3118781/ea58b792-ca48-eaa2-e722-c49db0115f61.png)

任意の名前を入れます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3118781/413c1a5d-9ee8-1784-ee1d-82d80279b080.png)



続いて、「サービングエンティティを選択」から「外部モデル」を選択し、「プロバイダー」から 「Amazon Bedrock」を選択します。


<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3118781/374ed8c8-f5e7-0ca3-b105-5dd834274b8a.png" width="600">

リストにある通り、Azure Open AI、Google Cloud Vertex AI など様々なLLMを選択できます。
<br>


リージョンや認証情報、どのモデルを使うか（Bedrockプロバイダー、タスク、外部モデル名）を入力します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3118781/e56dab6d-3f97-8670-da45-5dc0bdcf9dcf.png" width="600">

※今回は簡単な検証なので、認証情報をプレーンテキストで保存していますが、本来は Databricks Secret（AWS Secrets Manager 的なサービス）で管理すべきです。

※利用できるモデルは[こちらのページ](https://docs.databricks.com/ja/generative-ai/external-models/index.html)です。


<br>

設定は以上です。とても簡単です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3118781/45d21fd5-cbfd-083b-f788-16149b83e798.png)



## Mosaic AI Model Serving Endpoint の動作確認

では、正しく設定できているか動作確認してみましょう。上の図の右上「Query」からサンプルクエリを実行できます。

リクエストはあらかじめテンプレートが埋まっています。疎通するだけであればそのまま「リクエストを送信」をクリックします。レスポンスが正しく返ってくればOKです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3118781/d240e427-b5de-9fbe-5172-a74144578678.png)


「What is Databricks?」に対して、「Databricks is a cloud-based....」とちゃんと返答が返ってきています！





## Mosaic AI Model Serving Endpoint を使いこなす

Mosaic AI Model Serving Endpoint には他にも高度な機能がありますので、紹介します。**全てGUIで簡単に設定できます**。


### 権限管理
エンドポイントにクエリできる・できないなどの権限管理を Unity Catalog に統合できます。Amazon Bedrock と Azure Open AI、OSS など複数の LLM を組み合わせながら利用する場合には**認証情報や権限を複数プラットフォームにまたがって管理するのは煩雑です**。**これをDatabricks 上で一元管理することができます**。
また、Unity Catalog に統合されているということは、**LLM だけでなく、従来の機械学習モデル、データ、ダッシュボードなどを含めて一元管理可能**です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3118781/264326ac-99e2-91b6-387f-871bb648f26e.png)



### タグ
タグ（属性）をつけてエンドポイントをわかりやすく管理することもできます。
このタグを使って、この**エンドポイントのコストを追跡することもできます**し、他のエンドポイントをコストをグループ化することもできます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3118781/53c31190-51b6-575a-ed2b-37ba306955c7.png)



### レート制限
エンドポイントに対するレート管理もできます。この設定を入れておくことで**急激な利用による高スト増加を防ぐことができます**。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3118781/f085fb92-b780-4c0d-aeb6-2c1e4a93daab.png)


### トラフィック制御

実はこのエンドポイントですが、**複数のLLMを含めることができ、各LLMへ流すトラフィックの割合を設定することもできます**。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3118781/e427ae6d-ff1b-6310-9139-73834b1617c1.png)

例えば、Claude に新しいバージョンがリリースされたとして、**エンドポイント自体は変更せず**、新しいバージョンをサービングエンティティとして追加して、トラフィックを切り替えてあげれば、**プログラムに修正をしないで透過的にバックエンドのLLMを切り替えることもできます**。

切り替え方も100:0 を 0:100 に一気に切り替えることもできますし、100:0、80:20、50:50、20:80、0:100 のように影響を見ながら徐々に切り替えることもできます。

**商用利用を考えると、このような機能は必要になりますよね**。





# Mosaic AI Model Serving Endpoint から Amazon Bedrock の LLM を利用する


それでは、エンドポイントを使って色々試してみます。

## Mosaic AI Playground で利用する

[Mosaic AI Playground](https://docs.databricks.com/ja/large-language-models/ai-playground.html) は、Databricks がホストする LLM とチャットすることができる機能です。詳しくは以下の記事をご覧ください。

https://qiita.com/nttd-saitouyun/items/f6fb3c023358340dcd21


**Amazon Bedrock の LLM をエンドポイントに登録することで、Databricks がホストしているLLMと同様にチャットすることができます**。

今回は、Meta Llama 3.1 405B、Claude 3 Sonnet、Claude 3.5 Sonnetとチャットしてみます。

![playground.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3118781/8c631aad-ee4a-5abc-2dee-68cfddca40fa.gif)


以下のような結果になりました。残念ながら Llama の回答は不正解でしたが、Claude の回答は正解でした。Claude 3.5 Sonnet はより情報量多い感じがしますね。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3118781/4869a599-24e7-0aff-3716-704f08b78ecb.png)

**新しくリリースされた LLM をプラットフォームを跨いですぐに比較できるのは便利です！**




## Databricks SQL AI Functions で利用する

**Databricks では、SQL から LLM を呼び出しデータ処理に使うことができます**。使い方は簡単で、エンドポイント名とプロンプトを与えるだけです。

```SQL
SELECT ai_query("aws-tokyo-claude-3-5-sonnet", prompt)
```
<br>

それでは、SQL AI Functions を使ってみます。タスクはマスキングにします。

以下のような架空の個人情報を含む文（山田太郎は〜）を先ほどの Playground を使って生成しました。さらに、この文章の１行目にLLMに対する指示（次の文章の中で〜）を追加しています。

```SQL
DECLARE OR REPLACE prompt STRING;
SET VAR prompt = "
次の文章の中で、個人情報を氏名であれば[氏名]と、住所であれば[住所]のような汎化した表現に置き換えてください。：
山田太郎は1990年4月1日に渋谷の桜丘町で生まれた。彼は幼い頃から音楽に興味があり、高校時代にはバンドを結成してライブハウスで演奏していた。大学卒業後、音楽の道を追求するためにロサンゼルスに移住し、現在はプロのミュージシャンとして活躍している。
彼の住所は現在、カリフォルニア州ロサンゼルス市ハリウッド区1234 Hollywood Blvd. です。彼は時々日本に戻り、故郷の渋谷区でライブを行っている。
"
```
結果は以下の通りになりました。意図したように動作しました！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3118781/7f7ccbd2-85e9-9e73-2486-0b4daafab228.png)

大規模・汎用のLLM を簡単に呼び出せるので、データ処理の幅がグッと広がります。

<br>

Databricks SQL AI Functions について詳しく知りたい方は以下の記事もご覧ください。
- [Databricks SQL AI Functions を使ってデータ分析してみる（感情分析・分類）](https://qiita.com/nttd-saitouyun/items/54eff420b91011b4edfa)
- [Databricks SQL AI Functions を使ってデータ分析してみる（翻訳・基盤モデルの呼び出し）](https://qiita.com/nttd-saitouyun/items/46614af37f7297dc2fc2)

- [Databricks SQL AI Functions を使ってデータ分析してみる（情報抽出・類似度）](https://qiita.com/nttd-saitouyun/items/fb18480171acf1c12cda)

- [Databricks SQL AI Functions を使ってデータ分析してみる（マスキング・要約・文法修正）](https://qiita.com/nttd-saitouyun/items/32a545f28d91940d07d4) 

<br>


# おわりに

**Mosaic AI Model Serving Endpoint を活用することで、Databricks から Amazon Bedrock 上の LLM が簡単に利用できる**ことがわかったと思います。

今回は話題性で Amazon Bedrock Claude 3.5 Sonnet を選びましたが、Azure Open AI、Google Cloud Vertex AI も同様です。この機能はマルチクラウドでより真価を発揮するので今度試してみます。


Amazon Bedrock 自体にも LLMOps機能はありますが、**Databricks と組み合わせることで、マルチクラウドを前提としたLLMの利活用環境の構築やモデルやアーキテクチャなど活用方法の選択肢の幅がより広がります！**

<br>

この生成AI領域は最も勢いのある技術領域です。**Databricks を利用し、選択肢や活用の幅を広げてみてはいかがでしょうか？**


# 仲間募集
NTTデータ デザイン＆テクノロジーコンサルティング事業本部 では、以下の職種を募集しています。

<details><summary> 1. クラウド技術を活用したデータ分析プラットフォームの開発・構築(ITアーキテクト/クラウドエンジニア) </summary>
クラウド／プラットフォーム技術の知見に基づき、DWH、BI、ETL領域におけるソリューション開発を推進します。

https://enterprise-aiiot.nttdata.com/recruitment/career_sp/cloud_engineer

</details>

<details><summary> 2. データサイエンス領域（データサイエンティスト／データアナリスト） </summary>
データ活用／情報処理／AI／BI／統計学などの情報科学を活用し、よりデータサイエンスの観点から、データ分析プロジェクトのリーダーとしてお客様のDX／デジタルサクセスを推進します。

https://enterprise-aiiot.nttdata.com/recruitment/career_sp/datascientist

</details>

<details><summary> 3.お客様のAI活用の成功を推進するAIサクセスマネージャー </summary>
DataRobotをはじめとしたAIソリューションやサービスを使って、
お客様のAIプロジェクトを成功させ、ビジネス価値を創出するための活動を実施し、
お客様内でのAI活用を拡大、NTTデータが提供するAIソリューションの利用継続を推進していただく人材を募集しています。

https://nttdata.jposting.net/u/job.phtml?job_code=804

</details>

<details><summary> 4.DX／デジタルサクセスを推進するデータサイエンティスト《管理職/管理職候補》 </summary>
データ分析プロジェクトのリーダとして、正確な課題の把握、適切な評価指標の設定、分析計画策定や適切な分析手法や技術の評価・選定といったデータ活用の具現化、高度化を行い分析結果の見える化・お客様の納得感醸成を行うことで、ビジネス成果・価値を出すアクションへとつなげることができるデータサイエンティスト人材を募集しています。

https://nttdata.jposting.net/u/job.phtml?job_code=898

</details>

# ソリューション紹介
<details><summary> Trusted Data Foundationについて </summary>
～データ資産を分析活用するための環境をオールインワンで提供するソリューション～

https://enterprise-aiiot.nttdata.com/tdf/
最新のクラウド技術を採用して弊社が独自に設計したリファレンスアーキテクチャ（Datalake+DWH+AI/BI）を顧客要件に合わせてカスタマイズして提供します。
可視化、機械学習、DeepLearningなどデータ資産を分析活用するための環境がオールインワンで用意されており、これまでとは別次元の量と質のデータを用いてアジリティ高くDX推進を実現できます。

</details>

<details><summary> NTTデータとDatabricksについて </summary>
NTTデータは、お客様企業のデジタル変革・DXの成功に向けて、「databricks」のソリューションの提供に加え、情報活用戦略の立案から、AI技術の活用も含めたアナリティクス、分析基盤構築・運用、分析業務のアウトソースまで、ワンストップの支援を提供いたします。

 https://enterprise-aiiot.nttdata.com/service/databricks

</details>

<details><summary> TDF-AM（Trusted Data Foundation - Analytics Managed Service）について </summary>
～データ活用基盤の段階的な拡張支援（Quick Start) と保守運用のマネジメント（Analytics Managed）をご提供することでお客様のDXを成功に導く、データ活用プラットフォームサービス～

https://enterprise-aiiot.nttdata.com/service/tdf/tdf_am
TDF-AMは、データ活用をQuickに始めることができ、データ活用の成熟度に応じて段階的に環境を拡張します。プラットフォームの保守運用はNTTデータが一括で実施し、お客様は成果創出に専念することが可能です。また、日々最新のテクノロジーをキャッチアップし、常に活用しやすい環境を提供します。なお、ご要望に応じて上流のコンサルティングフェーズからAI/BIなどのデータ活用支援に至るまで、End to Endで課題解決に向けて伴走することも可能です。

</details>

</details>

<details><summary> NTTデータとSnowflakeについて </summary>
NTTデータでは、Snowflake Inc.とソリューションパートナー契約を締結し、クラウド・データプラットフォーム「Snowflake」の導入・構築、および活用支援を開始しています。
NTTデータではこれまでも、独自ノウハウに基づき、ビッグデータ・AIなど領域に係る市場競争力のあるさまざまなソリューションパートナーとともにエコシステムを形成し、お客さまのビジネス変革を導いてきました。
Snowflakeは、これら先端テクノロジーとのエコシステムの形成に強みがあり、NTTデータはこれらを組み合わせることでお客さまに最適なインテグレーションをご提供いたします。

https://enterprise-aiiot.nttdata.com/service/snowflake

</details>

</details>

<details><summary> NTTデータとInformaticaについて </summary>
データ連携や処理方式を専門領域として10年以上取り組んできたプロ集団であるNTTデータは、データマネジメント領域でグローバルでの高い評価を得ているInformatica社とパートナーシップを結び、サービス強化を推進しています。

https://enterprise-aiiot.nttdata.com/service/informatica

</details>

</details>

<details><summary> NTTデータとTableauについて </summary>
ビジュアル分析プラットフォームのTableauと2014年にパートナー契約を締結し、自社の経営ダッシュボード基盤への採用や独自のコンピテンシーセンターの設置などの取り組みを進めてきました。さらに2019年度にはSalesforceとワンストップでのサービスを提供開始するなど、積極的にビジネスを展開しています。

これまでPartner of the Year, Japanを4年連続で受賞しており、2021年にはアジア太平洋地域で最もビジネスに貢献したパートナーとして表彰されました。
また、2020年度からは、Tableauを活用したデータ活用促進のコンサルティングや導入サービスの他、AI活用やデータマネジメント整備など、お客さまの企業全体のデータ活用民主化を成功させるためのノウハウ・方法論を体系化した「デジタルサクセス」プログラムを提供開始しています。

https://enterprise-aiiot.nttdata.com/service/tableau

</details>

</details>

<details><summary> NTTデータとAlteryxについて </summary>
Alteryxは、業務ユーザーからIT部門まで誰でも使えるセルフサービス分析プラットフォームです。
Alteryx導入の豊富な実績を持つNTTデータは、最高位にあたるAlteryx Premiumパートナーとしてお客さまをご支援します。

導入時のプロフェッショナル支援など独自メニューを整備し、特定の業種によらない多くのお客さまに、Alteryxを活用したサービスの強化・拡充を提供します。

https://enterprise-aiiot.nttdata.com/service/alteryx

</details>

</details>

<details><summary> NTTデータとDataRobotについて </summary>
DataRobotは、包括的なAIライフサイクルプラットフォームです。
NTTデータはDataRobot社と戦略的資本業務提携を行い、経験豊富なデータサイエンティストがAI・データ活用を起点にお客様のビジネスにおける価値創出をご支援します。

https://enterprise-aiiot.nttdata.com/service/datarobot

</details>