Amazon Web Services ブログ
ノーコードツール Amazon SageMaker Canvas を用いた Salesforce Data Cloud 上で機械学習を民主化する
この記事は、Salesforce Einstein AI の製品担当ディレクター、Daryl Martis が共同執筆しています。
これは、Salesforce Data Cloudと Amazon SageMaker の統合について説明するシリーズの第 3 回目の投稿です。
第 1 回と第 2 回では、Salesforce Data Cloud と Einstein Studio と SageMaker の統合により、企業が SageMaker を使用して Salesforce データに安全にアクセスし、そのツールを使用してモデルを構築、トレーニング、および SageMaker でホストされているエンドポイントにデプロイする方法を示します。SageMaker エンドポイントを Salesforce Data Cloud に登録して、Salesforce の予測を有効にすることができます。
この投稿では、ビジネスアナリストやシチズンデータサイエンティストが Amazon SageMaker Canvas でコードなしで機械学習 (ML) モデルを作成し、Salesforce Einstein Studio と統合するためのトレーニング済みモデルをデプロイして強力なビジネスアプリケーションを作成する方法を示します。SageMaker Canvas では、コードを書かなくても Salesforce Data Cloud のデータにアクセスし、数回クリックするだけでモデルをビルド、テスト、デプロイできます。加えて、SageMaker Canvas により特徴の重要度と SHAP 値を使用して予測結果を理解できるため、ML モデルによって算出された予測を簡単に説明できるようになります。
SageMaker Canvas
SageMaker Canvas を使用すると、ビジネスアナリストやデータサイエンスチームは、コードを1行も記述しなくても、MLモデルや生成系 AI モデルを構築して使用できます。SageMaker Canvas には、分類、回帰、予測、自然言語処理 (NLP)、およびコンピュータビジョン (CV) に関する正確な ML 予測を生成するための視覚的なポイントアンドクリックインターフェイスが用意されています。さらに、Amazon Bedrock の基盤モデル (Foundation Models, 以下 FM と呼称) や Amazon SageMaker JumpStart で公開されている FM にアクセスして評価し、生成系 AI ソリューションをサポートするためのコンテンツ生成、テキスト抽出、テキスト要約も行うことができます。加えて、自ら構築した ML モデルを持ち込んで、SageMaker Canvas 上で直接予測を生成できます。
Salesforce Data Cloud と Einstein Studio
Salesforce Data Cloud は、あらゆるタッチポイントから顧客データをリアルタイムで更新できるデータプラットフォームです。
Einstein Studio は、Salesforce Data Cloud 上の AI ツールへのゲートウェイとなります。Einstein Studio では、システム管理者とデータサイエンティストが数回のクリックまたはコードを使用して簡単にモデルを作成できます。Einstein Studio の独自モデル導入 (BYOM) 機能により、SageMaker などの外部プラットフォームから作成されたカスタムモデルまたは Generative AI モデルを Salesforce Data Cloud に接続することができます。
ソリューション概要
SageMaker Canvas を使用して Salesforce Data Cloud 内のデータを使用して ML モデルを構築する方法を示すために、製品を推奨する予測モデルを作成してみましょう。このモデルでは、顧客の人口統計、マーケティングエンゲージメント、購入履歴など、Salesforce Data Cloud に保存されている特徴量を使用します。製品レコメンデーションモデルは、Salesforce Data Cloud のデータを使用して SageMaker Canvas のノーコードのユーザーインターフェイスを使用して構築およびデプロイされます。
ここでは、Amazon Simple Storage Service (Amazon S3) に保存されているサンプルデータセットを使用します。このデータセットを Salesforce データクラウドで使用するには、「Data Cloud で Amazon S3 Data Stream を作成する」を参照してください。モデルを作成するには、次の変数が必要です。
- Club Memeber — お客様がクラブ会員の場合
- Campaign — 顧客が参加しているキャンペーン
- State — 顧客が居住する州または都道府県
- Month — 購入月
- Case Count — お客様が提起したケースの数
- Case Type Return — 顧客が過去1年間に製品を返品したかどうか
- Case Type Shipment Damaged — 過去1年間に購入者の貨物が破損していたかどうか
- Enganement Score — 顧客のエンゲージメントのレベル(メールキャンペーンへの応答、オンラインストアへのログインなど)
- Tenure — 顧客と会社との関係の存続期間
- Clicks — 購入前の 1 週間以内にお客様が行った平均クリック数
- Pages Visited — 購入前の 1 週間以内に顧客が訪問した平均ページ数
- Product Purchased — 実際に購入された製品
これ以降の手順で、エンタープライズデータにアクセスし、予測モデルを構築するために SageMaker Canvas 内で起動した Salesforce Data Cloud コネクタをどのように使用するのかの概要を示していきます。
- SageMaker Canvas ドメインを登録するように Salesforce 接続アプリケーションを設定します。
- SageMaker Canvas で Salesforce Data Cloud の OAuth を設定します。
- 組み込みの SageMaker Canvas Salesforce データクラウドコネクタを使用して Salesforce データクラウドデータに接続し、データセットをインポートします。
- SageMaker Canvas でモデルを構築してトレーニングします。
- モデルを SageMaker Canvas にデプロイし、予測を行います。
- SageMaker 推論エンドポイントへのフロントエンド接続として Amazon API Gateway エンドポイントを デプロイします。
- API Gateway エンドポイントを Einstein Studio に登録します。手順については、「独自の AI モデルを Data Cloud に取り込む」を参照してください。
次の図は、ソリューションアーキテクチャを示しています。
前提条件
始める前に、以下の作業手順に沿って SageMaker ドメインを作成し、SageMaker Canvas を有効にしてください。
- Amazon SageMaker Studio ドメインを作成します。手順については、「Onboard to Amazon SageMaker Domain」を参照してください。
- 上記の手順で作成されたドメイン ID とユーザープロファイルによって使用される実行ロールを書き留めておきます。このロールには、以降のステップで権限を追加していきます。
以下のスクリーンショットは、この記事のために作成したドメインを示しています。
- 次に、ユーザープロファイルに移動し、Edit を選択します。
- Amazon SageMaker Canvas 設定セクションに移動し、Enable Canvas base permissions を選択します。
- Enable direct deployments of Canvas models と Enable Model Registory registration permissions for all users を選択します。
これにより、SageMaker Canvas は SageMaker コンソールのエンドポイントにモデルをデプロイできるようになります。これらの設定は、ドメインまたはユーザープロファイルレベルで構成できます。ユーザープロファイル設定はドメイン設定よりも優先されます。
Salesforce 接続アプリケーションを作成または更新する
次に、SageMaker Canvas から Salesforce Data Cloud への OAuth フローを有効にするための Salesforce 接続アプリケーションを作成します。次の手順を完了します。
- Salesforce にログインし、Setup に移動します。
- App Manager を検索し、新しい接続アプリケーションを作成します。
- 次の情報を入力します。
- Connected App Name に名前を入力します。
- API Name はデフォルトのままにします (自動的に入力されます)。
- Connect Email に、連絡先メールアドレスを入力します。
- Enable OAuth Settings を選択します。
- Calllback URL に
https://<domain-id>.studio.<region>.sagemaker.aws/canvas/default/lab
と入力します。<domain-id>
にSageMaker ドメインのドメイン ID を、<region>
にリージョンを指定してください。
- 接続アプリケーションに次のスコープを設定します。
- API を介してユーザーデータを管理します(
API
)。 - いつでもリクエストを実行できます (
refresh_token
,offline_access
)。 - Salesforce Data Cloud に対して ANSI SQL クエリを実行します(
Data_Cloud_query_api
)。 - データクラウドプロファイルデータを管理します(
Data Cloud_profile_api
)。 - ID URL サービスにアクセスします(
id
,profile
,email
,address
,phone
)。 - 固有のユーザー識別子にアクセスします(
openid
)。
- API を介してユーザーデータを管理します(
- 接続アプリケーションの IP 緩和設定を [IP 制限の緩和] に設定します。
Salesforce Data Cloud コネクタの OAuth 設定
SageMaker Canvas は AWS シークレットマネージャーを使用して、Salesforce 接続アプリケーションからの接続情報を安全に保存します。SageMaker Canvas では、管理者は個々のユーザープロファイルまたはドメインレベルで OAuth 設定を構成できます。シークレットはドメインとユーザープロファイルの両方に追加できますが、SageMaker Canvas は最初にユーザープロファイル内のシークレットを探すことに注意してください。
OAuth 設定を構成するには、次の手順を実行します。
- SageMaker コンソールのドメインまたはユーザープロファイル設定の編集に移動します。ナビゲーションペインからドメインを選択し、設定したいユーザープロファイルを選択してください。その後、Edit を押下してください。
- ナビゲーションペインに表示されている Step4 Canvas setting を選択します。
- OAuth settings の Add OAuth configureration を選択します。その後 Data Source で、Salesforce Data Cloud を選択します。
- シークレット設定では、新しいシークレットを作成するか、既存のシークレットを使用できます。この例では、新しいシークレットを作成し、Salesforce 接続アプリケーションからクライアント ID とクライアントシークレットを入力します。
- Submit を押下します。
SageMaker Canvas で OAuth を有効にする方法の詳細については、「Salesforce データクラウド用の OAuth の設定」を参照してください。
これで、Salesforce データクラウドから SageMaker Canvas にデータアクセスして AI モデルと ML モデルを構築できるようにするセットアップが完了しました。
Salesforce データクラウドからデータをインポートする
データをインポートするには、次の手順を実行します。
- SageMaker ドメインで作成したユーザープロファイルから Launch を選択し、Canvas を選択します。
Canvas アプリに初めてアクセスする場合、作成には約 10 分かかります。
- ナビゲーションペインで Data Wrangler を選択します。
- Create メニューで Tabular を選択し、表形式のデータセットを作成します。
- データセットに名前を付け、 Create を選択します。
- Data Source で、 Salesforce Data Cloud を選択し、 Add Connection を選択してデータレイクオブジェクトをインポートします。
以前に Salesforce Data Cloud への接続を設定したことがある場合は、新しい接続を作成する代わりにその接続を使用するオプションが表示されます。
- 新しい Salesforce データクラウド接続の名前を入力し、 Add Connection を選択します。
完了するまでに数分かかります。
- 接続を承認するための Salesforce ログインページにリダイレクトされます。
ログインが成功すると、リクエストはデータレイクオブジェクトリストとともに SageMaker Canvas にリダイレクトされます。
- Amazon S3 経由でアップロードされたモデルトレーニング用の機能を含むデータセットを選択します。
- ファイルをドラッグアンドドロップし、Edit in SQL を選択します。
Salesforce はすべてのデータクラウドオブジェクト項目に “__c”
を追加します。SageMaker Canvas の命名規則により、フィールド名には “__”
は使用できません。
- SQL を編集して列の名前を変更し、モデルトレーニングに関係のないメタデータを削除します。テーブル名をオブジェクト名に置き換えます。
SELECT
"state__c"
as
state
,
"case_type_shipment_damaged__c"
as
case_type_shipment_damaged
,
"campaign__c"
as
campaign
,
"engagement_score__c"
as
engagement_score
,
"case_count__c"
as
case_count
,
"case_type_return__c"
as
case_type_return
,
"club_member__c"
as
club_member
,
"pages_visited__c"
as
pages_visited
,
"product_purchased__c"
as
product_purchased
,
"clicks__c"
as
clicks
,
"tenure__c"
as
tenure
,
"month__c"
as
month
FROM
product_recommendation__dlm
;
- Run SQL を選択し、Create dataset を選択します。
- データセットを選択し、Create a model を選択します。
- 推奨製品を予測するモデルを作成するには、モデル名を指定し、Problem type に Predictive analysis を選択し、Create を選択します。
モデルの構築とトレーニング
モデルを構築してトレーニングするには、次の手順を実行します。
- モデルを起動したら、ターゲット列を
product_purched
に設定します。
SageMaker Canvas には、各列とターゲット列の主要な統計と相関関係が表示されます。SageMaker Canvas には、モデルの構築を開始する前にモデルをプレビューしてデータを検証するためのツールが用意されています。
- プレビューモデル機能を使用してモデルの精度を確認し、データセットを検証してモデルを構築する際の問題を回避します。
- データを確認してデータセットに変更を加えたら、ビルドタイプを選択します。Quick build の方が速いかもしれませんが、モデルの構築にはデータのサブセットしか使用しません。この記事では、 Standard build を選択しました。
標準ビルドの完了には 2 ~ 4 時間かかることがあります。
SageMaker Canvas は、モデルの構築中にデータセット内の欠損値を自動的に処理します。また、他のデータ準備変換を適用して、データを使って機械学習ができるように準備します。
- モデルの構築が開始されたら、ページを離れることができます。
My models ページでモデルが Ready と表示されると、分析と予測の準備が整います。
- モデルを作成したら、 My models に移動し、 View を選択して作成したモデルを表示し、最新バージョンを選択します。
- Analyze タブに移動して、各特徴量が予測に与える影響を確認します。
- モデルの予測に関する追加情報については、Scoring タブに移動してください。
- 製品予測を開始するには、Predict を選択します。
モデルをデプロイして予測を行う
まずはSageMaker Canvas上で作成したモデルの予測結果をプレビューしてみましょう。以下は予測結果をプレビューするためモデルをデプロイし、予測を開始する作業手順となっています。
- Batch prediction と Single prediction のどちらを行うかを選択できます。この投稿では、Single prediction を選択します。
Single prediction を選択すると、SageMaker Canvas にはユーザーが入力できる機能が表示されます。
- Update を選択して値を変更し、リアルタイムの予測を表示できます。
モデルの精度と、その特定の予測に対する各特徴量の影響が表示されます。
(訳者注)このようにして、 SageMaker Canvas で作成したモデルを SageMaker Canvas 上で予測を実行することができます。ここまでの操作で、モデルは期待した通りに動いていることがわかります。
SageMaker Canvas で作成したモデルを外部から実行するためには、作成したモデルをデプロイする必要があります。以下はその手順について記載します。
- SageMaker Canvas 上からモデルをデプロイするには、デプロイ名を指定し、インスタンスタイプとインスタンス数を選択して、 Deploy を選択します。
モデルのデプロイには数分かかります。
デプロイが成功すると、モデルのステータスが In Service に更新されます。
SageMaker Canvas には、デプロイメントをテストするためのオプションが用意されています。
- View details を選択します。
Details タブには、モデルエンドポイントの詳細が表示されます。インスタンスタイプ、カウント、入力形式、応答内容、およびエンドポイントは、表示される主な詳細の一部です。
- Test deployment を選択して、デプロイされたエンドポイントをテストします。
単一予測と同様に、ビューには入力フィーチャが表示され、エンドポイントをリアルタイムで更新およびテストするオプションが提供されます。
新しい予測は、エンドポイントの呼び出し結果とともにユーザーに返されます。
SageMaker エンドポイントを公開するための API の作成
Salesforce のビジネスアプリケーションを強化する予測を生成するには、SageMaker Canvas のデプロイによって作成された SageMaker 推論エンドポイントを API ゲートウェイ経由で公開し、それを Salesforce Einstein に登録する必要があります。
リクエストとレスポンスの形式は、Salesforce Einstein と SageMaker 推論エンドポイントによって異なります。API Gateway を使用して変換を実行するか、AWS Lambda を使用してリクエストを変換し、レスポンスをマッピングすることができます。Lambda と API Gateway 経由で SageMaker エンドポイントを公開するには、「Call an Amazon SageMaker model endpoint using Amazon API Gateway and AWS Lambda」を参照してください。
次のコードスニペットは、リクエストとレスポンスを変換する Lambda 関数です。
import json import boto3 import os client = boto3.client("runtime.sagemaker") endpoint = os.environ['SAGEMAKER_ENDPOINT_NAME'] prediction_label = 'product_purchased__c' def lambda_handler(event, context): features=[] # Input Sample : {"instances": [{"features": ["Washington", 1, "New Colors", 1, 1, 1, 1, 1, 1, 1, 1]}, {"features": ["California", 1, "Web", 100, 1, 1, 100, 1, 10, 1, 1]}]} for instance in event["instances"]: features.append(','.join(map(str, instance["features"]))) body='\n'.join(features) response = client.invoke_endpoint(EndpointName=endpoint,ContentType="text/csv",Body=body,Accept="application/json") response = json.loads(response['Body'].read().decode('utf-8')) prediction_response={"predictions":[]} for prediction in response.get('predictions'): prediction_response['predictions'].append({prediction_label:prediction['predicted_label']}) return prediction_response
設定に基づいて、Lambda 関数の endpoint
と prediction_label
の値を更新します。
- SageMaker 推論エンドポイントをキャプチャするには、環境変数
SAGEMAKER_ENDPOINT_NAME
を追加します。 - Einstein Studio に登録されているモデル出力 JSON キーと一致するように予測ラベルを設定します。
Lambda 関数のデフォルトのタイムアウトは 3 秒です。予測リクエストの入力サイズによっては、SageMaker リアルタイム推論 API の応答に 3 秒以上かかる場合があります。
- Lambda 関数のタイムアウトを増やしますが、API Gateway のデフォルトの統合タイムアウト (29 秒) 未満に保ちます。
Salesforce アインシュタインスタジオにモデルを登録
Einstein Studio に API Gateway エンドポイントを登録するには、「 Bring Your Own AI Models to Data Cloud.」を参照してください。
結論
この記事では、SageMaker Canvas を使用して Salesforce Data Cloud に接続し、自動化された機械学習機能を通じて予測を生成する方法をコードを 1 行も記述せずに説明しました。データセット全体を使ってモデルをトレーニングする標準ビルドを実行する前に、モデルのパフォーマンスを早期にプレビューできる SageMaker Canvas モデルビルド機能を実演しました。また、SageMaker Canvas内の単一の予測インターフェースを使用したり、機能の重要度を利用して予測を理解したりするなど、モデル作成後のアクティビティについても紹介しました。次に、SageMaker Canvas で作成した SageMaker エンドポイントを API として利用できるようにしました。これにより、Salesforce Einstein Studio と統合して強力な Salesforce アプリケーションを作成できます。
今後の記事では、SageMaker Canvas の Salesforce Data Cloud のデータを使用して、視覚的なインターフェイスとシンプルな自然言語プロンプトを使用して、データの洞察と準備をさらに簡単にする方法を紹介します。
SageMaker Canvas を使い始めるには、「SageMaker Canvas Immersion Day」と「Amazon SageMaker Canvas 入門」を参照してください。
著者について
Daryl Martis は、Salesforce Data Cloud の Einstein Studio の製品担当ディレクターです。彼は、AI/MLやクラウドソリューションなど、エンタープライズ顧客向けの世界クラスのソリューションの計画、構築、立ち上げ、管理において10年以上の経験があります。彼は以前、ニューヨーク市のファイナンスサービス業界で働いていました。Linkedinで彼をフォローしてください。
Rachna Chadha は、AWS のストラテジック・アカウント担当プリンシパル・ソリューション・アーキテクト AI/ML です。Rachna は楽観主義者で、AIを倫理的かつ責任を持って使用することで、将来の社会を改善し、経済的および社会的繁栄をもたらすことができると信じています。余暇には、家族と過ごしたり、ハイキングをしたり、音楽を聴いたりするのがラフナは好きです。
Ife Stewart は、AWS のストラテジック ISV セグメントの主任ソリューションアーキテクトです。彼女は過去 2 年間にわたって Salesforce データクラウドに携わり、Salesforce と AWS 全体で統合されたカスタマーエクスペリエンスの構築を支援してきました。Ife はテクノロジー分野で10年以上の経験があります。彼女はテクノロジー分野における多様性とインクルージョンの提唱者です。
Ravi Bhattiprolu は AWS のシニアパートナーソリューションアーキテクトです。Ravi は、戦略的パートナーである Salesforce や Tableau と協力して、両社の顧客がビジネス目標を実現するのに役立つ、革新的で優れた設計の製品とソリューションを提供しています。
Miriam Lebowitz は、AWS のストラテジック ISV セグメントのソリューションアーキテクトです。彼女はSalesforce Data Cloudを含むSalesforce全体のチームと関わっており、データ分析を専門としています。仕事以外では、お菓子作り、旅行、友人や家族との充実した時間を楽しんでいます。
翻訳はソリューションアーキテクトの辻 浩季が担当しました。原文はこちらです。