COLUMN

AWS Marketplaceを使用して生成AIアプリケーションをデプロイしてみよう

こんにちは、荒井です。

前回、「AWS Marketplaceを使用してサードパーティー製品をデプロイしてみよう」というコラムにおいて簡単なデプロイ方法について紹介しましたが、今回は少し応用的な利用として生成AIアプリケーションの構築を行いたいと思います。

AWS Marketplaceではサードパーティの製品としてMLモデルが多く出品されています。各業界に特化したものや画像生成に特化したものなど、様々なニーズに沿ったMLモデルを自身のAWS環境に簡単にデプロイすることが可能です。

そうしたMLモデルをどのように利用すればいいのか、具体的なイメージに繋がれば幸いです。

紹介する内容はご自身のAWSアカウントにおいても実施できますので、ぜひお試しいただければと思います。なお、今回紹介する内容については構築後に放置しているとかなり費用が発生してしまうため、必ずその日中にクリーンアップまで行うことをおすすめします。

※本コラムはAWS re:Invent2024におけるワークショップ「MKT304 AWS Marketplace: Deploy, govern & analyze spend of third-party software」を基に作成しています。また、今回紹介するこのWorkshopは現在AWSによって一般公開されており、以下からアクセスすることが可能です。

Lab: Deploy a GenAI application using pre-trained models from AWS Marketplace

NTT東日本では、AWSなどクラウドに関するお役立ち情報をメールマガジンにて発信していますので、ぜひこちらからご登録ください。

今回デプロイする生成AIアプリケーションのイメージ

まず最初に、今回AWS Marketplaceを使用してデプロイする生成AIアプリケーションで何ができるのか、イメージをお見せしたいと思います。

まず、デプロイしたMLモデルを使用してテキスト生成を行えます。

ここでは「可愛い犬もしくは青い空に関するポエムを書いてください」というプロンプトで実行し、結果としてポエムが作成されています。

デプロイしたMLモデルを使用して画像生成を行えます。

ここでは先ほど生成したポエムの一節をプロンプトに記載して実行し、結果として画像が生成されています。

テキストに対して音声を生成できます。

これはAWS MarketplaceからデプロイしたMLモデルではなく、Amazon Pollyを使用しています。

ここでは先ほど生成したポエムの一節に対して音声が生成されています。

上記のように生成したテキスト・画像・音声を組み合わせて、電子書籍やマーケティングキャンペーン、レストランのメニューを作成できます。

以下の動画の例では、「新しいリンゴ味のエナジードリンクのマーケティングキャンペーン」として広告を作成しています。生成された画像に合わせて自動的に音声が再生される、紙芝居のような広告が出来上がりました。

こうした生成AIアプリケーションAWS Marketplaceで事前学習されたMLモデルを組み合わせることで構築していきます。

ぜひ、自身のアカウントでもこの生成AIアプリケーションを構築して、自身の手で動かしてみてください。

それではさっそく構築方法について解説していきます。

NTT東日本では、AWSなどクラウドに関するお役立ち情報をメールマガジンにて発信していますので、ぜひこちらからご登録ください。

構築するアーキテクチャイメージ

今回AWS Marketplaceを利用して構築するアーキテクチャの概要図です。

ざっくりと構成要素について記載すると以下のようになります。

AWS Marketplaceから、「Arcee SuperNova Medius」および「Stable Diffusion XL 1.0」というMLモデルをサブスクライブしてAWS環境上にデプロイします。

  • 「Arcee SuperNova Medius」はArcee AIによって開発された大規模な言語モデルで、今回構築するサンプル アプリケーションにおいてテキスト生成として使用します。
  • 「Stable Diffusion XL 1.0」は、Stability AIが開発したText to Imageモデルで、今回構築するサンプルアプリケーションにおける画像生成として使用します。

各モデルに接続するために構築するアプリケーションは、既に用意されているCloudFormationテンプレートを用いて作成します。

事前準備

今回デプロイするMLモデルでは「ml.g5.12xlarge」と「ml.g5.2xlarge」のインスタンスモデルを使用するため、事前準備としてサービスクォータの制限解除を行います。

「Service Quotas」ページの左メニューから「AWSのサービス」を選択し、「SageMaker」で検索し表示された「Amazon SageMaker」を選択します。

「ml.g5.12xlarge for endpoint usage」で検索し、表示されたクォータを選択します。

「アカウントレベルの引き上げをリクエスト」を選択します。

「クォータ値を引き上げる」において「1」以上を選択し「リクエスト」を選択します。

「ml.g5.2xlarge for endpoint usage」についても同様にクォータ値の引き上げリクエストを行います。

後日クォータ値が引き上がるまで待ちます。クォータ値の引き上げリクエストについては「クォータリクエスト履歴」から確認できます。

完了するとこのようなメッセージがAWSから届きます。

これで事前準備は完了です。

AWS MarketplaceからMLモデルをデプロイする

AWS Marketplaceから「Arcee SuperNova Medius」と「Stable Diffusion XL 1.0」という2つのMLモデルをデプロイします。

Arcee SuperNova Mediusのデプロイ

「AWS Marketplace」ページにおいて「Arcee SuperNova Medius」と検索し、表示された「Arcee SuperNova Medius」を選択します。

説明など確認したうえで「Continue to Subscribe」を選択します。

「Accept offer」を選択します。

サブスクライブが完了するまで1分ほど待ち、完了したら「Continue to configuration」を選択します。

「launch method」は「AWS CloudFormation」を選択し、バージョンは最新版を選択し、リージョンを選択します。この例では、リージョンを「US-West(oregon)」を選択してます。

Service accessでは「Create and use a new service role」を選択し、「Launch CloudFormation Template」を選択します。

CloudFormationのページに遷移します。既にパラメータは記載してある状態なので、デフォルトのまま「スタックの作成」を選択します。

なお、インスタンスタイプがクォータ値引き上げを行ったインスタンスタイプであることが確認できます。

スタックの作成が「CREATE_COMPLETE」になるまで待ちます。

「リソース」タブから、SageMakerのエンドポイントやモデルが作成されたことが確認できます。

Stable Diffusion XL 1.0のデプロイ

「AWS Marketplace」ページにおいて「Stable Diffusion XL 1.0」と検索し、表示された「Stable Diffusion XL 1.0」を選択します。説明など確認したうえで「Continue to Subscribe」を選択します。

「Accept offer」を選択します。

サブスクライブが完了するまで1分ほど待ち、完了したら「Continue to configuration」を選択します。

「launch method」は「AWS CloudFormation」を選択し、バージョンは最新版を選択し、リージョンを選択します。この例では、リージョンを「US-West(oregon)」を選択してます。

Service accessでは「Create and use a new service role」を選択し、「Launch CloudFormation Template」を選択します。

CloudFormationのページに遷移します。既にパラメータは記載してある状態なので、デフォルトのまま「スタックの作成」を選択します。

なお、インスタンスタイプがクォータ値引き上げを行ったインスタンスタイプであることが確認できます。

スタックの作成が「CREATE_COMPLETE」になるまで待ちます。

「リソース」タブから、SageMakerのエンドポイントやモデルが作成されたことが確認できます。

フロントエンドアプリケーションをデプロイする

前の工程でMLモデルはデプロイできたため、それを使用するためのアプリケーションをデプロイしたいと思います。とはいっても難しい話ではなく、AWSのワークショップで用意されているCloudFormationテンプレートを使って簡単にデプロイすることが可能です。

以下のURLからスタックを起動することが可能です。

Amazon Web Services サインイン

※このCloudFormationテンプレートは、以下のAWSワークショップからもアクセスすることが可能です。

Lab: Deploy a GenAI application using pre-trained models from AWS Marketplace

URLを開くと以下のような「スタックのクイック作成」ページに遷移します。

ここの「InitialUserEmail」にご自身のメールアドレスを記載すると、アプリケーション構築後にログインするためのパスワードがこのメールアドレス宛に送られます。

他のパラメータはデフォルトでかまいません。

スタックの作成が「CREATE_COMPLETE」になるまで待ちます。

「出力」タブを選択して表示される「FrontendURL」に、このアプリケーションに接続するためのURLが記載されるため選択します。

パラメータをデフォルトにしている場合、Usernameは「demo-user」です。パスワードは先ほど設定したメールアドレス宛に届いていますのでそれを記載して「Sign in」を選択します。

このような画面でログインが成功すれば完了です。

NTT東日本では、AWSなどクラウドに関するお役立ち情報をメールマガジンにて発信していますので、ぜひこちらからご登録ください。

デプロイした生成AIアプリケーションを使ってみる

それでは実際に使ってみましょう。

アプリケーションの上部にあるタブから生成したいものを選ぶことができます。

まずは「Text」を選択してテキスト生成を行いたいと思います。

アプリケーションの右側に「Introduction」としてサンプルが用意されているので、それを基に実施してみます。「可愛い犬もしくは青い空に関するポエムを書いてください」という内容ですね。

「可愛い犬」に関するポエムが生成されました。

※生成されたポエムの日本語訳。

「足あとと遊び」

しっぽをひと振り、自由に揺れて、

犬の世界は喜びいっぱい。

くるくる回るふわふわの尾、

このお茶目な子犬は、地上の太陽みたいに駆け回る。

「Image」タブから、先ほど生成されたポエムの一節を基に画像生成することができます。

「Audio」タブから、ポエムを基に音声生成することも可能です。

また、こうした生成物を組み合わせて紙芝居形式の電子書籍やマーケティングキャンペーン、レストランのメニューを作成できます。これは「App」タブから作成できるのですが、まずはプロンプトとして渡すためのJSON形式の文章を「Text」タブから作成します。

「Text」タブからJSONを作成するためのプロンプトを記載して実行します。プロンプトは右側の「Introduction」に記載されているので、そのまま利用できます。

例えば、広告の作成についてはこのようなプロンプトになっています。

“新しいリンゴ味のエナジードリンクのマーケティングキャンペーンを作成してください。出力として、JSONを作成してください。このキャンペーンのタイトル("story")を設定し、5つの広告を作成してください。各広告について、マーケティング用のキャッチコピー("description")と、その広告の画像がどのようなものになるかを説明するテキスト("image_prompt")を作成してください。”

作成されたJSONを基に、「App」タブから実行します。

実行が完了すると下に「completed」と表示されるのでそこから生成物を確認することができます。結果はこのコラムの最初にお見せした映像のものが出来上がりました。

このように、AWS MarketplaceからデプロイしたMLモデルを使用して生成AIアプリケーションを構築することができました。

今回構築したのはサンプルアプリケーションですが、どのようにAWS MarketplaceからMLモデルをデプロイし、それをどのように使用するのかについて具体的なイメージが深まれば幸いです。

クリーンアップ

放っておくとSageMakerなどのリソースに対して費用が発生しますので、今回構築したリソース削除を行います。特にSageMakerはそのままにしておくと結構費用がかかりますので、忘れずにクリーンアップすることをおすすめします。

サブスクリプションのキャンセル

AWSコンソールにおける「AWS Marketplace」ページにおける「サブスクリプション管理」から、今回サブスクリプションした製品を選択します。

「アクション」から「サブスクリプションのキャンセル」を選択します。

CloudFormationスタックの削除

「CloudFormation」のページにおいて今回作成したスタックを選択し、「削除」を選択します。

IAMロール/IAMポリシーの削除

「IAM」ページの左メニューから「ロール」を選択し、今回作成されたロールを選択し、「削除」を選択します。

同じく「IAM」ページの左メニューから「ポリシー」を選択し、今回作成されたポリシーを選択し、「削除」を選択します。

以上でクリーンアップは完了です。

NTT東日本では、AWSなどクラウドに関するお役立ち情報をメールマガジンにて発信していますので、ぜひこちらからご登録ください。

まとめ

AWS Marketplaceを活用することで様々なMLモデルを簡単にデプロイし、自身の目的に合ったものを見つけて実装することができます。

AWS Marketplaceでは様々なMLモデルが出品されているので、うまく利用すれば業界に特化した生成AIアプリケーションなども構築できそうです。アプリケーションの部分は各MLモデルで共通のものを使用できると思いますので、様々なMLモデルをデプロイして目的に沿ってMLモデルを変えながら利用するといったこともできそうですね。

ぜひ、AWS Marketplaceから自身で利用したいMLモデルをデプロイし、実際に試してみてください!

NTT東日本においてもAWS Marketplaceへの製品出品を開始しました。

出品のラインナップはまだ少ないですが、今後NTT東日本のサービスもAWS Marketplaceから購入できるように整えていく予定です。

詳しくは「AWS Marketplaceにおける提供について」をご確認ください。

ページ上部へ戻る

相談無料!プロが中立的にアドバイスいたします

クラウド・AWS・Azureでお困りの方はお気軽にご相談ください。