Model Bulderを使ってSalesforce Data CloudからDatabricksで構築したモデルを呼び出す

株式会社NTTデータ Databricksビジネス推進室の nttd-inoutk です。

2023年9月頃より、DatabricksとSalesforceの両社は、戦略的協業や連携機能に関する多数のアナウンスを実施してきました。

https://www.salesforce.com/news/stories/salesforce-databricks-data-ai-news/

https://www.databricks.com/blog/introducing-salesforce-byom-databricks

CRMソリューションであり、営業・マーケティング・カスタマーサービスなどの様々なデータが格納されるSalesforceと、データの加工や分析、AI活用の優れたプラットフォームであるDatabricksと、その両者を組み合わせて活用することで、インサイトの獲得、業務や顧客に提供するサービスの改善によってより優れた顧客体験に繋がり、企業価値の大幅な向上に貢献できます。
  
今回、本記事を含む3記事にわたってその概要をご紹介します。

[#1  Lakeflow Connectを使ってSalesforce Sales CloudのデータをDatabricksに取り込む](https://qiita.com/nttd-inoutk/items/cf4a7a3f338238879929)
[#2  PythonCDPコネクタを使ってSalesforce Data CloudのデータをDatabricksから参照する](https://qiita.com/nttd-inoutk/items/992fe0e278916d9b0119)
#3  Model Bulderを使ってSalesforce Data CloudからDatabricksで構築したモデルを呼び出す(本記事)


## はじめに
Salesforceでは、AI活用を可能にする機能であるEinstein Studioが提供されています。

https://help.salesforce.com/s/articleView?id=release-notes.rn_cdp_2024_spring_ai_einstein_studio.htm&release=248&type=5

一方で、AI開発のためにはデータサイエンティストが使い慣れた別のプラットフォー厶を活用したい、すでに開発済みのモデルをSalesforceからも利用できるようにしたいというニーズは少なくないと思います。

そのような要望を実現する機能として、SalesforceのModel BulderのBring Your Own Model (BYOM)が存在します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3194680/ef7af724-0e3a-410f-a33c-b8749327f076.png)

https://developer.salesforce.com/blogs/2024/03/use-model-builder-to-integrate-databricks-models-with-salesforce?_ga=2.89177499.1499600700.1743352693-1574482068.1742724118

本記事では、この機能を利用して、Databricksで開発・ホストしたモデルをSalesforce Data Cloudへ登録・呼び出しを実行し、推論まで実施するところまでを実践します。


## Model Builderの実践

### Databricksのモデル情報の取得
Databricks上で、サービング済みの機械学習モデルのエンドポイントのURLを取得します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3194680/86992005-2f2f-46f4-8303-9802f8346799.png)

上記画像におけるURLは以下となり、ホストされている環境、モデルにより異なります。

```
https://dbc-<XXXXXXXXXXX>.cloud.databricks.com/serving-endpoints/elasticnetdiabetes/invocations
```
:::note warn
DataCloudからDatabricksのモデルを呼び出す際には、自動的にインプットの項目の末尾に「**_c_c**」が付与されるため、モデルのインプットの定義においても末尾を修正する必要があります。
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3194680/46bf004c-11d2-4a14-b6b1-fb753f0d507b.png)


### Databricksのアクセストークンの取得

こちらの手順を参考に、モデルを呼び出すための認証情報(アクセストークン)を取得します。

:::note info
システムに登録し複数のユーザーからの呼び出しに利用する際にはサービスプリンシパル(Databricksのシステムユーザー)に対してトークンを発行することを推奨します。
:::

https://docs.databricks.com/aws/ja/dev-tools/auth/pat#databricks-personal-access-token-for-%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B7%E3%83%91%E3%83%AB

### モデルのDataCloudへの登録
Einstein Studioから「予測モデルを追加」をクリックし、「Databricksモデルを接続する」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3194680/c596cc3a-1c4a-425a-9384-2031982d47ee.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3194680/c70e2796-04db-45c5-bab3-36cf48441c25.png)

エンドポイントの接続設定の画面が表示されるため、必要事項を記入します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3194680/f227335b-1617-48af-b202-5ef26f19626f.png)
			
| 項目 | 値 |
|:-|:-|
|  名前 | (任意の名称) |
| URL	  | 「Databricksのモデル情報の取得」で取得したURL   |
| 認証ヘッダー  | Authorization  |
| 秘密鍵  | 「Databricksのアクセストークンの取得」で取得したアクセストークン  |


モデルの入力・出力の型を定義します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3194680/5ba20017-3361-4b06-9856-ac5d6f0e9de1.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3194680/a6963bc6-87dc-40b1-819a-c178557d6aaa.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3194680/bda71764-21fd-4dbd-ba0a-0702b19a6f85.png)

この後、モデルの保存ならびに有効化を実施することで利用可能になります。

### モデルの呼び出し
Einstein Studio タブから、先の手順で作成したモデルを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3194680/cde2bb1c-29c9-43dd-bc9c-56098a929110.png)

利用状況 タブを開き、「新しい予測ジョブ」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3194680/3d83f76a-23a8-4e4a-80fb-93d543055e10.png)

Databricksに処理してほしいレコードが格納されたDMOを指定して、「次へ」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3194680/fad1e1fe-1d8a-4ed0-83d5-3a6bbe26674b.png)

Databricksモデルの各入力項目（画面左）に、処理対象オブジェクトの項目をマッピングして、「次へ」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3194680/3b0cdfc6-cb65-4316-a648-e3a5308f46b3.png)

利用する更新種別を選択して、「次へ」ボタンをクリックします。
(今回はバッチで実行します)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3194680/c28f1b33-1db3-43fa-8572-f60e8b6f1ede.png)

適当なジョブ名とオブジェクト名を入力して、「作成」ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3194680/cbf8964f-e76a-485d-a702-6041afe394db.png)

:::note info
ここで設定したオブジェクト名でDMOが作成されることに注意してください。
:::

作成したジョブの「▼」メニューから「有効化」を選択し、「有効」列が有効になるのを待ちます。その後、作成したジョブの「▼」メニューから「実行」を選択し、Databricksへのデータ連携を開始し、「最終実行状況」列が「成功」になるまで待ちます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3194680/dea9551d-023d-435b-8d19-b6ecb2d84092.png)

予測ジョブが成功すると、通常のDMOと同様の使い方ができるようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3194680/38d57962-bdcf-4de8-9055-f4b70163ac7f.png)

:::note warn
オブジェクトのカテゴリは「OTHER」固定に見受けられるため、セグメント化で利用する場合にはデータ変換等を別途実施する必要がありそうです。
:::


## おわりに

このように、Model Builderを利用することでSalesforce Data CloudからDatabricksのモデルへ接続することが可能です。[こちら](https://qiita.com/nttd-inoutk/items/992fe0e278916d9b0119)の記事もあわせて参考にしていただくことで、SalesforceのデータをもとにDatabrcks上でモデルを構築し、そのモデルを再度Salesforceで利用することも可能になります。
**本機能の活用により、データサイエンティストとビジネスユーザーコラボレーションを促進することで、より大きなビジネス価値の創出につながること間違いないと思います**。是非ご活用ください。


## 仲間募集

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><div>

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

</div></details>

<details><summary> TDFⓇ-AM（Trusted Data Foundation - Analytics Managed Service）について</summary><div>

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

</div></details>


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

https://www.nttdata.com/jp/ja/lineup/databricks/

</details>


<details><summary>NTTデータとTableauについて </summary><div>

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

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

</div></details>


<details><summary>NTTデータとAlteryxについて </summary><div>
Alteryxは、業務ユーザーからIT部門まで誰でも使えるセルフサービス分析プラットフォームです。

Alteryx導入の豊富な実績を持つNTTデータは、最高位にあたるAlteryx Premiumパートナーとしてお客さまをご支援します。

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

https://www.nttdata.com/jp/ja/lineup/alteryx/

</div></details>

<details><summary>NTTデータとDataRobotについて </summary><div>
DataRobotは、包括的なAIライフサイクルプラットフォームです。

NTTデータはDataRobot社と戦略的資本業務提携を行い、経験豊富なデータサイエンティストがAI・データ活用を起点にお客様のビジネスにおける価値創出をご支援します。

https://www.nttdata.com/jp/ja/lineup/datarobot/

</div></details>

<details><summary> NTTデータとInformaticaについて</summary><div>

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

</div></details>

<details><summary>NTTデータとSnowflakeについて </summary><div>
NTTデータでは、Snowflake Inc.とソリューションパートナー契約を締結し、クラウド・データプラットフォーム「Snowflake」の導入・構築、および活用支援を開始しています。

NTTデータではこれまでも、独自ノウハウに基づき、ビッグデータ・AIなど領域に係る市場競争力のあるさまざまなソリューションパートナーとともにエコシステムを形成し、お客さまのビジネス変革を導いてきました。
Snowflakeは、これら先端テクノロジーとのエコシステムの形成に強みがあり、NTTデータはこれらを組み合わせることでお客さまに最適なインテグレーションをご提供いたします。

https://www.nttdata.com/jp/ja/lineup/snowflake/

</div></details>