「Amazon SageMaker JumpStartを使用して、Generative AIとRAGを活用して安全なエンタープライズアプリケーションを構築する」

Building secure enterprise applications using Amazon SageMaker JumpStart, Generative AI, and RAG.

生成AIは、会話、ストーリー、画像、動画、音楽など、新しいコンテンツやアイデアを作成できるAIの一種です。これは、膨大な量のデータで事前に訓練された大規模な言語モデル(LLM)によって動作します。これらのモデルは、基礎モデル(FM)とも呼ばれます。

これらのLLMまたはFMの登場により、顧客は広告、知識管理、およびカスタマーサポート向けの生成AIベースのアプリケーションを簡単に構築できます。これらのアプリケーションの影響を実感することで、顧客により洞察が提供され、組織のパフォーマンス効率にポジティブな影響を与えることができます。情報の簡単な検索と一部の時間のかかるタスクの自動化も可能です。

AWS上の生成AIを使用すると、アプリケーションを再構築し、完全に新しい顧客体験を作り出し、全体的な生産性を向上させることができます。

この記事では、AWS Amplifyを使用してセキュアなエンタープライズアプリケーションを構築し、Amazon SageMaker JumpStart基礎モデル、Amazon SageMakerエンドポイント、およびAmazon OpenSearch Serviceを呼び出す方法について説明します。この記事は、AWSサービスを使用して生成AI領域でのセキュアなエンタープライズアプリケーションを構築するための参考資料として使用できます。

ソリューションの概要

このソリューションでは、SageMaker JumpStartモデルを使用して、テキストからテキスト、テキストから画像、およびテキスト埋め込みモデルをSageMakerエンドポイントとして展開します。これらのSageMakerエンドポイントは、Amazon API GatewayとAWS Lambda関数を介してAmplify Reactアプリケーションから消費されます。アプリケーションとAPIへの意図しないアクセスから保護するために、Amazon CognitoがAmplify React、API Gateway、およびLambda関数に統合されています。SageMakerエンドポイントとLambdaはプライベートVPCに展開されているため、API GatewayからLambda関数への通信はAPI Gateway VPCリンクを使用して保護されます。次のワークフロー図は、このソリューションを示しています。

このワークフローには、次のステップが含まれます:

  1. 初期セットアップ:SageMaker JumpStart FMはSageMakerエンドポイントとして展開され、SageMaker JumpStartモデルから3つのエンドポイントが作成されます。テキストから画像を生成するために使用されるモデルは、Stability AI Stable Diffusion基礎モデルです。ソリューションで使用するテキストからテキストを生成するためのテキストモデルは、Hugging Face Flan T5 XLモデルです。入力された質問の文脈を検索するため、埋め込みを生成するために使用するテキスト埋め込みモデルは、Hugging Face GPT 6B FP16埋め込みモデルです。使用ケースとモデルのパフォーマンスベンチマークに基づいて、別のLLMを展開することも可能です。基礎モデルについての詳細は、「Amazon SageMaker JumpStartのはじめ方」を参照してください。
  2. コンピュータからReactアプリケーションにアクセスします。Reactアプリケーションには、画像のプロンプトを受け取り生成された画像を表示するページ、テキストのプロンプトを受け取り生成されたテキストを表示するページ、および質問を受け取り、質問に一致する文脈を見つけ、テキストからテキストモデルによって生成された回答を表示するページがあります。
  3. Amplifyライブラリを使用して構築されたReactアプリケーションはAmplifyにホストされ、AmplifyホストURLでユーザーに提供されます。AmplifyはReactアプリケーションのホスティング環境を提供します。Amplify CLIを使用してAmplifyホスティング環境をブートストラップし、コードをAmplifyホスティング環境に展開します。
  4. 認証されていない場合、Amplify React UIライブラリを使用してAmazon Cognitoに対して認証されます。
  5. 入力を提供してフォームを送信すると、リクエストはAPI Gatewayを介して処理されます。
  6. Lambda関数はユーザーの入力をサニタイズし、対応するSageMakerエンドポイントを呼び出します。Lambda関数は、サニタイズされたユーザーの入力からLLMが期待する形式のプロンプトを構築します。これらのLambda関数は、LLMからの出力を再フォーマットし、レスポンスをユーザーに送信します。
  7. テキストからテキスト(Flan T5 XXL)、テキストから埋め込み(GPTJ-6B)、およびテキストから画像モデル(Stability AI)のためにSageMakerエンドポイントが展開されます。推奨されるデフォルトのSageMakerインスタンスタイプを使用して、3つの別々のエンドポイントが展開されます。
  8. ドキュメントの埋め込みは、テキストから埋め込みモデルを使用して生成され、これらの埋め込みはOpenSearch Serviceにインデックスされます。 k-Nearest Neighbor(k-NN)インデックスが有効になっており、OpenSearch Serviceからの埋め込みの検索が可能です。
  9. AWS Fargateジョブはドキュメントを取り、それらをより小さなパッケージに分割し、テキストから埋め込みLLMモデルを呼び出し、返された埋め込みをOpenSearch Serviceにインデックスして以前説明したように文脈を検索します。

データセットの概要

このソリューションで使用するデータセットは、Hugging Faceのリポジトリ内のpile-of-lawです。このデータセットは、法務・行政データの大規模なコーパスです。この例では、このリポジトリ内のtrain.cc_casebooks.jsonl.xzを使用します。これは、LLMsが要求するJSONL形式でキュレーションされた教育ケースブックのコレクションです。

前提条件

開始する前に、以下の前提条件を満たしていることを確認してください:

  • AWSアカウント。
  • AWS Identity and Access Management(IAM)実行ロールに、Amazon SageMaker Studioドメインの管理ポリシーがアタッチされていること。ロールに権限を割り当てる手順については、「Amazon SageMaker API Permissions: Actions, Permissions, and Resources Reference」を参照してください。この場合、Amazon Augmented AI(Amazon A2I)に割り当てられた権限を割り当てる必要があります。詳細については、「Amazon SageMaker Identity-Based Policy Examples」を参照してください。
  • Amazon Simple Storage Service(Amazon S3)バケット。手順については、「Creating a bucket」を参照してください。
  • このポストでは、Pythonを使用してAWS Cloud Development Kit(AWS CDK)を使用します。ローカル環境をセットアップし、開発アカウントをブートストラップするための手順については、「Getting Started with the AWS CDK」の指示に従ってください。
  • このAWS CDKプロジェクトでは、SageMakerインスタンス(ml.g5.2xlargeが2つ、ml.p3.2xlargeが1つ)が必要です。クォータの増加をリクエストする必要があるかもしれません。

ソリューションの実装

このAWS CDKプロジェクトには、すべてのアーキテクチャコンポーネントが含まれています。このソリューションを実装するには、以下の手順を実行してください:

  1. GitHubリポジトリをコンピュータにクローンします。
  2. ルートフォルダに移動します。
  3. Python仮想環境を初期化します。
  4. requirements.txtファイルで指定された必要な依存関係をインストールします。
  5. プロジェクトフォルダでAWS CDKを初期化します。
  6. プロジェクトフォルダでAWS CDKをブートストラップします。
  7. AWS CDKのデプロイコマンドを使用して、スタックをデプロイします。
  8. プロジェクトフォルダ内のAmplifyフォルダに移動します。
  9. Amplifyを初期化し、CLIが提供するデフォルトを受け入れます。
  10. Amplifyホスティングを追加します。
  11. Amplifyフォルダ内からAmplifyフロントエンドを公開し、実行の最後に提供されるドメイン名をメモします。
  12. Amazon Cognitoコンソールに移動し、デプロイでプロビジョニングされたAmazon Cognitoインスタンスにユーザーを追加します。
  13. ステップ11でのドメイン名に移動し、Amazon Cognitoのログイン詳細を提供してアプリケーションにアクセスします。

OpenSearchのインデックス作成ジョブをトリガーする

AWS CDKプロジェクトは、GenAIServiceTxt2EmbeddingsOSIndexingLambdaという名前のLambda関数をデプロイしました。Lambdaコンソールでこの関数に移動します。

次のスクリーンショットに示すように、空のペイロードでテストを実行します。

このLambda関数は、VPC内で実行されるAmazon Elastic Container Service(Amazon ECS)上のFargateタスクをトリガーします。このFargateタスクは、AWS CDKプロジェクトの一部としてデプロイされたテキストから埋め込みインデックスを作成するために、含まれているJSONLファイルをセグメント化します。各セグメントの埋め込みは、テキストから埋め込みを呼び出すLLMエンドポイントの結果です。

クリーンアップ

将来の料金を避けるために、SageMakerのエンドポイントを削除し、すべてのLambda関数を停止します。また、アプリケーションワークフローの実行中に作成したAmazon S3の出力データも削除します。バケットを削除する前に、S3バケット内のデータを削除する必要があります。

結論

このポストでは、Generative AIとRAGを使用して安全でエンタープライズアプリケーションを作成するためのエンドツーエンドのアプローチを示しました。このアプローチは、AWS上で安全かつスケーラブルなGenerative AIアプリケーションを構築するために使用することができます。AWS CDKアプリをアカウントにデプロイし、Generative AIソリューションを構築することをお勧めします。

追加のリソース

Generative AIアプリケーションに関する詳細情報については、以下を参照してください:

  • Amazon SageMakerの基礎モデルを使用した自動クイズ生成によるAWS認定試験の学習を加速させる
  • Amazon SageMaker、Amazon OpenSearch Service、Streamlit、およびLangChainを使用した強力な質問応答ボットの構築
  • AWS CDKを使用してAmazon SageMaker JumpStartから生成AIモデルを展開する
  • Amazon SageMaker JumpStartを使用したAWS上での生成AIの始め方
  • Amazon SageMaker JumpStartを使用して、大規模な言語モデルを活用したサーバーレスの会議要約バックエンドの構築

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

機械学習

「新しいHADARベースのイメージングツールにより、暗闇でもクリアに見ることができます」

ロボットや自律型車両が最も暗い夜でも容易に移動できる世界を想像してみてください。それは熱シグナルを知覚するAIによって...

データサイエンス

Zipperを使用してサーバーレスアプリを高速に構築:TypeScriptで記述し、その他のすべてをオフロードする

「Ruby on Railsの良い思い出を振り返った後、私はZipperプラットフォームを発見し、どれだけ速く価値あるものを作れるかを試...

データサイエンス

オープンソースのベクトルデータベースChromaDBを使用して、セマンティック検索アプリケーションを構築する

はじめに AIアプリケーションとユースケースの台頭に伴い、AIアプリケーションを容易にし、AI開発者が実世界のアプリケーショ...

人工知能

ChatGPTを使ってコーディングする方法' (ChatGPTをつかってコーディングするほうほう)

イントロダクション 人工知能を現代のプログラミングに取り入れることで、効率とイノベーションの新時代が到来しました。Open...

データサイエンス

私が通常のRDBMSをベクトルデータベースに変換して埋め込みを保存する方法

この記事では、一般的なRDBMSを完全に機能したベクトルデータベースに変換して、GenerativeAIアプリケーションの開発に埋め込...

データサイエンス

「CHATGPTの内部機能について:AIに関する自分自身の疑問に対するすべての回答」

私たちは皆、ChatGPTが質問に答えたり、命令を実行したりするユーザーフレンドリーなAIチャットボットであることを知っていま...