O modelo de difusão estável permite criar imagens criativas usando o texto. A Amazon oferece modelos pré-treinados para facilitar o uso do Machine Learning (ML) usando o Sagemaker Jumpstart, que recebe modelos adicionais de diferença desde outubro de 2022. Isso permite criar facilmente uma imagem estável e também oferecer terminal de sagemaker para serviço imediato. O terminal do Sagemaker é dimensionado automaticamente quando o tráfego aumenta, para que ele possa manter a infraestrutura com eficiência, mesmo quando as flutuações do tráfego são severas e proporcionar segurança aprimorada no IAM.
Nas palavras -chave estáveis, você pode ver os resultados da diferença estável de acordo com as palavras -chave.
"A lenda do zelda paisagismo atmosférico, hiperalista, 8k, composição épica, cinema, renderização de octanas, paisagem de arte Clifton & Galen Rowell, resolução de 16k, paisagem Veduta Photo de Dustin Lefevre & Tdraw, resolução de 8k Deviantart, Flickr, renderizado em Enscape, Miyazaki, Nausicaa Ghibli, Breath of the Wild, 4K Post Processando, ArtStation, Renderização por Motor irreal "

A resposta obtida ao solicitar a imagem de difusão estável fornecida pelo Jumpstart com o terminal de sagemaker é a seguinte. Na resposta JSON, as informações RGB da imagem são entregues no campo "Gerado_image". Para usá -lo no cliente, você deve alterá -lo para o formato da imagem. Além disso, como a certificação IAM deve ser autenticada ao solicitar uma geração estável de imagem de diferença com o Sagemaker Endpoint, o cliente deve ter uma credencial do IAM, uma informação sensível e a solicitação da API através do AWS SDK. Portanto, os navegadores da Web ou aplicativos móveis são difíceis de fornecer serviços baseados em IAM. Por esse motivo, esta postagem usa a API Gateway e a Lambda para a certificação IAM e a conversão de arquivos de imagem no terminal de 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
}]
}
}A arquitetura geral é a seguinte. O Sagemaker possui um modelo de difusão estável fornecido pelo JumpStart para criar uma imagem a partir do texto de entrada. A Lambda entrega as informações de texto fornecidas pelo Usuário para o Sagemaker Endpoint através da autenticação do IAM e obtém as informações da imagem resultante na forma de mapa de imagem. O mapa de imagens é armazenado no S3 como um formato JPEG para que o usuário possa usá -lo facilmente, criando um URL para a imagem usando informações de domínio CloudFront. O gateway da API recebe a solicitação do usuário como uma API RESTful e atende a solicitação do usuário ao Lambda, e as informações da imagem do URL criadas pelo Lambda são entregues ao usuário. Todos os serviços são distribuídos usando o AWS CDK, e as imagens de contêiner do Docker são gerenciadas com o ECR.

No Lambda, você deve especificar "ContentType" e "aceitar", como mostrado abaixo ao solicitar a inferência no Sagemaker Endpoint.
"ContentType" : "application/json" ,
"Accept" : "application/json" ,Nesse caso, o corpo da solicitação fornece as informações necessárias para a diferença estável no formato abaixo. Largura, a altura deve ser dividida em 8 para especificar o tamanho da imagem. NUM_IMAGES_PER_PROMPT é o número de imagens geradas de uma só vez, e NUM_INferencie_Steps refere -se à etapa de denoising ao criar uma imagem. Guidance_Scale expressa a extensão do prompt.
{
predictions ":[{
" prompt ": "astronaut on a horse" ,
"width" : 768 ,
"height" : 512 ,
"num_images_per_prompt" : 1 ,
"num_inference_steps" : 50 ,
"guidance_scale" : 7.5
}]
}Em lambda_function.py, fazemos uma solicitação, conforme mostrado abaixo. Usando o BOTO3 do Python, a solicitação é entregue ao endpoint do Sagemaker, o contentType é "Application/JSON" e o cabeçalho aceita é "aceitar = 'aplicativo/json" ou Você pode usar "aceitar = 'aplicativo/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 ))Se o aceitação for chamado "Application/JSON" para consulta no Sagemaker Endpoint, os dados de texto feitos de RGB descem. Os dados da imagem são extraídos dos "Body" e "Generated_Image" de JSON e depois converte em dados de imagem binária que podem ser armazenados em S3 usando PIL (travesseiro) e biblioteca Numpy. O código em lambda_function.py é mostrado abaixo.
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" })A propósito, em Lambda, as bibliotecas de travesseiro e Numpy devem ser adicionadas com "pip install -target = [pasta lambda] travesseiro Numpy" e depois comprimido e carregado. Ele permite que você use bibliotecas como Numpy. O exemplo do Dockerfile neste momento é o seguinte.
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" ]Se você definir o cabeçalho Aceitar como "Application/JSON; JPEG", o Sagemaker Endpoint transmite a imagem JPEG que codifica para a base64. Portanto, após a decodificação Base64, altere -o para o fluxo binário in -Memory e envie -o para 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" })Em preparação para a implantação do CDK, descrevemos como implantar S3, Lambda, API Gateway e CloudFront no CDK.
Terminal de difusão estável Crie ponto de extremidade estável no jumpstart de sagemaker.
A infraestrutura para o raciocínio é a API Gateway, S3, Lambda, CloudFront e distribuída ao AWS CDK. Para obter informações detalhadas sobre a distribuição, consulte o cdk-estável-difusão staack.ts. Depois de selecionar Criar ambiente no Cloud9 Console para criar o Cloud9, digite o nome como mostrado abaixo. Aqui, entrei na "Difusão Stabel". Depois, mantenha todo o resto e selecione [Criar].

Depois que o Cloud9 é criado, selecione [Abrir] e digite o terminal, como mostrado abaixo.

Depois disso, faça o download do código relevante, como mostrado abaixo.
git clone https : //github.com/kyopark2014/stable-diffusion-api-serverComo as informações do terminal do Sagemaker são necessárias ao criar a infraestrutura, selecione "CDK-estável-difusão/lib/lib/lib/lif/liffusion-diffusion-difusão stack.ts", como mostrado abaixo.

Vá para as bibliotecas "AWS-CDK-LIB" e "Path" "AWS-CDK-LIB" e "Path" com o NPM. Aqui, "AWS-CDK-LIB" significa a biblioteca CDK 2.0.
cd cdk - stable - diffusion && npm install aws - cdk - lib pathInstale toda a infraestrutura com o seguinte comando.
cdk deployQuando a infraestrutura é concluída com o CDK, você pode descobrir as informações da infraestrutura instalada, como mostrado abaixo. Onde o Apturl está disponível para chamar a API usando a instrução de consulta no navegador e o curlurl é usado para testar no shell.

O exemplo real é o seguinte.
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"}'Como se conectar do navegador é o seguinte. Digite a frase para consultar o prompt.
https : //1r9dqh4f37.execute-api.ap-northeast-2.amazonaws.com/dev/text2image?prompt=astronaut on a horseOs resultados neste momento são os seguintes.

Você pode executar o seguinte com o comando 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"}'Um exemplo do resultado do raciocínio. "Body" tem um URL da imagem gerada como resultado do raciocínio.
{ "statusCode" : 200 , "body" : "https://d283dvdglbetjo.cloudfront.net/img_20230208-014926" }Selecione o método da postagem como mostrado abaixo e digite o URL.

Entre no JSON no [corpo] - [Raw].
{
"text" : "astronaut on a horse"
}Adicione o aplicativo/JSON aos [cabeçalhos] como o tipo Conten, como mostrado abaixo.

Selecione [enviado] e obtenha os seguintes resultados.

Eu mudei o texto para inserir conforme mostrado abaixo.



Um jovem masculino loiro com cabelos curtos parados na arte conceitual do pôr do sol de Doug Chiang cinematográfico, pintura realista, alta definição, conceito Arte, Imagem de Portait, rastreamento de caminho, paisagem serena, alta qualidade, altamente detalhada, 8k, cores macias, cores quentes, mar turbulento, alta coerância, anatomicalia Correto, hiperrealista, arte conceitual, rosto definido, cinco dedos, simétricos

O olho da tempestade, atmosférico, hiperalista, 8k, composição épica, cinematográfica, renderização de octanas, paisagem de artes Rowell, 16k Resolution, Landscape Veduta Photo de Dustin Lefevre & Tdraw, resolução de 8k, paisagem detalhada Flickr, renderizado em Enscape, Miyazaki, Nausicaa Ghibli, Breath of the Wild, 4K Post Processing detalhado

Gere imagens do texto com o modelo de diferença estável no Amazon Sagemaker Jumpstart
Simplificando modelos e soluções de aprendizado de máquina pré -construído com o Amazon Sagemaker Jumpstart
Introdução ao Jumpstart -Text à imagem
Terminal de sagemaker (terminal de modelo único)
Construa e automatize o gerenciamento de seus usuários de estúdio de sagemaker CDK
Implantando terminais de sagemaker comformation
Executando o ML sem servidor na AWS Lambda
Implante modelos de diferença estável no ponto final da Amazon Sagemaker