Mit dem stabilen Diffusionsmodell können Sie kreative Bilder mit Text erstellen. Amazon bietet vorgeschriebene Modelle für die einfache Verwendung von maschinellem Lernen (ML) mit Sagemaker JumpStart an, das seit Oktober 2022 zusätzliche Diffness-Modelle ausmeldet. Auf diese Weise können Sie problemlos ein stabiles Diffness -Bild erstellen und Sagemaker -Endpunkt für den sofortigen Service anbieten. Sagemaker -Endpunkt skalieren automatisch, wenn der Verkehr zunimmt, sodass die Infrastruktur auch dann effizient aufrechterhalten kann, wenn Verkehrsschwankungen schwerwiegend sind und eine erhöhte Sicherheit zu IAM bieten.
In stabilen Diffness -Schlüsselwörtern können Sie die Ergebnisse der stabilen Differenz gemäß den Schlüsselwörtern sehen.
"Die Legende der Zelda Landschaft Atmosphärische, hyperrealistische, 8K, epische Komposition, filmische, Oktan -Renderung, ArtStation Landscape Clifton & Galen Rowell, 16K -Auflösung, Landschaft Veduta Foto von Dustin LeFevre & Tdraw, 8K -Auflösung Deviantart, Flickr, in Enscape, Miyazaki, Nausicaa Ghibli, Atem of the Wild, 4K detaillierte Post -Verarbeitung, Artstation, Rendering durch Unwirklicher Motor "

Die Antwort, die beim Anfordern des von Jumpstart mit Sagemaker -Endpunkts bereitgestellten stabilen Diffusionsbildes erhalten wurde, lautet wie folgt. In der JSON -Antwort werden die RGB -Informationen des Bildes an das Feld "generated_image" geliefert. Um dies im Client zu verwenden, müssen Sie es in das Bildformat ändern. Da die IAM -Zertifizierung bei der Anforderung einer stabilen Differenzbildgenerierung mit Sagemaker -Endpunkt authentifiziert werden muss, muss der Kunde über das AWS SDK über das AWS -SDK verfügen. Daher sind Webbrowser oder mobile Apps schwer zu IAM -basierten Diensten bereitzustellen. Aus diesem Grund verwendet dieser Beitrag API Gateway und Lambda für die Umwandlung von IAM -Zertifizierung und Bilddatei in 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
}]
}
}Die Gesamtarchitektur ist wie folgt. Sagemaker verfügt über ein stabiles Diffusionsmodell, das Jumpstart bereitstellt, um ein Bild aus dem Eingabetxt zu erstellen. Lambda liefert die vom Benutzer gelieferten Textinformationen durch IAM -Authentifizierung an den Sagemaker -Endpunkt und erhält die Informationen des resultierenden Bildes in Form der Bildkarte. Die Bildkarte wird im S3 als JPEG -Format gespeichert, damit der Benutzer sie problemlos verwenden kann und eine URL für das Bild mithilfe von CloudFront -Domäneninformationen erstellt. Das API -Gateway empfängt die Anfrage des Benutzers als erholsame API und liefert die Anfrage des Benutzers an die Lambda, und die von Lambda erstellten URL -Bildinformationen werden dem Benutzer übermittelt. Alle Dienste werden mit AWS CDK verteilt und Docker -Containerbilder werden mit ECR verwaltet.

In Lambda müssen Sie "ContentType" und "Akzeptieren" wie unten angegeben angeben, wenn Sie einen Inferenz mit Sagemaker -Endpunkt beantragen.
"ContentType" : "application/json" ,
"Accept" : "application/json" ,In diesem Fall liefert der Körper der Anfrage die Informationen, die für die stabile Differenz des folgenden Formats erforderlich sind. Breite, Höhe sollte in 8 unterteilt werden, um die Größe des Bildes anzugeben. Num_images_per_prompt ist die Anzahl der auf einmal generierten Bilder, und num_inference_steps bezieht sich auf den beenoisierenden Schritt beim Erstellen eines Bildes. LISTANCE_SCALE drückt das Ausmaß der Eingabeaufforderung aus.
{
predictions ":[{
" prompt ": "astronaut on a horse" ,
"width" : 768 ,
"height" : 512 ,
"num_images_per_prompt" : 1 ,
"num_inference_steps" : 50 ,
"guidance_scale" : 7.5
}]
}In lambda_function.py stellen wir eine Anfrage wie unten gezeigt. Unter Verwendung von Pythons Boto3 wird die Anfrage an den Sagemaker -Endpunkt geliefert, der ContentType ist "Anwendung/JSON", und der Akzeptieren ist "Accept = 'Application/JSON" oder "Accept =' Application/JSON" oder ist Sie können "Accept = 'Application/JSON; JPEG" verwenden.
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 ))Wenn die Akzeptanz als "Anwendung/JSON" für die Abfrage bei Sagemaker Endpoint bezeichnet wird, werden Textdaten von RGB gesunken. Die Bilddaten werden aus JSONs "Körper" und "generated_image" extrahiert und wandeln sich dann in Binärbilddaten um, die in S3 mit PIL (Kissen) und Numpy -Bibliothek gespeichert werden können. Der Code in lambda_function.py ist unten angezeigt.
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" })Übrigens sollten in Lambda das Kissen- und Numpy -Bibliotheken mit "PIP install -target = [Lambda -Ordner] Pillow Numpy" hinzugefügt und dann komprimiert und hochgeladen. Sie können Bibliotheken wie Numpy verwenden. Das Beispiel der Dockerfile zu diesem Zeitpunkt ist wie folgt.
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" ]Wenn Sie den Header Accept -Header auf "Application/JSON; JPEG" einstellen, überträgt Sagemaker Endpoint das Codierungs -JPEG -Bild auf die Base64. Ändern Sie daher nach der Dekodierung der Base64 es in den in -memory -Binärstrom und laden Sie ihn in S3 hoch.
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" })In Vorbereitung auf die CDK -Bereitstellung beschreiben wir, wie S3, Lambda, API Gateway und Cloudfront für CDK bereitgestellt werden.
Stabiler Diffusionendpunkt erzeugen stabilen Diffnessendpunkt im Sagemaker -Jumpstart.
Die Infrastruktur für die Argumentation ist das API -Gateway, S3, Lambda, Cloudfront und verteilt an AWS CDK. Ausführliche Verteilungsinformationen finden Sie in der CDK-stabilen Diffusionsstack.ts. Geben Sie nach der Auswahl der Erstellen von Umgebungen in Cloud9 Console Cloud9 den Namen wie unten gezeigt ein. Hier trat ich "Stabel Diffusion" ein. Halten Sie anschließend den Rest und wählen Sie [erstellen].

Wählen Sie nach dem Erstellen von Cloud9 [Öffnen] und geben Sie das Terminal wie unten gezeigt ein.

Laden Sie den entsprechenden Code anschließend wie unten gezeigt herunter.
git clone https : //github.com/kyopark2014/stable-diffusion-api-serverDa bei der Erstellung der Infrastruktur die Endpunktinformationen des Sagemakers erforderlich sind, wählen Sie "CDK-stabil-diffusion/lib/lib/lib/life/liffusion-diffusion-diffusion-stack.ts", wie unten gezeigt.

Gehen Sie zur CDK-stabilen Diffusion und installieren Sie die Bibliotheken "AWS-CDK-Lib" und "Pfad" mit NPM. Hier bedeutet "AWS-CDK-Lib" die CDK 2.0-Bibliothek.
cd cdk - stable - diffusion && npm install aws - cdk - lib pathInstallieren Sie die gesamte Infrastruktur mit dem folgenden Befehl.
cdk deployWenn die Infrastruktur mit dem CDK abgeschlossen ist, finden Sie die Informationen der installierten Infrastruktur wie unten gezeigt. Wobei Appurl für das Aufrufen von API mithilfe der Abfrageanweisung im Browser verfügbar ist, und Curlurl wird verwendet, um in Shell zu testen.

Das tatsächliche Beispiel ist wie folgt.
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"}'Wie man aus dem Browser eine Verbindung herstellt, ist wie folgt. Geben Sie den Satz ein, um in die Eingabeaufforderung zu fragen.
https : //1r9dqh4f37.execute-api.ap-northeast-2.amazonaws.com/dev/text2image?prompt=astronaut on a horseDie Ergebnisse zu diesem Zeitpunkt sind wie folgt.

Sie können wie folgt mit dem Befehl curl ausführen.
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"}'Ein Beispiel für das Ergebnis der Argumentation. "Körper" hat eine URL des Bildes, die durch Argumentation erzeugt wird.
{ "statusCode" : 200 , "body" : "https://d283dvdglbetjo.cloudfront.net/img_20230208-014926" }Wählen Sie die nachstehend gezeigte Post -Methode aus und geben Sie die URL ein.

Geben Sie in JSON in [Körper] - [RAW] ein.
{
"text" : "astronaut on a horse"
}Fügen Sie die Anwendung/JSON zu [Headern] als Contentyp hinzu, wie unten gezeigt.

Wählen Sie [gesendet] und erhalten Sie die folgenden Ergebnisse.

Ich habe den Text geändert, um wie unten gezeigt einzugeben.



Ein junger blonde männliche Jedi mit kurzem Haar, das bei der Sonnenuntergangskonzeptkunst von Doug Chiang filmisch, realistisch, hochdefinitioniert, Konzept von Doug Chiang steht Kunst, Portaitbild, Pfadverfolgung, ruhige Landschaft, hohe Qualität, sehr detailliert, 8K, weiche Farben, warme Farben, turbulentes Meer, hohe Kohäranz, anatomisch Richtig, hyperrealistisch, Konzeptkunst, definiertes Gesicht, fünf Finger, symmetrisch

Das Auge des Sturms, der Atmosphärische, des Hyperrealistiks, der 8K, der epischen Komposition, des filmischen, Oktan -Renders, der Artstation Landscape Vista Rowell, 16K -Auflösung, Landschaft Veduta Foto von Dustin LeFevre & Tdraw, 8K -Auflösung, detaillierte Landschaft Flickr, in Enscape, Miyazaki, Nausicaa Ghibli, Atem of the Wild, 4K detaillierte Nachverarbeitung

Generieren Sie Bilder aus Text mit dem stabilen Diffness -Modell auf dem Amazon Sagemaker Jumpstart
Vereinfachung von Modellen und Lösungen für maschinelles Lernen, die mit Amazon Sagemaker Jumpstart vorgebaut sind
Einführung in den Sprungstart -Text zum Bild
Sagemaker -Endpunkt (Einzelmodellendpunkt)
Erstellen und automatisieren Sie die Verwaltung Ihres Sagemaker Studio Users CDK
Bereitstellung von Sagemaker -Endpunkten mit CloudFormation
Ausführen serverloser ML auf AWS Lambda
Bereiten Sie stabile Diffness -Modelle auf dem Amazon Sagemaker -Endpunkt ein