Стабильная диффузионная модель позволяет создавать креативные изображения с помощью текста. Amazon предлагает предварительно обученные модели для легкого использования машинного обучения (ML) с использованием Sagemaker Jumpstart, которая была предоставлена дополнительными моделями различий с октября 2022 года. Это позволяет легко создавать стабильное изображение различий, а также предлагать конечную точку SageMaker для немедленного обслуживания. Конечная точка SageMaker автоматически масштабируется, когда трафик увеличивается, поэтому она может эффективно поддерживать инфраструктуру, даже когда колебания трафика серьезны и обеспечивают повышенную безопасность для IAM.
В стабильных ключевых словах дифферентности вы можете увидеть результаты стабильной разницы в соответствии с ключевыми словами.
"Legend of Zelda ландшафтной атмосферы, гиперреалистичный, 8K, эпическая композиция, кинематографическая, октановая рендера, артстационный ландшафт Clifton & Galen Rowell, Resolution 16K, Ландшафт Ведута Фото Дастина Лефевра и Тдроу, Резолюция 8K DeviantArt, Flickr, отображается в Энскапе, Миядзаки, Наусике Гибли, Дыхание дикой природы, 4K подробная пост -обработка, ArtStation, рендеринг Нереальный двигатель "

Ответ, полученный при запросе стабильного диффузионного изображения, предоставленного Jumpstart с конечной точкой SageMaker, выглядит следующим образом. В ответе JSON информация RGB изображения доставляется в поле «Gened_Image». Чтобы использовать это в клиенте, вы должны изменить его на формат изображения. Кроме того, поскольку сертификация IAM должна быть аутентифицирована при запросе стабильной различной генерации изображений с конечной точкой SageMaker, клиент должен иметь учетные данные IAM, конфиденциальную информацию и запрос API через AWS SDK. Поэтому веб -браузеры или мобильные приложения трудно предоставить услуги на основе IAM. По этой причине в этом посте используются API Gateway и Lambda для сертификации IAM и преобразования файлов изображений в конечную точку SageMaker.
{
"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
}]
}
}Общая архитектура заключается в следующем. SageMaker имеет стабильную диффузионную модель, предоставленную Jumpstart для создания изображения из входного текста. Lambda предоставляет текстовую информацию, предоставленную пользователем, в конечную точку SageMaker через AIM Authentication и получает информацию о полученном изображении в форме карты изображений. Карта изображений сохраняется в S3 в виде формата JPEG, так что пользователь может легко использовать его, создавая URL для изображения с использованием информации об домене CloudFront. API Gateway получает запрос пользователя в качестве API RESTFUL и доставляет запрос пользователя LAMBDA, а информация о URL -изображении, созданная LAMBDA, доставляется пользователю. Все услуги распределяются с использованием AWS CDK, а изображения контейнеров Docker управляются с помощью ECR.

В Lambda вы должны указать «ContentType» и «принять», как показано ниже при запросе вывода с конечной точкой SageMaker.
"ContentType" : "application/json" ,
"Accept" : "application/json" ,В этом случае тело запроса предоставляет информацию, необходимую для стабильной разницы в формате ниже. Ширина, высота должна быть разделена на 8, чтобы указать размер изображения. Num_images_per_prompt - это количество изображений, сгенерированных одновременно, а num_inference_steps относится к разобщенному шагу при создании изображения. Guidance_scale выражает степень в подсказке.
{
predictions ":[{
" prompt ": "astronaut on a horse" ,
"width" : 768 ,
"height" : 512 ,
"num_images_per_prompt" : 1 ,
"num_inference_steps" : 50 ,
"guidance_scale" : 7.5
}]
}В lambda_function.py мы делаем запрос, как показано ниже. Используя BOTO3 Python, запрос доставлен в конечную точку SageMaker, ContentType - это «Приложение/JSON», а заголовок Accep Вы можете использовать "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 ))Если прием называется «Приложение/JSON» для запроса в конечной точке SageMaker, текстовые данные, сделанные из RGB, снижаются. Данные изображения извлекаются из «корпуса» и «генерированного_имажа» JSON, а затем преобразуются в бинарные данные изображения, которые можно хранить в S3 с использованием PIL (подушка) и библиотеки Numpy. Код в lambda_function.py показан ниже.
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" })Кстати, в Lambda библиотеки подушки и Numpy должны быть добавлены с помощью «PIP установка -target = [lambda polder] подушка Numpy», а затем сжата и загружено. Это позволяет использовать библиотеки, такие как Numpy. Пример Dockerfile в это время заключается в следующем.
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" ]Если вы установите заголовок Accement в «Application/json; jpeg», конечная точка SageMaker передает кодирование изображения JPEG на Base64. Следовательно, после декодирования BASE64 измените его на двоичный поток In -Memory и загрузите его на 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" })При подготовке к развертыванию CDK мы опишем, как развернуть S3, Lambda, API Gateway и Cloudfront в CDK.
Стабильная диффузионная конечная точка Создайте стабильную конечную точку дифферентности в Jumpstart SageMaker.
Инфраструктура для рассуждений - API Gateway, S3, Lambda, Cloudfront и распространяется на AWS CDK. Для получения подробной информации о распределении см. CDK-stable-diffusion-stack.ts. После выбора «Создать среду» в консоли Cloud9 для создания Cloud9, введите имя, как показано ниже. Здесь я вступил в «Стабель -диффузию». После этого оставьте все остальное и выберите [Создать].

После создания Cloud9 выберите [Открыть] и введите терминал, как показано ниже.

После этого загрузите соответствующий код, как показано ниже.
git clone https : //github.com/kyopark2014/stable-diffusion-api-serverПоскольку при создании инфраструктуры требуется информация о конечной точке SageMaker, выберите «CDK-stable-diffusion/lib/lib/lib/lif/liffusion-diffusion-diffusion-stack.ts», как показано ниже.

Перейдите в библиотеки CDK-Stable-Diffusion и установите библиотеки «AWS-CDK-LIB» и «PATH» с NPM. Здесь «AWS-CDK-LIB» означает библиотеку CDK 2.0.
cd cdk - stable - diffusion && npm install aws - cdk - lib pathУстановите всю инфраструктуру со следующей командой.
cdk deployКогда инфраструктура завершена с помощью CDK, вы можете узнать информацию об установленной инфраструктуре, как показано ниже. Где Appurl доступен для вызова API с использованием оператора запроса в браузере, а Curlurl используется для тестирования в оболочке.

Фактический пример заключается в следующем.
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"}'Как подключиться из браузера следующим образом. Введите предложение к запросу в подсказке.
https : //1r9dqh4f37.execute-api.ap-northeast-2.amazonaws.com/dev/text2image?prompt=astronaut on a horseРезультаты в это время следующие.

Вы можете запустить следующее с помощью команды 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"}'Пример результата рассуждения. «Тело» имеет URL изображения, сгенерированного в результате рассуждений.
{ "statusCode" : 200 , "body" : "https://d283dvdglbetjo.cloudfront.net/img_20230208-014926" }Выберите метод POST, как показано ниже, и введите URL.

Введите JSON в [Body] - [RAW].
{
"text" : "astronaut on a horse"
}Добавьте приложение/JSON в [заголовки] в качестве типа CONTEN, как показано ниже.

Выберите [отправлено] и получите следующие результаты.

Я изменил текст, чтобы ввести, как показано ниже.



Молодой блондинка -джедай с короткими волосами, стоящими на закате концептуального искусства Дуга Чианг, кинематографической, реалистичной живописи, высокой четкости, концепции Искусство, порт -изображение, отслеживание пути, безмятежный пейзаж, высококачественный, высоко детализированный, 8K, мягкие цвета, теплые цвета, турбулентное море, высокий когерентный, анатомический Правильный, гиперреалистичный, концепт -арт, определенное лицо, пять пальцев, симметрично

Глаз шторма, атмосферная, гиперреалистичная, 8K, эпическая композиция, кинематографическая, октановая рендера, пейзаж артстации Vista Rowell, разрешение 16K, ландшафт Veduta Photo от Dustin Lefevre & Tdraw, разрешение 8K, подробный ландшафт Flickr, отображается в Enscape, Miyazaki, Nausicaa Ghibli, Breath of the Wild, 4K подробная пост -обработка

Сгенерировать изображения из текста с моделью стабильной дифференциальности на Amazon Sagemaker Jumpstart
Упрощение моделей и решений машинного обучения, созданного с Amazon SageMaker Jumpstart
Введение в Jumpstart -Text to Image
Конечная точка SageMaker (единая модель конечная точка)
Создайте и автоматизируйте управление пользователями вашего SageMaker Studio CDK
Развертывание конечных точек SageMaker с облачной информацией
Запуск без сервера ML на AWS Lambda
Развертывание стабильных моделей различий в конечной точке Amazon SageMaker