生成AIのユースケース(活用事例)が学べるWebサイト generative-ai-use-cases-jp のデプロイ方法をご紹介します。
generative-ai-use-cases-jpとは
generative-ai-use-cases-jpは、AWSが生成AIのユースケースをデモするためのReact製のWebサイトで、githubで無償公開されています。クローンして自社のAWS環境にデプロイすれば、社内データを読み込ませたRAGチャットなどさまざまな生成AIを試すことができます。デプロイの所要時間は10分程度です。
フロントエンドは React を用いて実装し、静的ファイルは Amazon CloudFront + Amazon S3 によって配信されています。バックエンドには Amazon API Gateway + AWS Lambda、認証には Amazon Congito を使用しています。また、LLM は Amazon Bedrock を使用します。RAG のデータソースには Amazon Kendra を利用しています。
※今回は点線以外のデプロイについて解説します。
※AWSアカウントが必要です。
※月額費用が発生します。
今回は手元にクローンせずにAWS環境のみでデプロイしたいと思います。
Cloud9 環境の作成
まずはAWSにサインインし、クラウドIDEの「Cloud9」の立ち上げましょう。Cloud9とはブラウザのみでEC2インスタンスを操作したり、ソースコードを編集できたりするIDE(統合開発環境)です。
AWSの検索バーにCloud9と入力して起動してください。
今までにCloud9を利用したことがない場合は次のような画面が表示されます。画面右手の 環境を作成 へ進みましょう。
環境作成画面が表示されたら次のように設定します。
- 名前: generative-ai-use-cases-jp
- 環境タイプ: 新しいEC2インスタンス
- インスタンスタイプ: t3.small (2 GiB RAM + 2 vCPU)
- プラットフォーム: Amazon Linux 2023
- ネットワーク設定: AWS Systems Manager (SSM)
このへんは慣れている環境・設定で問題ありません。
作成 へ進むとCloud9のTopページに戻るので、一覧に作成した環境があるか確認しましょう。
EC2の設定
次にCloud9で起動したEC2インスタンスの設定を行います。
前の手順が終わっていれば、起動中のEC2インスタンスの中に作成したものがあるはずです。ここではわかりやすく GenerativeAiUseCasesJp
という名前に変更しました。
IAMロールの変更
作成したインスタンスを選択肢、右上の インスタンスの状態
プルダウンから セキュリティ
-> IAMロール
を変更しましょう。
IAMロールの変更画面が表示されたら 新しいIAMロールを作成
をクリックします。
ロール作成画面に繊維したら、信頼されたエンティティタイプに AWSのサービス
を選択肢、ユースケースの検索バーに EC2
と入力してください。
ポリシー一覧が出てきたら AdministratorAccess
を選択します。 Amazon BedrockやAmazon Kendra、S3、Cloudfrontなどさまざまなサービスを操作するためです。
ロール名には GenerativeAiUseCasesJp
など適当な名前をつけてください。
さきほどのIAMロール変更画面に戻りますので、さきほど作成した GenerativeAiUseCasesJp
ロールをアタッチします。
EC2の設定はこれでおしまいです。
Cloud9の設定変更
Cloud9に戻ると次のような画面が表示されますので 開く
ボタンをクリックしてさきほど作成したgenerative-ai-use-cases-jpの環境を開いてみましょう。
起動したら次の通り、右上の 歯車(⚙)
-> AWS Settings
-> AWS managed temporary credentials
をオフにします。(デフォルトではオンになっています)これでCloud9の設定もおしまいです。
generative-ai-use-cases-jpのデプロイ
準備が整ったところでさっそくデプロイしましょう。
まずは次の画面のとおりに +
-> New Terminal
でターミナル画面をひらきます。
ターミナルが開いたらリポジトリをCloneします。
git clone https://github.com/aws-samples/generative-ai-use-cases-jp.git
Cloneが終わったらディレクトリを移動しましょう。
cd generative-ai-use-cases-jp/
次に必要なパッケージをインストールします。
完了したらAWSの設定を行います。
aws configure
AWS Access Key ID [None]:
AWS Secret Access Key [None]:
Default region name[None]: us-east-1
Default output format [None]:
Default region name以外は入力しなくても問題ありません。
なぜus-east-1リージョンか
2024年4月15日現在、東京リージョンではAmazon BedrockでClaudeやStable DiffusionなどのLLMの最新バージョンが利用できません。このため、generative-ai-use-cases-jpのデプロイ先は東京リージョンでも問題ありませんが、generative-ai-use-cases-jpが利用するサービスは最新版LLMが利用できるリージョンにしたほうがいいでしょう。もちろん最新版じゃなくてもよければ、東京や大阪リージョンでもデプロイして利用することはできます。今回はソースコードに記載されたus-east-1を使用します。
- us-east-1(バージニア北部): Anthropic Claude 3 Sonnet
- ap-northeast-1(東京): Anthropic Claude 2.1
LLMのリージョンを変える場合
modelsResion
を変更しましょう。
その場合は、リージョンに対応しているLLMのバージョンに合わせてmodelIds
も変更します。
Amazon Bedrockを有効化
使用するリージョンを選択した状態でAmazon Bedrockを有効化し、ClaudeのプロバイダであるAnthoropicにユースケースを申請しておきましょう。今回はClaudeとStable Diffusionを有効化しました。簡単な手続きで、数分で許可が降ります。
bootstrapしておきましょう
もしデプロイ先のリージョンでこれまでにCDKToolkitを使用したことがなければ、次のコマンドでbootstrapする必要があります。しておきましょう。
npx -w packages/cdk cdk bootstrap
デプロイ
次のコマンドでデプロイします。
途中で最新版の変更を反映させるか聞かれるので y
と入力しましょう。
デプロイ完了までに5~10分かかります。
デプロイ先URLの確認
デプロイが完了したらターミナルに以下のようなオプションが表示されます。
GenarativeAiUseCasesStack.WebUrl = https://xxxxxxx.cloudfront.net
WebURLにそのままアクセスするもよし、CloudfrontやRoute53などを設定し、ドメインを割り当ててもお使いいただけます。
使ってみよう
URLにアクセスすると次のような画面が表示されます。
アカウントを作る
タブからアカウントを作成しましょう。
アカウント作成後、次のような画面が表示されます。
チャットの デモ でLLMとチャットできることを確認しましょう。
エラーが出たら
もしチャットが失敗するようなら、選択したリージョンでAmazon Bedrockが有効化されていない可能性があります。AWSコンソールでリージョンを選択し、Amazon Bedrockを有効化したのち、モデルアクセス管理から使用するLLMを有効化してみてください。
概算費用
AWSのWorkshopの通りに手順を踏むと、下記の月額費用が発生します。
- 無料枠を考慮した際のコスト:320.7USD/月(概算)
- 無料枠を考慮しない場合のコスト:1143.67USD/月(概算)
RAGチャットをオンにすると、Amazon KendraのDeveloper Editionの費用 (810 USD/月)が発生しますが、Amazon Kendraは無料枠があります。最初の 30日間で最大750時間の無料利用枠です。Amazon Kendraを使用する場合のおもなコストはAmazon Bedrockです。Amazon Bedrockを使用しなければコストはスパイクしないはずです。もし気になるようなら数日ごとにコストをチェックしましょう。
本チュートリアルで構築される場合は、そこまでコストはかかりませんが、ご使用は自己責任でお願いします。