Model difusi yang stabil memungkinkan Anda membuat gambar kreatif menggunakan teks. Amazon menawarkan model pra-terlatih untuk memudahkan penggunaan Machine Learning (ML) menggunakan Sagemaker Jumpstart, yang telah disediakan dengan model diffness tambahan sejak Oktober 2022. Ini memungkinkan Anda untuk dengan mudah membuat gambar diffness yang stabil, dan juga menawarkan titik akhir Sagemaker untuk layanan langsung. Titik akhir Sagemaker secara otomatis skala ketika lalu lintas meningkat, sehingga dapat mempertahankan infrastruktur secara efisien bahkan ketika fluktuasi lalu lintas parah dan memberikan keamanan yang ditingkatkan pada IAM.
Dalam kata kunci yang stabil, Anda dapat melihat hasil perbedaan stabil sesuai dengan kata kunci.
"The Legend of Zelda Landscape Atmospheric, Hyper Realistis, 8K, Komposisi Epik, Sinematik, Render Octane, Lansekap Artstation Clifton & Galen Rowell, Resolusi 16K, Lansekap Veduta Foto oleh Dustin Lefevre & Tdraw, Resolusi 8K Deviantart, flickr, diterjemahkan dalam enscape, miyazaki, nausicaa ghibli, Breath of the Wild, 4K rinci post pemrosesan, artstation, rendering oleh Mesin yang tidak nyata "

Respons yang diperoleh saat meminta gambar difusi stabil yang disediakan oleh Jumpstart dengan titik akhir Sagemaker adalah sebagai berikut. Dalam respons JSON, informasi RGB dari gambar dikirim ke bidang "Generated_Image". Untuk menggunakan ini di klien, Anda harus mengubahnya ke format gambar. Selain itu, karena sertifikasi IAM harus diautentikasi ketika meminta pembuatan gambar perbedaan yang stabil dengan titik akhir Sagemaker, klien harus memiliki kredensial IAM, informasi sensitif, dan permintaan API melalui AWS SDK. Oleh karena itu, browser web atau aplikasi seluler sulit untuk menyediakan layanan berbasis IAM. Untuk alasan ini, posting ini menggunakan API Gateway dan Lambda untuk sertifikasi IAM dan konversi file gambar ke Sagemaker Endpoint.
{
"generated_image" : [
[[ 221 , 145 , 108 ],[ 237 , 141 , 98 ],[ 249 , 154 , 111 ],..]
...
],
"prompt" : "{
predictions" :[{
"prompt" : "astronaut on a horse" ,
"width" : 768 ,
"height" : 512 ,
"num_images_per_prompt" : 1 ,
"num_inference_steps" : 50 ,
"guidance_scale" : 7.5
}]
}
}Arsitektur keseluruhan adalah sebagai berikut. Sagemaker memiliki model difusi stabil yang disediakan oleh Jumpstart untuk membuat gambar dari teks input. Lambda memberikan informasi teks yang disampaikan oleh pengguna ke Sagemaker Endpoint melalui otentikasi IAM dan memperoleh informasi dari gambar yang dihasilkan dalam bentuk peta gambar. Peta gambar disimpan dalam S3 sebagai format JPEG untuk memudahkan penggunaan, dan membuat URL untuk gambar menggunakan informasi domain CloudFront. Gateway API menerima permintaan pengguna sebagai API yang tenang dan memberikan permintaan pengguna ke Lambda, dan informasi gambar URL yang dibuat oleh Lambda dikirimkan kepada pengguna. Semua layanan didistribusikan menggunakan AWS CDK, dan gambar Docker Container dikelola dengan ECR.

Di Lambda, Anda harus menentukan "ContentType" dan "menerima" seperti yang ditunjukkan di bawah ini saat meminta inferensi dengan titik akhir Sagemaker.
"ContentType" : "application/json" ,
"Accept" : "application/json" ,Dalam hal ini, badan permintaan memberikan informasi yang diperlukan untuk perbedaan stabil pada format di bawah ini. Lebar, tinggi harus dibagi menjadi 8 untuk menentukan ukuran gambar. Num_images_per_prompt adalah jumlah gambar yang dihasilkan sekaligus, dan num_inference_steps mengacu pada langkah denoising saat membuat gambar. Guidance_scale mengungkapkan sejauh mana prompt.
{
predictions ":[{
" prompt ": "astronaut on a horse" ,
"width" : 768 ,
"height" : 512 ,
"num_images_per_prompt" : 1 ,
"num_inference_steps" : 50 ,
"guidance_scale" : 7.5
}]
}Di lambda_function.py, kami membuat permintaan seperti yang ditunjukkan di bawah ini. Menggunakan Boto3 Python, permintaan dikirim ke titik akhir Sagemaker, tipe konten adalah "Aplikasi/JSON", dan header AcCECT adalah "AcCECT = 'Application/JSON" atau Anda dapat menggunakan "ACCEPT = 'Application/JSON; JPEG".
import boto3
runtime = boto3 . Session (). client ( 'sagemaker-runtime' )
response = runtime . invoke_endpoint ( EndpointName = endpoint , ContentType = 'application/json' , Accept = 'application/json;jpeg' , Body = json . dumps ( payload ))Jika Accept disebut "Aplikasi/JSON" untuk kueri di Sagemaker Endpoint, data teks yang terbuat dari RGB turun. Data gambar diekstraksi dari "tubuh" JSON dan "dihasilkan_image", dan kemudian dikonversi ke data gambar biner yang dapat disimpan dalam S3 menggunakan PIL (bantal) dan perpustakaan yang tidak bagus. Kode di lambda_function.py ditunjukkan di bawah ini.
from PIL import Image
import numpy as np
def parse_response ( query_response ):
response_dict = json . loads ( query_response )
return response_dict [ "generated_images" ], response_dict [ "prompt" ]
response_payload = response [ 'Body' ]. read (). decode ( 'utf-8' )
generated_image , prompt = parse_response ( response_payload )
image = Image . fromarray ( np . uint8 ( generated_images [ 0 ]))
buffer = io . BytesIO ()
image . save ( buffer , "jpeg" )
buffer . seek ( 0 )
s3 = boto3 . client ( 's3' )
s3 . upload_fileobj ( buffer , mybucket , mykey , ExtraArgs = { "ContentType" : "image/jpeg" })Ngomong -ngomong, di Lambda, pustaka bantal dan numpy harus ditambahkan dengan "pip instal -target = [folder lambda] bantal numpy" dan kemudian dikompresi dan diunggah. Ini memungkinkan Anda untuk menggunakan perpustakaan seperti Numpy. Contoh Dockerfile saat ini adalah sebagai berikut.
FROM amazon / aws - lambda - python : 3.8
RUN pip3 install -- upgrade pip
RUN python - m pip install joblib awsiotsdk
RUN pip install numpy pillow
WORKDIR / var / task / lambda
COPY lambda_function . py / var / task
COPY . .
CMD [ "lambda_function.lambda_handler" ]Jika Anda mengatur header ACCECT ke "Application/JSON; JPEG", Sagemaker Endpoint mentransmisikan gambar JPEG pengkodean ke base64. Oleh karena itu, setelah decoding base64, ubah ke aliran biner dalam -dimori dan unggah ke S3.
response_payload = response [ 'Body' ]. read (). decode ( 'utf-8' )
generated_image , prompt = parse_response ( response_payload )
import base64
img_str = base64 . b64decode ( generated_image )
buffer = io . BytesIO ( img_str )
s3 . upload_fileobj ( buffer , mybucket , mykey , ExtraArgs = { "ContentType" : "image/jpeg" })Dalam persiapan untuk penyebaran CDK, kami menjelaskan cara menggunakan S3, Lambda, API Gateway, dan Cloudfront ke CDK.
Titik akhir difusi yang stabil menciptakan titik akhir diffness yang stabil di Sagemaker Jumpstart.
Infrastruktur untuk penalaran adalah API Gateway, S3, Lambda, Cloudfront, dan didistribusikan ke AWS CDK. Untuk informasi distribusi terperinci, lihat CDK-stable-diffusion-stack.ts. Setelah memilih Create Environment in Cloud9 Console untuk membuat cloud9, masukkan nama seperti yang ditunjukkan di bawah ini. Di sini, saya memasukkan "Difusi Stabel". Setelah itu, simpan sisanya dan pilih [Buat].

Setelah Cloud9 dibuat, pilih [Buka] dan masukkan terminal seperti yang ditunjukkan di bawah ini.

Setelah itu, unduh kode yang relevan seperti yang ditunjukkan di bawah ini.
git clone https : //github.com/kyopark2014/stable-diffusion-api-serverKarena informasi titik akhir dari Sagemaker diperlukan saat membuat infrastruktur, pilih "CDK-stable-difusi/lib/lib/lib/lif/liffusion-difusion-difusi-stack.ts" seperti yang ditunjukkan di bawah ini.

Buka difusi-stabil CDK dan instal "AWS-CDK-LIB" dan "Path" perpustakaan dengan NPM. Di sini, "AWS-CDK-LIB" berarti perpustakaan CDK 2.0.
cd cdk - stable - diffusion && npm install aws - cdk - lib pathPasang seluruh infrastruktur dengan perintah berikut.
cdk deployKetika infrastruktur selesai dengan CDK, Anda dapat mengetahui informasi dari infrastruktur terpasang seperti yang ditunjukkan di bawah ini. Di mana Appurl tersedia untuk menelepon API menggunakan pernyataan kueri di browser, dan Curlurl digunakan untuk menguji dalam shell.

Contoh sebenarnya adalah sebagai berikut.
CdkStableDiffusionStack . WebUrl = https : //1r9dqh4f37.execute-api.ap-northeast-2.amazonaws.com/dev/text2image?prompt=astronaut
CdkStableDiffusionStack . curlUrl = curl - X POST https : //1r9dqh4f37.execute-api.ap-northeast-2.amazonaws.com/dev/text2image -H "Content-Type: application/json" -d '{"text":"astronaut on a horse"}'Cara terhubung dari browser adalah sebagai berikut. Masukkan kalimat untuk meminta permintaan.
https : //1r9dqh4f37.execute-api.ap-northeast-2.amazonaws.com/dev/text2image?prompt=astronaut on a horseHasilnya saat ini adalah sebagai berikut.

Anda dapat menjalankan sebagai berikut dengan perintah curl.
curl - X POST https : //1r9dqh4f37.execute-api.ap-northeast-2.amazonaws.com/dev/text2image -H "Content-Type: application/json" -d '{"text":"astronaut on a horse"}'Contoh hasil penalaran. "Tubuh" memiliki URL gambar yang dihasilkan sebagai hasil dari penalaran.
{ "statusCode" : 200 , "body" : "https://d283dvdglbetjo.cloudfront.net/img_20230208-014926" }Pilih metode pos seperti yang ditunjukkan di bawah ini dan masukkan URL.

Masukkan JSON di [tubuh] - [RAW].
{
"text" : "astronaut on a horse"
}Tambahkan aplikasi/json ke [header] sebagai tipe conten seperti yang ditunjukkan di bawah ini.

Pilih [terkirim] dan dapatkan hasil berikut.

Saya mengubah teks untuk dimasukkan seperti yang ditunjukkan di bawah ini.



Jedi pria pirang muda dengan rambut pendek berdiri diam di Sunset Concept Art oleh Doug Chiang Cinematic, Lukisan Realistis, Definisi Tinggi, Konsep Seni, gambar portait, penelusuran jalur, lanskap yang tenang, kualitas tinggi, sangat detail, 8k, warna lembut, warna hangat, laut turbulen, koherensi tinggi, anatomi Benar, hiperrealistik, seni konsep, wajah yang ditentukan, lima jari, simetris

Eye of the Storm, atmosfer, hiper realistis, 8k, komposisi epik, sinematik, render oktan, foto pemandangan lanskap artstation Rowell, Resolusi 16K, Lansekap Veduta Foto oleh Dustin Lefevre & Tdraw, Resolusi 8K, Lansekap Detail Flickr, diterjemahkan dalam enscape, miyazaki, nausicaa ghibli, Breath of the Wild, 4K Detail Post Processing

Menghasilkan gambar dari teks dengan model diffness stabil di Amazon Sagemaker Jumpstart
Model Sederhanakan dan Solusi Pembelajaran Mesin Pra -dibangun dengan Amazon Sagemaker Jumpstart
Pengantar Jumpstart -text to Image
Sagemaker Endpoint (titik akhir model tunggal)
Bangun dan Otomatiskan Manajemen Pengguna Studio Sagemaker Anda CDK
Menyebarkan titik akhir Sagemaker dengan CloudFormation
Menjalankan ML Serverless di AWS Lambda
Menggunakan model diffness stabil di Amazon Sagemaker Endpoint