機械学習(ML)パラダイムシフトの種子は何十年も存在してきましたが、事実上無限の計算能力、データの大幅な急増、MLテクノロジーの急速な進歩により、業界全体の顧客がMLテクノロジーを急速に採用および使用してビジネスを変革しています。
つい最近、生成AIアプリケーションは、すべての人の注意と想像力を捉えています。私たちは、MLの広範な採用のエキサイティングな変曲点に本当にあり、すべての顧客体験とアプリケーションが生成AIで再発明されると考えています。
生成AIは、会話、ストーリー、画像、ビデオ、音楽など、新しいコンテンツやアイデアを作成できるAIの一種です。すべてのAIと同様に、生成AIはMLモデルを搭載しています。これは、データの膨大なコーパスで事前に訓練され、一般的に基礎モデル(FMS)と呼ばれる非常に大きなモデルです。
FMのサイズと汎用性により、センチメントのテキストの分析、画像の分類、トレンドの予測など、特定のタスクを実行する従来のMLモデルとは異なります。

Tradition ML Modelsを使用すると、特定のタスクのそれぞれを達成するために、ラベル付きデータを収集し、モデルをトレーニングし、そのモデルを展開する必要があります。基礎モデルを使用すると、各モデルのラベル付きデータを収集し、複数のモデルをトレーニングする代わりに、同じ事前に訓練されたFMを使用してさまざまなタスクを適応させることができます。また、FMSをカスタマイズして、モデルをゼロからトレーニングするために必要なデータと計算のみを使用して、ビジネスと区別しているドメイン固有の機能を実行することもできます。
生成AIには、コンテンツの作成と消費方法に革命をもたらすことにより、多くの産業を混乱させる可能性があります。オリジナルのコンテンツの生成、コード生成、カスタマーサービスの強化、ドキュメントの要約は、生成AIの典型的なユースケースです。
Amazon Sagemaker Jumpstartは、MLを開始するのに役立つ幅広い問題タイプの事前に訓練されたオープンソースモデルを提供します。展開する前に、これらのモデルを徐々にトレーニングおよびチューニングできます。また、Jumpstartは、一般的なユースケース用のインフラストラクチャをセットアップするソリューションテンプレートを提供し、Amazon Sagemakerを使用したML用の実行可能なノートブックも提供します。
600を超える事前に訓練されたモデルが利用可能で、毎日成長しているため、ジャンプスタートにより、開発者は最先端のMLテクニックを制作ワークフローに迅速かつ簡単に組み込むことができます。 Amazon Sagemaker StudioのJumpstartランディングページから、事前に訓練されたモデル、ソリューションテンプレート、および例にアクセスできます。 Sagemaker Python SDKを使用してJumpstartモデルにアクセスすることもできます。プログラムでジャンプスタートモデルを使用する方法については、前処理されたモデルを使用したSagemaker Jumpstartアルゴリズムの使用を参照してください。
2023年4月、AWSはAmazon Bedrockを発表しました。これは、AI21 Labs、人類、安定性AIを含むスタートアップの事前訓練を受けたモデルを介して生成AI搭載アプリを構築する方法を提供します。 Amazon Bedrockは、AWSによって社内で訓練されたモデルのファミリーであるTitan Foundation Modelsへのアクセスも提供しています。 Amazon Bedrockのサーバーレスエクスペリエンスにより、ニーズに合った適切なモデルを簡単に見つけ、すぐに開始し、FMSを独自のデータで個人的にカスタマイズし、慣れ親しんでいるAWSツールや機能を使用してアプリケーションに簡単に統合して展開できます(Amazon Sagemaker実験などのSagon Sagemaker ExperimentなどのSagemaker MLの統合を含む)。 インフラストラクチャー。
この投稿では、AWS Cloud Development Kit(AWS CDK)を使用して、JumpStartの画像とテキストの生成AIモデルを展開する方法を示します。 AWS CDKは、Pythonなどの馴染みのあるプログラミング言語を使用してクラウドアプリケーションリソースを定義するオープンソースソフトウェア開発フレームワークです。
画像生成には安定した拡散モデルと、自然言語理解(NLU)にFLAN-T5-XLモデルと、ジャンプスタートのハグ顔のテキスト生成を使用します。
このWebアプリケーションは、MLとデータサイエンス向けの美しいカスタムWebアプリを簡単に作成および共有できるオープンソースPythonライブラリであるRiremlitに構築されています。 Aws Fargateを使用してAmazon Elastic Container Service(Amazon ECS)を使用してWebアプリケーションをホストし、アプリケーションロードバランサーからアクセスできます。 Fargateは、Amazon ECSで使用して、サーバー、クラスター、または仮想マシンを管理することなくコンテナを実行できるテクノロジーです。生成AIモデルのエンドポイントは、Amazon Elastic Container Registry(Amazon ECR)のJumpstart画像から起動されます。モデルデータは、JumpStartアカウントにAmazon Simple Storage Service(Amazon S3)に保存されます。 Webアプリケーションは、次の図に示すように、Amazon API GatewayとAWS Lambda機能を介してモデルと対話します。

API Gatewayは、Webアプリケーションと他のクライアントに標準のRestfulインターフェイスを提供し、モデルとインターフェイスするLambda関数をシールドします。これにより、モデルを消費するクライアントアプリケーションコードが簡素化されます。この例では、APIゲートウェイのエンドポイントが公開されているため、このアーキテクチャを拡張して異なるAPIアクセスコントロールを実装し、他のアプリケーションと統合できる可能性があります。
この投稿では、次の手順を説明します。
この投稿の最後にある付録のこのプロジェクトのコードの概要を説明します。
次の前提条件が必要です。
このチュートリアルにインフラストラクチャをローカルコンピューターから展開するか、展開ワークステーションとしてAWS Cloud9を使用できます。 AWS Cloud9には、AWS CLI、AWS CDK、Dockerが事前ロードされています。 AWS Cloud9を選択する場合は、AWSコンソールから環境を作成します。
この投稿を完了するための推定コストは50ドルです。これは、リソースを8時間稼働させたままにしておくと仮定します。この投稿で作成したリソースを削除して、継続的な料金を避けてください。
ローカルマシンにAWS CLIをまだ持っていない場合は、AWS CLIの最新バージョンのインストールまたは更新とAWS CLIの構成を参照してください。
次のノードパッケージマネージャーコマンドを使用して、AWS CDK Toolkitをグローバルにインストールします。
npm install -g aws-cdk-lib@latest
次のコマンドを実行して、正しいインストールを確認し、AWS CDKのバージョン番号を印刷します。
cdk --version
ローカルマシンにDockerがインストールされていることを確認してください。次のコマンドを発行して、バージョンを確認します。
docker --version
ローカルマシンで、次のコマンドでAWS CDKアプリケーションをクローン化します。
git clone https://github.com/aws-samples/generative-ai-sagemaker-cdk-demo.git
プロジェクトフォルダーに移動します。
cd generative-ai-sagemaker-cdk-demo
アプリケーションを展開する前に、ディレクトリ構造を確認しましょう。
.
├── LICENSE
├── README.md
├── app.py
├── cdk.json
├── code
│ ├── lambda_txt2img
│ │ └── txt2img.py
│ └── lambda_txt2nlu
│ └── txt2nlu.py
├── construct
│ └── sagemaker_endpoint_construct.py
├── images
│ ├── architecture.png
│ ├── ...
├── requirements-dev.txt
├── requirements.txt
├── source.bat
├── stack
│ ├── __init__.py
│ ├── generative_ai_demo_web_stack.py
│ ├── generative_ai_txt2img_sagemaker_stack.py
│ ├── generative_ai_txt2nlu_sagemaker_stack.py
│ └── generative_ai_vpc_network_stack.py
├── tests
│ ├── __init__.py
│ └── ...
└── web-app
├── Dockerfile
├── Home.py
├── configs.py
├── img
│ └── sagemaker.png
├── pages
│ ├── 2_Image_Generation.py
│ └── 3_Text_Generation.py
└── requirements.txt stackフォルダーには、AWS CDKアプリケーションの各スタックのコードが含まれています。 codeフォルダーには、Amazon Lambda関数のコードが含まれています。リポジトリには、フォルダーweb-appの下にあるWebアプリケーションも含まれています。
cdk.jsonファイルは、AWS CDK Toolkitにアプリケーションの実行方法を指示します。
このアプリケーションはus-east-1地域でテストされましたが、必要なサービスと推論インスタンスタイプml.g4dn.4xlargeを備えた任意の地域で動作するはずです。
このプロジェクトは、標準のPythonプロジェクトのように設定されています。次のコードを使用して、Python仮想環境を作成します。
python3 -m venv .venv
次のコマンドを使用して、仮想環境をアクティブにします。
source .venv/bin/activate
Windowsプラットフォームを使用している場合は、次のように仮想環境をアクティブにします。
.venvScriptsactivate.bat
仮想環境がアクティブになったら、PIPを最新バージョンにアップグレードします。
python3 -m pip install --upgrade pip
必要な依存関係をインストールします。
pip install -r requirements.txt
AWS CDKアプリケーションを展開する前に、アカウントと展開する地域のスペースをブートストラップする必要があります。デフォルトの領域でブートストラップするには、次のコマンドを発行します。
cdk bootstrap
特定のアカウントと地域に展開する場合は、次のコマンドを発行します。
cdk bootstrap aws://ACCOUNT-NUMBER/REGION
このセットアップの詳細については、AWS CDKの開始をご覧ください。
AWS CDKアプリケーションには、次の図に示すように複数のスタックが含まれています。

次のコマンドを使用して、CDKアプリケーションのスタックをリストできます。
cdk list次の出力を取得する必要があります。
GenerativeAiTxt2imgSagemakerStack
GenerativeAiTxt2nluSagemakerStack
GenerativeAiVpcNetworkStack
GenerativeAiDemoWebStack
その他の便利なAWS CDKコマンド:
cdk ls -アプリ内のすべてのスタックをリストしますcdk synth合成されたAWS CloudFormationテンプレートを放出しますcdk deploy - このスタックをデフォルトのAWSアカウントと地域に展開しますcdk diff展開されたスタックを現在の状態と比較しますcdk docs - AWS CDKドキュメントを開きます次のセクションでは、AWS CDKアプリケーションの展開方法を示します。
AWS CDKアプリケーションは、ワークステーション構成に基づいてデフォルトの領域に展開されます。特定の地域で展開を強制したい場合は、それに応じてAWS_DEFAULT_REGION環境変数を設定します。
この時点で、AWS CDKアプリケーションを展開できます。最初にVPCネットワークスタックを起動します:
cdk deploy GenerativeAiVpcNetworkStack
プロンプトが表示された場合は、 yを入力して展開を続行します。スタックにプロビジョニングされているAWSリソースのリストが表示されます。このステップは完了するまでに約3分かかります。
次に、Webアプリケーションスタックを起動します。
cdk deploy GenerativeAiDemoWebStack
スタックを分析した後、AWS CDKはスタックにリソースリストを表示します。 Yを入力して、展開を続行します。このステップには約5分かかります。

出力からWebApplicationServiceURLメモしてください。後で使用します。また、 GenerativeAiDemoWebStackスタック出力の下で、CloudFormationコンソールで後で取得することもできます。
次に、画像生成AIモデルエンドポイントスタックを起動します。
cdk deploy GenerativeAiTxt2imgSagemakerStack
このステップには約8分かかります。画像生成モデルのエンドポイントが展開されているため、使用できます。
最初の例は、テキストプロンプトから高品質の画像を作成できる強力な生成モデリング手法である安定した拡散を利用する方法を示しています。
GenerativeAiDemoWebStackの出力からWebApplicationServiceURLを使用してWebアプリケーションにアクセスします。 
ナビゲーションペインで、画像生成を選択します。
Sagemakerのエンドポイント名とAPI GW URLフィールドは事前に入力されますが、必要に応じて画像の説明のプロンプトを変更できます。
生成画像を選択します。

アプリケーションは、セーゲメーカーのエンドポイントに電話をかけます。数秒かかります。画像の説明に劇場沿いの写真が表示されます。

2番目の例は、ファンデーションまたは大規模な言語モデル(LLM)であるFlan-T5-XLモデルを使用して、テキスト生成のコンテキスト学習を達成しながら、幅広い自然言語理解(NLU)および自然言語生成(NLG)タスクに対処することを中心にしています。
一部の環境では、一度に起動できるエンドポイントの数を制限する場合があります。この場合、一度に1つのSagemakerエンドポイントを起動できます。 AWS CDKアプリでSagemakerエンドポイントを停止するには、展開されたエンドポイントスタックを破壊し、他のエンドポイントスタックを起動する前に必要です。画像生成AIモデルのエンドポイントを倒すには、次のコマンドを発行します。
cdk destroy GenerativeAiTxt2imgSagemakerStack
次に、テキスト生成AIモデルエンドポイントスタックを起動します。
cdk deploy GenerativeAiTxt2nluSagemakerStack
プロンプトにyを入力します。
テキスト生成モデルのエンドポイントスタックが起動したら、次の手順を完了します。

コンテキストの下には、ドロップダウンメニューオプションにいくつかの事前配置クエリがあります。

また、入力クエリフィールドに独自のクエリを入力して、生成応答を選択することもできます。

AWS CloudFormationコンソールで、ナビゲーションペインのスタックを選択して、展開されたスタックを表示します。

Amazon ECSコンソールでは、クラスターページにクラスターが表示されます。

AWS Lambdaコンソールでは、機能ページに関数を確認できます。

APIゲートウェイコンソールでは、 APIページのAPIゲートウェイエンドポイントを確認できます。

Sagemakerコンソールでは、エンドポイントページに展開されたモデルエンドポイントを見ることができます。

スタックが起動すると、いくつかのパラメーターが生成されます。これらは、AWS Systems Managerパラメーターストアに保存されます。それらを表示するには、AWS Systems Managerコンソールのナビゲーションペインにパラメーターストアを選択します。

不必要なコストを回避するには、ワークステーションの次のコマンドで作成されたすべてのインフラストラクチャをクリーンアップしてください。
cdk destroy --all
プロンプトにyを入力します。このステップには約10分かかります。すべてのリソースがコンソールで削除されているかどうかを確認してください。また、Amazon S3コンソールのAWS CDKによって作成されたAssets S3バケットと、Amazon ECRのアセットリポジトリも削除します。
この投稿で示されているように、AWS CDKを使用して、JumpStartに生成AIモデルを展開できます。 Streamlit、Lambda、およびAPI Gatewayを搭載したユーザーインターフェイスを使用して、画像生成の例とテキスト生成の例を示しました。
ジャンプスタートで事前に訓練されたAIモデルを使用して、生成AIプロジェクトを構築できるようになりました。また、このプロジェクトを拡張して、ユースケースのファンデーションモデルを微調整し、APIゲートウェイエンドポイントへの制御アクセスを行うこともできます。
ソリューションをテストし、GitHubのプロジェクトに貢献することをお勧めします。
このサンプルコードは、変更されたMITライセンスの下で利用可能になります。詳細については、ライセンスファイルを参照してください。また、ハグする顔の安定した拡散モデルとFlan-T5-XLモデルのそれぞれのライセンスを確認します。
Hantzley Tauckoorは、シンガポールに拠点を置くAPJパートナーソリューションアーキテクチャリーダーです。彼は、ソリューションアーキテクチャ、ビジネス開発、販売戦略、コンサルティング、リーダーシップなど、複数の機能分野にまたがるICT業界で20年の経験があります。彼は、パートナーが共同ソリューションを開発し、技術的能力を構築し、顧客がアプリケーションをAWSに移行して近代化するにつれて、実装段階を介してそれらを導くことができるシニアソリューションアーキテクトのチームを率いています。仕事の外で、彼は家族と過ごす時間、映画を見て、ハイキングを楽しんでいます。
Kwonyul Choiは、ソウルに拠点を置く韓国の美容ケアプラットフォームのスタートアップであるBabitalkのCTOです。この役割に先立ち、KownyulはAWS CDKとAmazon Sagemakerに焦点を当てたAWSのソフトウェア開発エンジニアとして働いていました。
Arunprasath Shankarは、AWSを備えたAI/MLスペシャリストソリューションアーキテクトのシニアであり、グローバルな顧客がAIソリューションをクラウドで効果的かつ効率的に拡大するのを支援しています。余暇には、ArunはSF映画を見たり、クラシック音楽を聴いたりしています。
Satish Upretiは、APJのパートナー組織におけるPSAとセキュリティSMEの移行リードです。 Satishには、オンプレミスのプライベートクラウドとパブリッククラウドテクノロジーにまたがる20年の経験があります。 2020年8月にAWSに移行スペシャリストとして参加して以来、彼は複雑な移行を計画および実施するために、AWSパートナーに広範な技術的アドバイスとサポートを提供しています。
このセクションでは、このプロジェクトのコードの概要を説明します。
AWS CDKアプリケーション
メインAWS CDKアプリケーションは、ルートディレクトリのapp.pyファイルに含まれています。プロジェクトは複数のスタックで構成されているため、スタックをインポートする必要があります。
#!/usr/bin/env python3
import aws_cdk as cdk
from stack . generative_ai_vpc_network_stack import GenerativeAiVpcNetworkStack
from stack . generative_ai_demo_web_stack import GenerativeAiDemoWebStack
from stack . generative_ai_txt2nlu_sagemaker_stack import GenerativeAiTxt2nluSagemakerStack
from stack . generative_ai_txt2img_sagemaker_stack import GenerativeAiTxt2imgSagemakerStack生成AIモデルを定義し、Sagemakerから関連するURIを取得します。
from script . sagemaker_uri import *
import boto3
region_name = boto3 . Session (). region_name
env = { "region" : region_name }
#Text to Image model parameters
TXT2IMG_MODEL_ID = "model-txt2img-stabilityai-stable-diffusion-v2-1-base"
TXT2IMG_INFERENCE_INSTANCE_TYPE = "ml.g4dn.4xlarge"
TXT2IMG_MODEL_TASK_TYPE = "txt2img"
TXT2IMG_MODEL_INFO = get_sagemaker_uris ( model_id = TXT2IMG_MODEL_ID ,
model_task_type = TXT2IMG_MODEL_TASK_TYPE ,
instance_type = TXT2IMG_INFERENCE_INSTANCE_TYPE ,
region_name = region_name )
#Text to NLU image model parameters
TXT2NLU_MODEL_ID = "huggingface-text2text-flan-t5-xl"
TXT2NLU_INFERENCE_INSTANCE_TYPE = "ml.g4dn.4xlarge"
TXT2NLU_MODEL_TASK_TYPE = "text2text"
TXT2NLU_MODEL_INFO = get_sagemaker_uris ( model_id = TXT2NLU_MODEL_ID ,
model_task_type = TXT2NLU_MODEL_TASK_TYPE ,
instance_type = TXT2NLU_INFERENCE_INSTANCE_TYPE ,
region_name = region_name )関数get_sagemaker_uris 、Amazonジャンプスタートからすべてのモデル情報を取得します。 Script/sagemaker_uri.pyを参照してください。
次に、スタックをインスタンスします。
app = cdk . App ()
network_stack = GenerativeAiVpcNetworkStack ( app , "GenerativeAiVpcNetworkStack" , env = env )
GenerativeAiDemoWebStack ( app , "GenerativeAiDemoWebStack" , vpc = network_stack . vpc , env = env )
GenerativeAiTxt2nluSagemakerStack ( app , "GenerativeAiTxt2nluSagemakerStack" , env = env , model_info = TXT2NLU_MODEL_INFO )
GenerativeAiTxt2imgSagemakerStack ( app , "GenerativeAiTxt2imgSagemakerStack" , env = env , model_info = TXT2IMG_MODEL_INFO )
app . synth ()最初に起動するスタックは、VPCスタック、 GenerativeAiVpcNetworkStackです。 Webアプリケーションスタック、 GenerativeAiDemoWebStackは、VPCスタックに依存しています。依存関係は、 vpc=network_stack.vpcを通過するパラメーターを介して行われます。
完全なコードについては、app.pyを参照してください。
VPCネットワークスタック
GenerativeAiVpcNetworkStackスタックでは、2つの可用性ゾーン(AZS)にまたがるパブリックサブネットとプライベートサブネットを備えたVPCを作成します。
self . output_vpc = ec2 . Vpc ( self , "VPC" ,
nat_gateways = 1 ,
ip_addresses = ec2 . IpAddresses . cidr ( "10.0.0.0/16" ),
max_azs = 2 ,
subnet_configuration = [
ec2 . SubnetConfiguration ( name = "public" , subnet_type = ec2 . SubnetType . PUBLIC , cidr_mask = 24 ),
ec2 . SubnetConfiguration ( name = "private" , subnet_type = ec2 . SubnetType . PRIVATE_WITH_EGRESS , cidr_mask = 24 )
]
)完全なコードについては、/stack/generative_ai_vpc_network_stack.pyを参照してください。
デモWebアプリケーションスタック
GenerativeAiDemoWebStackスタックでは、WebアプリケーションがSagemakerモデルのエンドポイントと相互作用するLambda関数とそれぞれのAmazon APIゲートウェイエンドポイントを起動します。次のコードスニペットを参照してください。
# Defines an AWS Lambda function for Image Generation service
lambda_txt2img = _lambda . Function (
self , "lambda_txt2img" ,
runtime = _lambda . Runtime . PYTHON_3_9 ,
code = _lambda . Code . from_asset ( "code/lambda_txt2img" ),
handler = "txt2img.lambda_handler" ,
role = role ,
timeout = Duration . seconds ( 180 ),
memory_size = 512 ,
vpc_subnets = ec2 . SubnetSelection (
subnet_type = ec2 . SubnetType . PRIVATE_WITH_EGRESS
),
vpc = vpc
)
# Defines an Amazon API Gateway endpoint for Image Generation service
txt2img_apigw_endpoint = apigw . LambdaRestApi (
self , "txt2img_apigw_endpoint" ,
handler = lambda_txt2img
)Webアプリケーションはコンテナ化されており、Amazon ECSでFargateでホストされています。次のコードスニペットを参照してください。
# Create Fargate service
fargate_service = ecs_patterns . ApplicationLoadBalancedFargateService (
self , "WebApplication" ,
cluster = cluster , # Required
cpu = 2048 , # Default is 256 (512 is 0.5 vCPU, 2048 is 2 vCPU)
desired_count = 1 , # Default is 1
task_image_options = ecs_patterns . ApplicationLoadBalancedTaskImageOptions (
image = image ,
container_port = 8501 ,
),
#load_balancer_name="gen-ai-demo",
memory_limit_mib = 4096 , # Default is 512
public_load_balancer = True ) # Default is True完全なコードについては、/stack/generative_ai_demo_web_stack.pyを参照してください。
画像生成SAGEMAKERモデルエンドポイントスタック
GenerativeAiTxt2imgSagemakerStackスタックは、Sagemaker Jumpstartから画像生成モデルのエンドポイントを作成し、AWS Systems Managerパラメーターストアにエンドポイント名を保存します。このパラメーターは、Webアプリケーションで使用されます。次のコードを参照してください。
endpoint = SageMakerEndpointConstruct ( self , "TXT2IMG" ,
project_prefix = "GenerativeAiDemo" ,
role_arn = role . role_arn ,
model_name = "StableDiffusionText2Img" ,
model_bucket_name = model_info [ "model_bucket_name" ],
model_bucket_key = model_info [ "model_bucket_key" ],
model_docker_image = model_info [ "model_docker_image" ],
variant_name = "AllTraffic" ,
variant_weight = 1 ,
instance_count = 1 ,
instance_type = model_info [ "instance_type" ],
environment = {
"MMS_MAX_RESPONSE_SIZE" : "20000000" ,
"SAGEMAKER_CONTAINER_LOG_LEVEL" : "20" ,
"SAGEMAKER_PROGRAM" : "inference.py" ,
"SAGEMAKER_REGION" : model_info [ "region_name" ],
"SAGEMAKER_SUBMIT_DIRECTORY" : "/opt/ml/model/code" ,
},
deploy_enable = True
)
ssm . StringParameter ( self , "txt2img_sm_endpoint" , parameter_name = "txt2img_sm_endpoint" , string_value = endpoint . endpoint_name )完全なコードについては、/stack/generative_ai_txt2img_sagemaker_stack.pyを参照してください。
NLUおよびテキスト生成セージメーカーモデルエンドポイントスタック
GenerativeAiTxt2nluSagemakerStackスタックは、JumpStartからNLUおよびテキスト生成モデルのエンドポイントを作成し、Systems Managerパラメーターストアにエンドポイント名を保存します。このパラメーターは、Webアプリケーションでも使用されます。次のコードを参照してください。
endpoint = SageMakerEndpointConstruct ( self , "TXT2NLU" ,
project_prefix = "GenerativeAiDemo" ,
role_arn = role . role_arn ,
model_name = "HuggingfaceText2TextFlan" ,
model_bucket_name = model_info [ "model_bucket_name" ],
model_bucket_key = model_info [ "model_bucket_key" ],
model_docker_image = model_info [ "model_docker_image" ],
variant_name = "AllTraffic" ,
variant_weight = 1 ,
instance_count = 1 ,
instance_type = model_info [ "instance_type" ],
environment = {
"MODEL_CACHE_ROOT" : "/opt/ml/model" ,
"SAGEMAKER_ENV" : "1" ,
"SAGEMAKER_MODEL_SERVER_TIMEOUT" : "3600" ,
"SAGEMAKER_MODEL_SERVER_WORKERS" : "1" ,
"SAGEMAKER_PROGRAM" : "inference.py" ,
"SAGEMAKER_SUBMIT_DIRECTORY" : "/opt/ml/model/code/" ,
"TS_DEFAULT_WORKERS_PER_MODEL" : "1"
},
deploy_enable = True
)
ssm . StringParameter ( self , "txt2nlu_sm_endpoint" , parameter_name = "txt2nlu_sm_endpoint" , string_value = endpoint . endpoint_name )完全なコードについては、/stack/generative_ai_txt2nlu_sagemaker_stack.pyを参照してください。
Webアプリケーション
Webアプリケーションは /Web-Appディレクトリにあります。 DockerFileに従ってコンテナ化された流線照明アプリケーションです。
FROM --platform=linux/x86_64 python:3.9
EXPOSE 8501
WORKDIR /app
COPY requirements.txt ./requirements.txt
RUN pip3 install -r requirements.txt
COPY . .
CMD streamlit run Home.py
--server.headless true
--browser.serverAddress= "0.0.0.0"
--server.enableCORS false
--browser.gatherUsageStats falseRiremlitの詳細については、Riremlitドキュメントを参照してください。