Pergeseran Paradigma Pembelajaran Mesin (ML) telah ada selama beberapa dekade, tetapi dengan ketersediaan yang siap dari kapasitas komputasi yang hampir tak terbatas, proliferasi data yang besar, dan kemajuan cepat teknologi ML, pelanggan di seluruh industri dengan cepat mengadopsi dan menggunakan teknologi ML untuk mengubah bisnis mereka.
Baru -baru ini, aplikasi AI generatif telah menarik perhatian dan imajinasi semua orang. Kami benar -benar berada pada titik belok yang menarik dalam adopsi ML yang luas, dan kami percaya setiap pengalaman dan aplikasi pelanggan akan diciptakan kembali dengan AI generatif.
Generatif AI adalah jenis AI yang dapat membuat konten dan ide baru, termasuk percakapan, cerita, gambar, video, dan musik. Seperti semua AI, AI generatif ditenagai oleh model ML-model besar yang sangat terlatih pada korpora data yang luas dan biasanya disebut sebagai model yayasan (FMS).
Ukuran dan sifat serba guna dari FM membuat mereka berbeda dari model ML tradisional, yang biasanya melakukan tugas-tugas tertentu, seperti menganalisis teks untuk sentimen, mengklasifikasikan gambar, dan tren peramalan.

Dengan model ML tradisi, untuk mencapai setiap tugas tertentu, Anda perlu mengumpulkan data berlabel, melatih model, dan menggunakan model itu. Dengan model fondasi, alih-alih mengumpulkan data berlabel untuk setiap model dan melatih beberapa model, Anda dapat menggunakan FM yang sama terlatih untuk mengadaptasi berbagai tugas. Anda juga dapat menyesuaikan FM untuk melakukan fungsi khusus domain yang membedakan dengan bisnis Anda, hanya menggunakan sebagian kecil dari data dan komputasi yang diperlukan untuk melatih model dari awal.
AI generatif memiliki potensi untuk mengganggu banyak industri dengan merevolusi cara konten dibuat dan dikonsumsi. Produksi konten asli, pembuatan kode, peningkatan layanan pelanggan, dan peringkasan dokumen adalah kasus penggunaan AI generatif yang khas.
Amazon Sagemaker Jumpstart menyediakan model pra-terlatih dan open-source untuk berbagai jenis masalah untuk membantu Anda memulai dengan ML. Anda dapat secara bertahap melatih dan menyetel model ini sebelum penempatan. Jumpstart juga menyediakan templat solusi yang mengatur infrastruktur untuk kasus penggunaan umum, dan contoh notebook yang dapat dieksekusi untuk ML dengan Amazon Sagemaker.
Dengan lebih dari 600 model pra-terlatih tersedia dan tumbuh setiap hari, Jumpstart memungkinkan pengembang untuk dengan cepat dan mudah memasukkan teknik ML mutakhir ke dalam alur kerja produksi mereka. Anda dapat mengakses model pra-terlatih, templat solusi, dan contoh melalui halaman pendaratan Jumpstart di Amazon Sagemaker Studio. Anda juga dapat mengakses model Jumpstart menggunakan Sagemaker Python SDK. Untuk informasi tentang cara menggunakan model Jumpstart secara terprogram, lihat Gunakan algoritma Sagemaker Jumpstart dengan model pretrained.
Pada bulan April 2023, AWS meluncurkan Amazon Bedrock, yang menyediakan cara untuk membangun aplikasi bertenaga AI generatif melalui model pra-terlatih dari startup termasuk AI21 Labs, Anthropic, dan Stability AI. Amazon Bedrock juga menawarkan akses ke Titan Foundation Models, sebuah keluarga model yang dilatih di rumah oleh AWS. Dengan pengalaman tanpa server dari Amazon Bedrock, Anda dapat dengan mudah menemukan model yang tepat untuk kebutuhan Anda, mulailah dengan cepat, secara pribadi menyesuaikan FM dengan data Anda sendiri, dan dengan mudah mengintegrasikan dan menggunakannya ke dalam aplikasi Anda menggunakan alat AWS dan kemampuan yang Anda kenal (termasuk Integrasi dengan Sagemaker ML seperti Amazon Sagemaker Eksperimen untuk menguji berbagai model dan Amazon Sagemaker.
Dalam posting ini, kami menunjukkan cara menggunakan gambar dan teks model AI generatif dari Jumpstart menggunakan AWS Cloud Development Kit (AWS CDK). AWS CDK adalah kerangka pengembangan perangkat lunak open-source untuk menentukan sumber daya aplikasi cloud Anda menggunakan bahasa pemrograman yang akrab seperti Python.
Kami menggunakan model difusi yang stabil untuk pembuatan gambar dan model FLAN-T5-XL untuk pemahaman bahasa alami (NLU) dan pembuatan teks dari memeluk wajah di Jumpstart.
Aplikasi Web dibangun di atas Streamlit, perpustakaan Python open-source yang membuatnya mudah untuk membuat dan berbagi aplikasi web khusus yang indah untuk ML dan Ilmu Data. Kami meng -host aplikasi web menggunakan Amazon Elastic Container Service (Amazon ECS) dengan AWS Fargate dan diakses melalui penyeimbang beban aplikasi. Fargate adalah teknologi yang dapat Anda gunakan dengan Amazon ECS untuk menjalankan kontainer tanpa harus mengelola server atau cluster atau mesin virtual. Titik akhir model AI generatif diluncurkan dari gambar jumpstart di Amazon Elastic Container Registry (Amazon ECR). Data model disimpan di Amazon Simple Storage Service (Amazon S3) di akun Jumpstart. Aplikasi web berinteraksi dengan model melalui Amazon API Gateway dan fungsi AWS Lambda seperti yang ditunjukkan dalam diagram berikut.

API Gateway memberikan aplikasi web dan klien lain antarmuka RESTful standar, sambil melindungi fungsi lambda yang berinteraksi dengan model. Ini menyederhanakan kode aplikasi klien yang mengkonsumsi model. Titik akhir API Gateway dapat diakses secara publik dalam contoh ini, memungkinkan kemungkinan untuk memperluas arsitektur ini untuk mengimplementasikan berbagai kontrol akses API dan berintegrasi dengan aplikasi lain.
Dalam posting ini, kami memandu Anda melalui langkah -langkah berikut:
Kami memberikan ikhtisar kode dalam proyek ini di Lampiran di akhir posting ini.
Anda harus memiliki prasyarat berikut:
Anda dapat menggunakan infrastruktur dalam tutorial ini dari komputer lokal Anda atau Anda dapat menggunakan AWS Cloud9 sebagai workstation penyebaran Anda. AWS Cloud9 dilengkapi dengan AWS CLI, AWS CDK dan Docker. Jika Anda memilih AWS Cloud9, buat lingkungan dari konsol AWS.
Perkiraan biaya untuk menyelesaikan posting ini adalah $ 50, dengan asumsi Anda meninggalkan sumber daya yang berjalan selama 8 jam. Pastikan Anda menghapus sumber daya yang Anda buat di pos ini untuk menghindari biaya yang berkelanjutan.
Jika Anda belum memiliki AWS CLI di mesin lokal Anda, lihat menginstal atau memperbarui versi terbaru dari AWS CLI dan mengkonfigurasi AWS CLI.
Instal AWS CDK Toolkit secara global menggunakan perintah Node Package Manager berikut:
npm install -g aws-cdk-lib@latest
Jalankan perintah berikut untuk memverifikasi instalasi yang benar dan cetak nomor versi AWS CDK:
cdk --version
Pastikan Anda memasang Docker di mesin lokal Anda. Mengeluarkan perintah berikut untuk memverifikasi versi:
docker --version
Di mesin lokal Anda, klon aplikasi AWS CDK dengan perintah berikut:
git clone https://github.com/aws-samples/generative-ai-sagemaker-cdk-demo.git
Arahkan ke folder proyek:
cd generative-ai-sagemaker-cdk-demo
Sebelum kita menggunakan aplikasi, mari kita tinjau struktur direktori:
.
├── 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 Folder stack berisi kode untuk setiap tumpukan di aplikasi AWS CDK. Folder code berisi kode untuk fungsi Amazon Lambda. Repositori juga berisi aplikasi web yang terletak di bawah web-app folder.
File cdk.json memberi tahu AWS CDK Toolkit cara menjalankan aplikasi Anda.
Aplikasi ini diuji di wilayah us-east-1 tetapi harus bekerja di wilayah mana pun yang memiliki layanan yang diperlukan dan Inferensi Jenis Instance ml.g4dn.4xlarge yang ditentukan dalam app.py.
Proyek ini diatur seperti proyek Python standar. Buat lingkungan virtual Python menggunakan kode berikut:
python3 -m venv .venv
Gunakan perintah berikut untuk mengaktifkan lingkungan virtual:
source .venv/bin/activate
Jika Anda berada di platform Windows, aktifkan lingkungan virtual sebagai berikut:
.venvScriptsactivate.bat
Setelah lingkungan virtual diaktifkan, tingkatkan PIP ke versi terbaru:
python3 -m pip install --upgrade pip
Instal dependensi yang diperlukan:
pip install -r requirements.txt
Sebelum Anda menggunakan aplikasi AWS CDK, Anda perlu melakukan bootstrap ruang di akun Anda dan wilayah yang Anda gunakan. Untuk bootstrap di wilayah default Anda, keluarkan perintah berikut:
cdk bootstrap
Jika Anda ingin menggunakan akun dan wilayah tertentu, keluarkan perintah berikut:
cdk bootstrap aws://ACCOUNT-NUMBER/REGION
Untuk informasi lebih lanjut tentang pengaturan ini, kunjungi memulai dengan AWS CDK.
Aplikasi AWS CDK berisi beberapa tumpukan seperti yang ditunjukkan pada diagram berikut.

Anda dapat mendaftarkan tumpukan di aplikasi CDK Anda dengan perintah berikut:
cdk listAnda harus mendapatkan output berikut:
GenerativeAiTxt2imgSagemakerStack
GenerativeAiTxt2nluSagemakerStack
GenerativeAiVpcNetworkStack
GenerativeAiDemoWebStack
Perintah AWS CDK yang bermanfaat lainnya:
cdk ls - Daftar semua tumpukan di aplikasicdk synth - memancarkan template AWS Cloudformation AWS yang disintesiscdk deploy - Menyebarkan tumpukan ini ke akun dan wilayah AWS default Andacdk diff - membandingkan tumpukan yang digunakan dengan keadaan saat inicdk docs - Membuka Dokumentasi AWS CDKBagian selanjutnya menunjukkan kepada Anda cara menggunakan aplikasi AWS CDK.
Aplikasi AWS CDK akan digunakan ke wilayah default berdasarkan konfigurasi workstation Anda. Jika Anda ingin memaksa penyebaran di wilayah tertentu, atur variabel lingkungan AWS_DEFAULT_REGION Anda.
Pada titik ini, Anda dapat menggunakan aplikasi AWS CDK. Pertama Anda meluncurkan tumpukan jaringan VPC:
cdk deploy GenerativeAiVpcNetworkStack
Jika Anda diminta, masukkan y untuk melanjutkan penempatan. Anda harus melihat daftar sumber daya AWS yang disediakan di tumpukan. Langkah ini membutuhkan waktu sekitar 3 menit untuk menyelesaikannya.
Kemudian Anda meluncurkan tumpukan aplikasi web:
cdk deploy GenerativeAiDemoWebStack
Setelah menganalisis tumpukan, AWS CDK akan menampilkan daftar sumber daya di tumpukan. Masukkan Y untuk melanjutkan penempatan. Langkah ini membutuhkan waktu sekitar 5 menit.

Catat WebApplicationServiceURL dari output karena Anda akan menggunakannya nanti. Anda juga dapat mengambilnya nanti di CloudFormation Console, di bawah output Stack GenerativeAiDemoWebStack .
Sekarang, luncurkan tumpukan titik akhir model generasi AI:
cdk deploy GenerativeAiTxt2imgSagemakerStack
Langkah ini membutuhkan waktu sekitar 8 menit. Titik akhir model generasi gambar digunakan, kita sekarang dapat menggunakannya.
Contoh pertama menunjukkan cara memanfaatkan difusi stabil, teknik pemodelan generatif yang kuat yang memungkinkan penciptaan gambar berkualitas tinggi dari petunjuk teks.
WebApplicationServiceURL dari output GenerativeAiDemoWebStack di browser Anda. 
Di panel navigasi, pilih pembuatan gambar .
Nama titik akhir Sagemaker dan bidang URL API GW akan diisi sebelumnya, tetapi Anda dapat mengubah prompt untuk deskripsi gambar jika Anda mau.
Pilih menghasilkan gambar .

Aplikasi akan melakukan panggilan ke titik akhir Sagemaker. Dibutuhkan beberapa detik. Gambar dengan karakteristik dalam deskripsi gambar Anda akan ditampilkan.

Contoh kedua berpusat di sekitar menggunakan model FLAN-T5-XL, yang merupakan fondasi atau model bahasa besar (LLM), untuk mencapai pembelajaran dalam konteks untuk generasi teks sambil juga membahas berbagai tugas pemahaman bahasa alami (NLU) dan tugas pembuatan bahasa alami (NLG).
Beberapa lingkungan mungkin membatasi jumlah titik akhir yang dapat Anda luncurkan sekaligus. Jika ini masalahnya, Anda dapat meluncurkan satu titik akhir Sagemaker sekaligus. Untuk menghentikan titik akhir Sagemaker di aplikasi AWS CDK, Anda harus menghancurkan tumpukan titik akhir yang digunakan dan sebelum meluncurkan tumpukan titik akhir lainnya. Untuk menolak titik akhir model AI generasi gambar, keluarkan perintah berikut:
cdk destroy GenerativeAiTxt2imgSagemakerStack
Kemudian luncurkan tumpukan titik akhir model AI generasi teks:
cdk deploy GenerativeAiTxt2nluSagemakerStack
Masukkan y di prompt.
Setelah stack titik akhir model generasi teks diluncurkan, selesaikan langkah -langkah berikut:

Di bawah konteksnya, Anda akan menemukan beberapa kueri yang prepopulasi di opsi menu dropdown.

Anda juga dapat memasukkan kueri Anda sendiri di bidang Input Query dan memilih Generate Response .

Pada konsol AWS Cloudformation, pilih tumpukan di panel navigasi untuk melihat tumpukan yang digunakan.

Di konsol Amazon ECS, Anda dapat melihat cluster di halaman cluster .

Pada konsol AWS Lambda, Anda dapat melihat fungsi di halaman Fungsi .

Pada konsol API Gateway, Anda dapat melihat titik akhir API Gateway di halaman API .

Pada konsol Sagemaker, Anda dapat melihat titik akhir model yang digunakan pada halaman titik akhir .

Ketika tumpukan diluncurkan, beberapa parameter dihasilkan. Ini disimpan di toko parameter AWS Systems Manager. Untuk melihatnya, pilih Parameter Store di panel navigasi di konsol AWS Systems Manager.

Untuk menghindari biaya yang tidak perlu, bersihkan semua infrastruktur yang dibuat dengan perintah berikut di workstation Anda:
cdk destroy --all
Masukkan y di prompt. Langkah ini membutuhkan waktu sekitar 10 menit. Periksa apakah semua sumber daya dihapus di konsol. Juga hapus ember aset S3 yang dibuat oleh AWS CDK di konsol Amazon S3 serta repositori aset di Amazon ECR.
Seperti yang ditunjukkan dalam posting ini, Anda dapat menggunakan AWS CDK untuk menggunakan model AI generatif di Jumpstart. Kami menunjukkan contoh pembuatan gambar dan contoh pembuatan teks menggunakan antarmuka pengguna yang ditenagai oleh StreamLit, Lambda, dan API Gateway.
Anda sekarang dapat membangun proyek AI generatif Anda menggunakan model AI pra-terlatih di Jumpstart. Anda juga dapat memperluas proyek ini untuk menyempurnakan model fondasi untuk kasus penggunaan Anda dan mengontrol akses ke titik akhir API gateway.
Kami mengundang Anda untuk menguji solusi dan berkontribusi pada proyek di GitHub.
Kode sampel ini tersedia di bawah lisensi MIT yang dimodifikasi. Lihat file lisensi untuk informasi lebih lanjut. Juga, tinjau lisensi masing-masing untuk difusi stabil dan model FLAN-T5-XL pada wajah memeluk.
Hantzley Tauckoor adalah pemimpin arsitektur solusi mitra APJ yang berbasis di Singapura. Dia memiliki pengalaman 20 tahun dalam industri TIK yang mencakup berbagai bidang fungsional, termasuk arsitektur solusi, pengembangan bisnis, strategi penjualan, konsultasi, dan kepemimpinan. Dia memimpin tim arsitek solusi senior yang memungkinkan mitra untuk mengembangkan solusi bersama, membangun kemampuan teknis, dan mengarahkan mereka melalui fase implementasi saat pelanggan bermigrasi dan memodernisasi aplikasi mereka ke AWS. Pekerjaan di luar, dia menikmati menghabiskan waktu bersama keluarganya, menonton film, dan hiking.
Kwonyul Choi adalah CTO di Babitalk, startup platform perawatan kecantikan Korea, yang berbasis di Seoul. Sebelum peran ini, Kownyul bekerja sebagai insinyur pengembangan perangkat lunak di AWS dengan fokus pada AWS CDK dan Amazon Sagemaker.
Arunprasath Shankar adalah arsitek solusi spesialis AI/ML senior dengan AWS, membantu pelanggan global mengukur solusi AI mereka secara efektif dan efisien di cloud. Di waktu luangnya, Arun menikmati menonton film sci-fi dan mendengarkan musik klasik.
Satish Upreti adalah PSA utama migrasi dan UKM keamanan dalam organisasi mitra di APJ. Satish memiliki 20 tahun pengalaman yang mencakup teknologi cloud pribadi dan cloud publik. Sejak bergabung dengan AWS pada Agustus 2020 sebagai spesialis migrasi, ia memberikan saran teknis yang luas dan dukungan kepada mitra AWS untuk merencanakan dan menerapkan migrasi yang kompleks.
Di bagian ini, kami memberikan gambaran umum tentang kode dalam proyek ini.
Aplikasi AWS CDK
Aplikasi AWS CDK utama terkandung dalam file app.py di direktori root. Proyek ini terdiri dari banyak tumpukan, jadi kami harus mengimpor tumpukan:
#!/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 GenerativeAiTxt2imgSagemakerStackKami mendefinisikan model AI generatif kami dan mendapatkan URI terkait dari Sagemaker:
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 ) Fungsi get_sagemaker_uris mengambil semua informasi model dari Amazon Jumpstart. Lihat skrip/sagemaker_uri.py.
Kemudian, kami instantiate tumpukan:
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 () Tumpukan pertama yang diluncurkan adalah VPC Stack, GenerativeAiVpcNetworkStack . Tumpukan aplikasi Web, GenerativeAiDemoWebStack , tergantung pada tumpukan VPC. Ketergantungan dilakukan melalui parameter yang lewat vpc=network_stack.vpc .
Lihat app.py untuk kode lengkap.
Tumpukan Jaringan VPC
Dalam GenerativeAiVpcNetworkStack Stack kami membuat VPC dengan subnet publik dan subnet pribadi yang membentang di dua zona ketersediaan (AZS):
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 )
]
)Lihat /stack/generative_ai_vpc_network_stack.py untuk kode lengkap.
Demo Web Application Stack
Dalam GenerativeAiDemoWebStack Stack kami meluncurkan fungsi lambda dan masing -masing titik akhir gateway Amazon API yang melaluinya aplikasi web berinteraksi dengan titik akhir model Sagemaker. Lihat cuplikan kode berikut:
# 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
)Aplikasi Web dikemas dan di -host di Amazon EC dengan Fargate. Lihat cuplikan kode berikut:
# 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 TrueLihat /stack/generative_ai_demo_web_stack.py untuk kode lengkapnya.
Generasi Gambar Sagemaker Model Tumpukan Endpoint
Stack GenerativeAiTxt2imgSagemakerStack menciptakan titik akhir model pembuatan gambar dari Sagemaker Jumpstart dan menyimpan nama titik akhir di toko parameter AWS Systems Manager. Parameter ini akan digunakan oleh aplikasi web. Lihat kode berikut:
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 )Lihat /stack/generative_ai_txt2img_sagemaker_stack.py untuk kode lengkap.
NLU dan Teks Teks Sagemaker Model Stack Endpoint
Stack GenerativeAiTxt2nluSagemakerStack menciptakan titik akhir model NLU dan generasi teks dari Jumpstart dan menyimpan nama titik akhir di toko parameter manajer sistem. Parameter ini juga akan digunakan oleh aplikasi web. Lihat kode berikut:
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 )Lihat /stack/generative_ai_txt2nlu_sagemaker_stack.py untuk kode lengkap.
Aplikasi web
Aplikasi Web terletak di direktori /Web-App. Ini adalah aplikasi yang lancar yang dikemas oleh wadah sesuai 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 falseUntuk mempelajari lebih lanjut tentang StreamLit, lihat Dokumentasi StreamLit.