開発者用にローカル環境を構築する手順を説明します。
AWS が初めての場合、 AWS 、特に本プレイグラウンドで利用している AWS のサービスについて一通り理解しておくことを推奨します。 AWS に触れるのは今回が初めて、という場合は AWS Certified Solutions Architect – Associate 認定 の資格取得を検討ください。勉強になるのはもちろん、 2022 年で取りたい資格 No.1 になっているので今後のキャリアにとって損はないと思います。
勉強のための資料は次の資料をご参照ください。
- (準備中)
フロントエンドの構築に利用している React については、 React の公式ドキュメントが非常に丁寧に書かれているので一通り流してみてください。
README.md のデプロイのセクションのセットアップを行ってください。
次に、ローカルでアプリケーションを実行し開発する方法を示します。
Unix 系コマンドが使えるユーザー (Linux, MacOS 等)
npm run web:devw
その他のユーザー (Windows 等)
デプロイ完了時に表示される Outputs から API の Endpoint (Output key = APIApiEndpoint...)、Cognito User Pool ID (Output key = AuthUserPoolId...)、Cognito User Pool Client ID (Output Key = AuthUserPoolClientId...) 、Cognito Identity Pool ID (Output Key = AuthIdPoolId...)、レスポンスストリーミングの Lambda 関数の ARN (Output Key = APIPredictStreamFunctionArn...) を取得します。
デプロイ時の出力が消えている場合、CloudFormation の GenerativeAiUseCasesStack をクリックして Outputs タブから確認できます。 それらの値を以下のように環境変数に設定してください。
export VITE_APP_API_ENDPOINT=<API Endpoint>
export VITE_APP_USER_POOL_ID=<Cognito User Pool ID>
export VITE_APP_USER_POOL_CLIENT_ID=<Cognito User Pool Client ID>
export VITE_APP_IDENTITY_POOL_ID=<Cognito Identity Pool ID>
export VITE_APP_PREDICT_STREAM_FUNCTION_ARN=<Function ARN>
export VITE_APP_REGION=<デプロイしたリージョン>
具体例は以下です。
export VITE_APP_API_ENDPOINT=https://xxxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/api/
export VITE_APP_USER_POOL_ID=ap-northeast-1_xxxxxxxxx
export VITE_APP_USER_POOL_CLIENT_ID=abcdefghijklmnopqrstuvwxyz
export VITE_APP_IDENTITY_POOL_ID=ap-northeast-1:xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxxxxxxx
export VITE_APP_PREDICT_STREAM_FUNCTION_ARN=arn:aws:lambda:ap-northeast-1:000000000000:function:FunctionName
export VITE_APP_REGION=ap-northeast-1
続いて以下のコマンドを実行します。
npm run web:dev
正常に実行されれば http://localhost:8080 で起動しますので、ブラウザからアクセスしてみてください。
次にバックエンドを開発する時の方法を示します。
CDK Watch
CDK ではバックエンドの変更をリアルタイムにデプロイし反映させることが可能です。
npm run cdk:watch
環境を指定する際は、-c
で stage
を使用してください。
npm run cdk:watch -- -c stage=<stage>
裏ではファイルの変更がモニタされ Lambda への変更はホットスワップデプロイが実行され、CDK の更新なしにバックエンドにデプロイすることが可能です。その他の変更は通常の CloudFormation の完全なデプロイにフォールバックします。 詳細ついては CDK Workshop をご確認ください。
プレイグラウンドで扱えるモデルは、 Amazon SageMaker にデプロイしています。具体的には、 Deep Java Library (DJL) を使用した SageMaker Endpoint に対応しています。
- (SageMaker Endpoint の動作確認方法について記載)
モデルの変更の反映は、一度落として再起動しないと反映されないので注意してください
packages/cdk/models
に新しいフォルダを追加しserving.properties
を追加する。- 他のモデルを参考にパラメータを変更してください
- DJL のパラメータの設定の仕方や Dependency の追加、推論コードのオーバーライド方法については ドキュメントをご確認ください。
./package_models.sh
を実行し、設定ファイルを圧縮する (SageMaker CDK で対応しているのがtar
ファイルのみのため) 。packages/cdk/lib/construct/llm.ts
にモデルのパスを追加する。
{
name: 'llm-jp-13b-instruct-full-jaster-dolly-oasst-v1',
path: 'models/llm-jp-13b-instruct-full-jaster-dolly-oasst-v1.0.tar.gz',
prompt_template_name: 'llmJp',
},
npm run cdk:deploy
でモデルをデプロイする。- モデルを反映させるためにはエンドポイントを再起動する必要があるため、一度エンドポイントを落として立ち上げ直す。
このソリューションはデフォルトでセルフサインアップが無効化してあります。セルフサインアップを有効にするには、cdk.jsonを開き、selfSignUpEnabled
を true
に切り替えてから再デプロイしてください。
"context": {
"ragEnabled": false,
"selfSignUpEnabled": false, // false -> true で有効化
"@aws-cdk/aws-lambda:recognizeLayerVersion": true,
このレポジトリで GitHub Actions を用いた CI/CD を利用する場合、用意されている Cloudformation テンプレートを利用して IAM 関連のセットアップを
自動で行うことができます。レポジトリを Clone したディレクトリにて、 GitHub_ORG_NAME
と GitHub_REPO_NAME
を適切に設定して以下のコマンドを実行してください。
※ コマンドの実行には適切な権限が必要です。
stack_name="oidc-setup"
aws cloudformation create-stack --capabilities CAPABILITY_NAMED_IAM --stack-name $stack_name --template-body file://oidc-setup.yaml --parameters ParameterKey=GithubOrg,ParameterValue=<GitHub_ORG_NAME> ParameterKey=RepoName,ParameterValue=<GitHub_REPO_NAME>
aws cloudformation wait stack-create-complete --stack-name $stack_name
outputs=$(aws cloudformation describe-stacks --stack-name $stack_name --query 'Stacks[0].Outputs' --output text)
echo "Stack Outputs:"
echo "$outputs"
実行したターミナルに IAM Role の arn が出力されます。この後の手順で必要になるので、メモしておきます。 追加で GitHub 側での設定が必要です。追加の手続きは /docs/CICD_SETUP.md をご確認ください。