Amazon SageMaker JumpStartを使用してLLMと対話するためのWeb UIを作成します

Amazon SageMaker JumpStartを活用してLLMと対話するためのウェブUIを作成しましょう

ChatGPTのリリースと生成AIの人気の上昇は、AWS上で新しい製品やサービスを作成するためにこの技術をどのように活用できるかに興味を持つ顧客の想像力を捉えました。例えば、より対話的なエンタープライズチャットボットの作成などがあります。本記事では、Amazon SageMaker JumpStartの利用可能な基盤モデル(Llama 2、Stable Diffusionなど)と、Amazon SageMaker上で利用可能な他のモデルとの対話を開始し、インタラクティブに行うためのWeb UIであるChat Studioを作成する方法を紹介します。このソリューションをデプロイした後、ユーザーはウェブインターフェースを通じて複数の基盤モデルの機能を素早く体験することができます。

Chat Studioは、ユーザーがメディアを表示するよう要求した場合に、Stable Diffusionモデルエンドポイントを任意で呼び出して関連する画像やビデオのコラージュを返すこともできます。この機能は、応答との関連付けとしてメディアを使用することでユーザーエクスペリエンスを向上させるのに役立ちます。これは、目標を達成するためにChat Studioに追加の統合を行う方法の一例です。

以下のスクリーンショットは、ユーザーのクエリと応答の例を示しています。

Chat Studio query interface

Chat Studio response interface

大規模言語モデル

ChatGPTなどの生成AIチャットボットは、大規模言語モデル(LLM)によって駆動されています。LLMは、大量の未ラベル化テキストでトレーニングされるディープラーニングニューラルネットワークに基づいています。LLMの使用により、リアルな人間との対話に近い対話エクスペリエンスが可能になり、接続感とユーザー満足度の向上が図られます。

SageMaker基盤モデル

2021年、スタンフォード大学人間中心の人工知能研究所は、一部のLLMを基盤モデルとして定義しました。基盤モデルは大規模かつ広範な一般データに事前トレーニングされ、デジタルアートの生成から多言語テキスト分類まで、さまざまなユースケースでの最適化の基盤となることを目的としています。これらの基盤モデルは、新しいモデルのスクラッチからのトレーニングには時間がかかり、コストがかかるため、顧客から人気があります。SageMaker JumpStartでは、サードパーティのオープンソースおよびプロプライエタリプロバイダーが維持する数百の基盤モデルにアクセスできます。

ソリューションの概要

この記事では、事前トレーニング済みおよびカスタムのLLMをSageMakerを通じてデプロイし、モデルとのインターフェースを作成するためのローコードワークフローの手順を紹介しています。以下のステップをカバーしています:

  1. SageMaker基盤モデルのデプロイ。
  2. AWS LambdaAWS Identity and Access Management(IAM)の権限をAWS CloudFormationを使用してデプロイ。
  3. ユーザーインターフェースのセットアップと実行。
  4. オプションで他のSageMaker基盤モデルを追加します。このステップにより、Chat Studioの機能が追加の基盤モデルとの対話に拡張されます。
  5. オプションでAWS Amplifyを使用してアプリケーションをデプロイします。このステップにより、Chat StudioがWeb上にデプロイされます。

ソリューションアーキテクチャの概要については、以下の図を参照してください。

Chat Studio Solution Architecture

必要条件

ソリューションを進めるには、以下の必要条件が必要です:

  • 適切なIAMユーザー権限を持つAWSアカウント
  • ローカル環境にnpmがインストールされていること。 npmのインストール方法については、Node.jsとnpmのダウンロードとインストールを参照してください。
  • 対応するSageMakerエンドポイントに対するサービスクオータが1であること。Llama 2 13b Chatではml.g5.48xlargeインスタンスを使用し、Stable Diffusion 2.1ではml.p3.2xlargeインスタンスを使用します。

サービスクオータを増やすためには、AWS Service Quotasコンソールで、AWSサービスSageMakerに進み、エンドポイントの使用のためにml.g5.48xlargeの値を1、エンドポイントの使用のためにml.p3.2xlargeの値を1にするようにサービスクオータの増加を要求してください。

サービスクオータのリクエストは、インスタンスの利用可能性によっては数時間かかる場合があります。

SageMakerの基礎モデルの展開

SageMakerは、開発者が簡単に機械学習(ML)モデルを構築してトレーニングするための完全に管理されたMLサービスです。以下の手順を実行して、Amazon SageMaker Studioを使用してLlama 2 13b ChatとStable Diffusion 2.1の基礎モデルを展開してください:

  1. SageMakerドメインを作成します。手順については、クイックセットアップを使用してAmazon SageMakerドメインに登録を参照してください。

ドメインは、すべてのストレージをセットアップし、SageMakerにアクセスするためのユーザーを追加できるようにします。

  1. SageMakerコンソールで、ナビゲーションペインでスタジオを選択し、スタジオを開くを選択します。
  2. スタジオを起動したら、ナビゲーションペインのSageMaker JumpStartの下で、モデル、ノートブック、ソリューションを選択します。SageMaker JumpStart Console
  3. 検索バーで「Llama 2 13b Chat」と検索します。
  4. デプロイメントの構成で、SageMakerホスティングインスタンスにはml.g5.48xlargeを選択し、エンドポイント名にはmeta-textgeneration-llama-2-13b-fを入力します。
  5. デプロイを選択します。
SageMaker JumpStart Deployment Configuration

デプロイが成功すると、「In Service」の状態が表示されるはずです。

Llama Model Status
  1. 「モデル、ノートブック、ソリューション」ページで、Stable Diffusion 2.1を検索してください。
  2. 「Deployment Configuration」の下にある「SageMakerホスティングインスタンス」で、「ml.p3.2xlarge」を選択し、「エンドポイント名」には「jumpstart-dft-stable-diffusion-v2-1-base」と入力してください。
  3. 「デプロイ」を選択してください。
SageMaker JumpStart Deployment Configuration

デプロイが成功すると、「In Service」ステータスが表示されます。

Stable Diffusion Model Status

AWS CloudFormationを使用してLambdaとIAM権限をデプロイする

このセクションでは、CloudFormationスタックを起動してLambda関数をデプロイし、ユーザーリクエストを処理し、デプロイしたSageMakerエンドポイントを呼び出し、必要なIAM権限をデプロイする手順について説明します。以下の手順を完了してください。

  1. GitHubリポジトリに移動し、CloudFormationテンプレート(lambda.cfn.yaml)をローカルマシンにダウンロードしてください。
  2. CloudFormationコンソールで、「Create stack」ドロップダウンメニューを選択し、「With new resources (standard)」を選びます。
  3. 「Specify template」ページで、「Upload a template file」と「Choose file」を選んでください。
  4. ダウンロードしたlambda.cfn.yamlファイルを選択し、「Next」を選んでください。
  5. 「Specify stack details」ページで、スタック名と前提条件で取得したAPIキーを入力し、「Next」を選んでください。
  6. 「Configure stack options」ページで、「Next」を選んでください。
  7. 変更内容を確認し、承認して「Submit」を選んでください。

Web UIをセットアップする

このセクションでは、ローカルマシンでWeb UI(Cloudscape Design Systemを使用)を実行する手順について説明します:

  1. IAMコンソールで、ユーザーfunctionUrlに移動してください。

  2. 「Security Credentials」タブで、「Create access key」を選んでください。

  3. 「Access key best practices & alternatives」ページで、「Command Line Interface (CLI)」を選択し、「Next」を選んでください。

  4. 「Set description tag」ページで、「Create access key」を選んでください。

  5. アクセスキーとシークレットアクセスキーをコピーしてください。

  6. 「Done」を選んでください。

  7. GitHubリポジトリに移動し、react-llm-chat-studioコードをダウンロードしてください。

  8. 好きなIDEでフォルダを起動してターミナルを開いてください。

  9. src/configs/aws.jsonに移動し、取得したアクセスキーとシークレットアクセスキーを入力してください。

  10. ターミナルに以下のコマンドを入力してください:

    npm installnpm start
  11. ブラウザでhttp://localhost:3000を開き、モデルと対話を開始してください!

Chat Studioを使用するには、ドロップダウンメニューから基本モデルを選択し、テキストボックスにクエリを入力します。応答と一緒にAI生成の画像を取得するには、クエリの末尾に「画像付き」というフレーズを追加してください。

他のSageMaker基礎モデルを追加する

このソリューションの機能をさらに拡張するために、追加のSageMaker基礎モデルを含めることができます。各モデルは、SageMakerエンドポイントを呼び出す際に異なる入力および出力形式を期待するため、callSageMakerEndpoints Lambda関数でいくつかの変換コードを記述してモデルとのインタフェースを構築する必要があります。

このセクションでは、選択したモデルを追加するために必要な一般的な手順とコードの変更について説明します。なお、ステップ6から8ではPython言語の基本的な知識が必要です。

  1. SageMaker Studioで、選択したSageMaker基礎モデルをデプロイします。
  2. SageMaker JumpStartを選択し、Launch JumpStart assetsを選択します。
  3. 新しくデプロイしたモデルのエンドポイントを選択し、Open Notebookを選択します。
  4. ノートブックコンソールで、ペイロードパラメータを見つけます。

これらは、新しいモデルがSageMakerエンドポイントを呼び出す際に期待するフィールドです。以下のスクリーンショットはその例を示しています。

SageMaker Endpoint Configuration
  1. Lambdaコンソールで、callSageMakerEndpointsに移動します。
  2. 新しいモデルのためにカスタムの入力ハンドラを追加します。

次のスクリーンショットでは、Falcon 40B Instruct BF16とGPT NeoXT Chat Base 20B FP16の入力を変換しました。コピーしたペイロードパラメータに基づいて、カスタムパラメータのロジックを挿入して入力変換ロジックを追加できます。

Lambda Code Snippet
  1. ノートブックコンソールに戻り、query_endpointを見つけます。

この関数は、モデルの出力を変換して最終的なテキスト応答を抽出する方法を示しています。

SageMaker Endpoint Configuration
  1. query_endpointのコードを参照して、新しいモデルのためにカスタムの出力ハンドラを追加します。 Lambdaコード

  2. Deployを選択します。

  3. IDEを開き、react-llm-chat-studioコードを起動し、src/configs/models.jsonに移動します。

  4. モデル名とモデルエンドポイントを追加し、ステップ4のペイロードパラメータを以下の形式でpayloadの下に入力します:

    "add_model_name": {"endpoint_name": "add_model_enpoint","payload": {"add_payload_paramters_here"}},
  5. ブラウザをリフレッシュして、新しいモデルと対話を開始します!

Amplifyを使用してアプリケーションをデプロイする

Amplifyは、アプリケーションを素早く効率的にデプロイするための完全なソリューションです。このセクションでは、アプリケーションを他のユーザーと共有する場合、Amplifyを使用してChat StudioをAmazon CloudFrontディストリビューションにデプロイする手順について説明します。

  1. 以前に作成したreact-llm-chat-studioのコードフォルダに移動します。

  2. 以下のコマンドをターミナルに入力し、セットアップ手順に従ってください:

    npm install -g @aws-amplify/cliamplify configure
  3. 以下のコマンドを使用して新しいAmplifyプロジェクトを初期化します。­­プロジェクト名を入力し、デフォルトの設定を受け入れ、認証方法の選択時にAWSアクセスキーを選択します。

    amplify init
  4. 以下のコマンドを使用してAmplifyプロジェクトをホストします。プラグインモードの選択時にAmazon CloudFrontとS3を選択します。

    amplify hosting add
  5. 最後に、以下のコマンドでプロジェクトをビルドして展開します:

    amplify publish
  6. 展開が成功したら、ブラウザで提供されたURLを開き、モデルとインタラクションを開始しましょう!

クリーンアップ

将来の料金発生を避けるために、以下の手順を完了してください:

  1. AWS CloudFormationコンソールでスタックを削除します。
  2. SageMaker JumpStartエンドポイントを削除します。
  3. Amazon SageMakerドメインを削除します。

結論

この記事では、AWS上で展開されたLLMとのインタフェース用のWeb UIを作成する方法を説明しました。

このソリューションでは、ユーザーフレンドリーな方法でLLMと対話し、テストや質問を行い、必要に応じて画像やビデオのコラージュを取得することができます。

このソリューションをさまざまな方法で拡張できます。たとえば、追加の基礎モデルを統合したり、企業コンテンツの理解のためのMLパワードのインテリジェント検索を可能にするためにAmazon Kendraとの統合などがあります。

また、AWSで利用可能なさまざまな事前トレーニング済みLLMを試したり、SageMakerで独自のLLMを構築したりすることもできます。コメントで質問や結果をお知らせいただければと思います。楽しんでください!

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

機械学習

ソフトウェア開発の革命:AIとコードのダイナミックなデュオ

「AIとコードの融合により、タスクの自動化、コードの品質向上、開発の加速化によってソフトウェア開発が変革されます」

人工知能

Rows AI:エクセルスプレッドシートの終焉か?

Rows AIは、非常に複雑なデータ分析のための信じられないほどのスプレッドシートを数分で構築することができます

AIニュース

「アマゾン対Google対マイクロソフト:AIで医療を革新する競争」

人工知能(AI)を医療業界に統合することは、技術の進歩の時代においてますます普及しています。Amazon、Google、Microsoftな...

人工知能

「AIオートメーションエージェンシーのリードを増やす方法(月間100件以上のミーティング)」

「顧客を見つけることは数のゲームであり、多くの時間を要しますAIにすべての困難な仕事を任せない限り」

AI研究

「この新しいAI研究は、事前学習されたタンパク質言語モデルを幾何学的深層学習ネットワークに統合することで、タンパク質構造解析を進化させます」

科学的な探求には、魅力的で複雑な構造を持つタンパク質による魅力的で不思議な方法で重要な生物学的プロセスを支配する分子...

機械学習

このAI論文では、リーマン幾何学を通じて拡散モデルの潜在空間の理解に深入りします

人工知能や機械学習の人気が高まる中で、自然言語処理や自然言語生成などの主要なサブフィールドも高速に進化しています。最...