Amazon BedrockでBYOLLM(Bring Your Own Large-Language-Model)を試してみた
はじめに(TL;DR)
Salesforce Data Cloudでは、各クラウドベンダーの主要なLLMの呼び出しをサポートしていますが、それ以外のLLMも利用できるようBYOLLM(Bring Your Own Large Language Model)という機能を提供しています。今回、Amazon BedrockのAnthropic Claude Sonnet 3.5との連携を試してみたので、その設定手順をご紹介します。
BYOLLMとは?
BYOLLMは「Bring Your Own Large Language Model」の略で、Salesforce Data Cloudに標準で登録されている基盤モデルとは別に、外部プラットフォームでホストされている基盤モデルをEinstein Studioに登録することで、Salesforceプラットフォームから呼び出す機能のことです。
「Bring」とあるので、基盤モデルをSalesforceの環境にコピーして持ってくるのかなと思うかもしれませんが、実際はSalesforceの環境から基盤モデルをAPIで呼び出す形式になりますので、その点ご注意ください。
Salesforce Data Cloudに標準で登録されているLLMはこちらを、BYOLLMで追加できるLLMはこちらをご参照ください。
Amazon BedrockでBYOLLMを設定してみる
AWS側の設定
Data Cloudから呼び出すための基盤モデルをAWS上に準備します。
設定は主にこちらのページを参考にしました。
基盤モデルへのアクセスの設定
デフォルトでは基盤モデルへのアクセスが許可されていないため、基盤モデルへのアクセスを設定する必要があります。今回は「米国東部 (バージニア北部)」のAnthropicのClaude Sonnet 3.5を利用することにしました。
基盤モデルを実行するための権限の設定
上記の「基盤モデルへのアクセスの設定」とは別に、ユーザがBedrock上の基盤モデルを実行するための権限も必要になります。その設定は、こちらのページの「Grant Amazon Bedrock invoke model permission to an IAM User」のセクションにある手順を参考にしました。また、Einstein StudioがBedrock上の基盤モデルにアクセスするには、アクセスキーが必要になるので、その設定も行なってください。
Data Cloud側の設定
AWS側の設定が終わったら、次はData Cloud側の設定を行います。
Einstein生成AI機能の有効化
Einsteinの生成AI機能を利用できるようにするために、「Einsteinを有効化」を「オン」にします。基盤モデルを実行するだけなら「Einstein Trust Layer」や「Einsteinデータ収集」は必須ではありませんが、それらも重要な機能なので、合わせて有効化しておくと良いかと思います。
基盤モデルの登録
基盤モデルをEinstein Studioに登録します。まず、Data Cloudにログイン後、「Einstein Studio」タブをクリックし、画面右上にある「基盤モデルを追加」ボタンをクリックします。
「モデルビルダー」の画面に切り替わるので、「Amazon Bedrock に接続」を選択して、「次へ」ボタンをクリックします。
利用する基盤モデルのエンドポイントに関する情報を入力します。
「名前」の項目にはお好きな名称を記入してください。
「地域」の項目は選択式ではなく記入式なので正確なリージョン名をお使いください。
「モデルバージョン」の項目は選択式なので、お使いの基盤モデルを選択してください(今回は「Claude 3.5 Sonnet」)。
「微調整モデルですか?」の項目にはFine-Tuningを行ったモデルかどうかを指定します。今回はFine-Tuningを行っていないモデルを利用するので「いいえ」を選択します。
最後に「接続」ボタンをクリックします。
すると、「モデル Playground」の画面に切り替わります。ここではEinstein Studioと基盤モデルとの間の簡単な疎通確認や基盤モデルの設定を行うことができます。
試しに簡単なプロンプトを投げて回答が返ってくるか確認します。ここでは、「あなたは誰ですか」というプロンプトを記入して「生成」ボタンをクリックすると、Claudeである旨の回答が返ってきているので、正しく動いていることが確認できました。
特に問題なければ、「保存」ボタンをクリックして、モデルの設定を保存します。
基盤モデルとの疎通ができたので、プロンプトテンプレートを作成したいと思います。プロンプトテンプレートは、特定のタスクや目的に応じて、AIモデルに対して入力するテキストの形式や構造を定義したもので、フローやエージェントなどからプロンプトを実行できるようになります。
該当のモデルのページから、「プロンプトテンプレートを作成」ボタンをクリックします。
画面が変わり、「新規プロンプトテンプレート」のダイアログが表示されるので、プロンプトテンプレート種別を「Flex」、テンプレート名に任意の名前を指定してください。API参照名は自動で指定されたものでOKです。今回ソースは利用しないため、「ソースを定義」のセクションにあるフィールドは右側にあるゴミ箱ボタンをクリックして削除してください。
「次へ」ボタンをクリックすると、プロンプトビルダーの画面が表示されるので、前回と同じプロンプトを指定します。画面右側のモデル種別で「カスタム」を選択し、上で定義したモデル名を選択します。
最後に画面中央付近にある「保存&プレビュー」ボタンをクリックして、同様の結果が得られたら成功です!
おわりに
今回はAWS上でホストされているAnthropic 3.5 Sonnetを使ってBYOLLMを試してみました。
BYOLLMによって、既にお使いの基盤モデルをData Cloudから利用することによって、Data Cloud上のデータでグラウンディングしたプロンプトをLLMに発行することができるようになります。
AWSの他にもGoogleやAzure上の基盤モデルも呼び出すことができますので、既にお使いの基盤モデルをSalesforce環境から利用してみてください。
参考リンク
AWS Machine Learning Blog
・Build generative AI–powered Salesforce applications with Amazon Bedrock
Salesforce Developers Blog
・Bring Your Own Large Language Model in Einstein 1 Studio
Salesforce Help
・Bring Your Own Large Language Model
※本記事は、私が所属する会社とは一切関係のない事柄です。
Discussion