Utiliza Stable Diffusion XL con Amazon SageMaker JumpStart en Amazon SageMaker Studio
Usa Stable Diffusion XL con Amazon SageMaker JumpStart en SageMaker Studio
Hoy nos complace anunciar que Stable Diffusion XL 1.0 (SDXL 1.0) está disponible para los clientes a través de Amazon SageMaker JumpStart. SDXL 1.0 es el último modelo de generación de imágenes de Stability AI. Las mejoras de SDXL 1.0 incluyen generación de imágenes nativas de 1024 píxeles en una variedad de relaciones de aspecto. Está diseñado para uso profesional y calibrado para imágenes fotorrealistas de alta resolución. SDXL 1.0 ofrece una variedad de estilos de arte predefinidos listos para usar en casos de uso de marketing, diseño y generación de imágenes en diversas industrias. Puede probar fácilmente estos modelos y usarlos con SageMaker JumpStart, un centro de aprendizaje automático (ML) que proporciona acceso a algoritmos, modelos y soluciones de ML para que pueda comenzar rápidamente con ML.
En esta publicación, explicaremos cómo utilizar los modelos SDXL 1.0 a través de SageMaker JumpStart.
¿Qué es Stable Diffusion XL 1.0 (SDXL 1.0)?
SDXL 1.0 es la evolución de Stable Diffusion y la próxima frontera para la IA generativa de imágenes. SDXL es capaz de generar imágenes impresionantes con conceptos complejos en varios estilos de arte, incluido el fotorrealismo, a niveles de calidad que superan a los mejores modelos de imágenes disponibles en la actualidad. Al igual que la serie original de Stable Diffusion, SDXL es altamente personalizable (en términos de parámetros) y se puede implementar en instancias de Amazon SageMaker.
La siguiente imagen de un león fue generada utilizando SDXL 1.0 con una indicación simple, que exploraremos más adelante en esta publicación.
- Conozca TEXTure un nuevo marco de Inteligencia Artificial (IA) para...
- Esta investigación de Brain-AI recrea imágenes a partir de la lectu...
- Identifica el lenguaje perjudicial en conversaciones habladas con A...
El modelo SDXL 1.0 incluye los siguientes aspectos destacados:
- Libertad de expresión: fotorrealismo de primera clase, así como la capacidad de generar arte de alta calidad en prácticamente cualquier estilo de arte. Se crean imágenes distintas sin tener ninguna sensación particular que sea impartida por el modelo, lo que garantiza una absoluta libertad de estilo.
- Inteligencia artística: capacidad de primera clase para generar conceptos que son notoriamente difíciles de representar para los modelos de imágenes, como manos y texto, u objetos y personas dispuestos espacialmente (por ejemplo, un cuadro rojo sobre un cuadro azul).
- Inducción más sencilla: a diferencia de otros modelos generativos de imágenes, SDXL solo requiere unas pocas palabras para crear imágenes complejas, detalladas y estéticamente agradables. Ya no es necesario utilizar párrafos de calificadores.
- Más preciso: la inducción en SDXL no solo es simple, sino que también es más fiel a la intención de las indicaciones. El modelo CLIP mejorado de SDXL comprende el texto de manera tan efectiva que se entiende que conceptos como “La Plaza Roja” son diferentes de “un cuadrado rojo”. Esta precisión permite hacer mucho más para obtener la imagen perfecta directamente del texto, incluso antes de utilizar las características más avanzadas o el ajuste fino por el que es famoso Stable Diffusion.
¿Qué es SageMaker JumpStart?
Con SageMaker JumpStart, los profesionales de ML pueden elegir entre una amplia selección de modelos de vanguardia para casos de uso como redacción de contenido, generación de imágenes, generación de código, respuesta a preguntas, redacción publicitaria, resumen, clasificación, recuperación de información y más. Los profesionales de ML pueden implementar modelos base en instancias dedicadas de SageMaker desde un entorno aislado de red y personalizar modelos utilizando SageMaker para el entrenamiento y la implementación de modelos. El modelo SDXL se puede encontrar hoy en Amazon SageMaker Studio y, al momento de escribir esto, está disponible en las regiones us-east-1
, us-east-2
, us-west-2
, eu-west-1
, ap-northeast-1
y ap-southeast-2
.
Descripción general de la solución
En esta publicación, demostramos cómo implementar SDXL 1.0 en SageMaker y cómo utilizarlo para generar imágenes utilizando tanto indicaciones de texto a imagen como indicaciones de imagen a imagen.
SageMaker Studio es un entorno de desarrollo integrado (IDE) basado en web para ML que le permite construir, entrenar, depurar, implementar y monitorear sus modelos de ML. Para obtener más detalles sobre cómo comenzar y configurar SageMaker Studio, consulte Amazon SageMaker Studio.
Una vez que estés en la interfaz de usuario de SageMaker Studio, accede a SageMaker JumpStart y busca Stable Diffusion XL
. Elige la tarjeta de modelo SDXL 1.0, que abrirá un cuaderno de ejemplo. Esto significa que solo serás responsable de los costos de cómputo. No hay ningún costo asociado al modelo. El SDXL 1.0 con peso cerrado ofrece scripts y contenedores optimizados de SageMaker con un tiempo de inferencia más rápido y se puede ejecutar en instancias más pequeñas en comparación con el SDXL 1.0 con peso abierto. El cuaderno de ejemplo te guiará a través de los pasos, pero también discutiremos cómo descubrir e implementar el modelo más adelante en esta publicación.
En las siguientes secciones, mostraremos cómo puedes usar SDXL 1.0 para crear imágenes fotorrealistas con indicaciones más cortas y generar texto dentro de las imágenes. Stable Diffusion XL 1.0 ofrece una composición de imágenes mejorada y generación de rostros con visuales impresionantes y estética realista.
Parámetros de Stable Diffusion XL 1.0
Los siguientes son los parámetros utilizados por SXDL 1.0:
- cfg_scale – La rigurosidad con la que el proceso de difusión se adhiere al texto de la indicación.
- height y width – La altura y el ancho de la imagen en píxeles.
- steps – El número de pasos de difusión a ejecutar.
- seed – Semilla de ruido aleatorio. Si se proporciona una semilla, la imagen generada resultante será determinista.
- sampler – Qué muestreador utilizar para el proceso de difusión para desruido de nuestra generación.
- text_prompts – Una matriz de indicaciones de texto para utilizar en la generación.
- weight – Proporciona a cada indicación un peso específico.
Para obtener más información, consulta la documentación de texto a imagen de Stability AI.
El siguiente código es un ejemplo de los datos de entrada proporcionados con la indicación:
{
"cfg_scale": 7,
"height": 1024,
"width": 1024,
"steps": 50,
"seed": 42,
"sampler": "K_DPMPP_2M",
"text_prompts": [
{
"text": "Una fotografía de una pizza fresca con albahaca y tomates, hecha en un horno tradicional",
"weight": 1
}
]
}
Todos los ejemplos en esta publicación se basan en el cuaderno de ejemplo para Stability Diffusion XL 1.0, que se puede encontrar en el repositorio de GitHub de Stability AI.
Generar imágenes usando SDXL 1.0
En los siguientes ejemplos, nos enfocamos en las capacidades de los modelos Stability Diffusion XL 1.0, que incluyen fotorrealismo superior, composición de imágenes mejorada y la capacidad de generar rostros realistas. También exploramos la estética visual significativamente mejorada, lo que resulta en salidas visualmente atractivas. Además, demostramos el uso de indicaciones más cortas, lo que permite la creación de imágenes descriptivas con mayor facilidad. Por último, ilustramos cómo el texto en las imágenes es ahora más legible, enriqueciendo aún más la calidad general del contenido generado.
El siguiente ejemplo muestra el uso de una indicación simple para obtener imágenes detalladas. Usando solo unas pocas palabras en la indicación, se pudo crear una imagen compleja, detallada y estéticamente agradable que se asemeja a la indicación proporcionada.
text = "fotografía de arte latte de un gato"
output = deployed_model.predict(GenerationRequest(text_prompts=[TextPrompt(text=text)],
seed=5,
height=640,
width=1536,
sampler="DDIM",
))
decode_and_show(output)
A continuación, mostramos el uso del parámetro de entrada style_preset
, que solo está disponible en SDXL 1.0. Al pasar un parámetro style_preset
, se guía al modelo de generación de imágenes hacia un estilo particular.
Algunos de los parámetros de style_preset
disponibles son enhance
, anime
, photographic
, digital-art
, comic-book
, fantasy-art
, line-art
, analog-film
, neon-punk
, isometric
, low-poly
, origami
, modeling-compound
, cinematic
, 3d-mode
, pixel-art
y tile-texture
. Esta lista de estilos predefinidos está sujeta a cambios; consulta la última versión y la documentación para obtener actualizaciones.
En este ejemplo, usamos un prompt para generar una tetera con un style_preset
de origami
. El modelo pudo generar una imagen de alta calidad en el estilo artístico proporcionado.
output = deployed_model.predict(GenerationRequest(text_prompts=[TextPrompt(text="tetera")],
style_preset="origami",
seed = 3,
height = 1024,
width = 1024
))
Probemos algunos style presets más con diferentes prompts. El siguiente ejemplo muestra un style preset para la generación de retratos usando style_preset="photographic"
con el prompt “retrato de un león viejo y cansado en una pose real”.
text = "retrato de un león viejo y cansado en una pose real"
output = deployed_model.predict(GenerationRequest(text_prompts=[TextPrompt(text=text)],
style_preset="photographic",
seed=111,
height=640,
width=1536,
))
Ahora intentemos el mismo prompt (“retrato de un león viejo y cansado en una pose real”) con modeling-compound como el style preset. La imagen de salida es una imagen distinta realizada sin tener ninguna sensación particular transmitida por el modelo, asegurando una absoluta libertad de estilo.
Multi-prompting con SDXL 1.0
Como hemos visto, una de las bases fundamentales del modelo es la capacidad de generar imágenes a través de prompts. SDXL 1.0 admite multi-prompting. Con multi-prompting, puedes mezclar conceptos asignando a cada prompt un peso específico. Como puedes ver en la siguiente imagen generada, tiene un fondo de selva con hierba verde alta y brillante. Esta imagen se generó utilizando los siguientes prompts. Puedes compararlo con un solo prompt de nuestro ejemplo anterior.
text1 = "retrato de un león viejo y cansado en una pose real"
text2 = "selva con hierba verde alta y brillante"
output = deployed_model.predict(GenerationRequest(
text_prompts=[TextPrompt(text=text1),
TextPrompt(text=text2, weight=0.7)],
style_preset="photographic",
seed=111,
height=640,
width=1536,
))
Imágenes generadas con conciencia espacial y prompts negativos
A continuación, analizamos el diseño de carteles con un prompt detallado. Como vimos antes, el multi-prompting te permite combinar conceptos para crear resultados nuevos y únicos.
En este ejemplo, el prompt es muy detallado en términos de posición del sujeto, apariencia, expectativas y entorno. El modelo también está tratando de evitar imágenes que tengan distorsión o estén mal renderizadas con la ayuda de un prompt negativo. La imagen generada muestra objetos y sujetos dispuestos espacialmente.
text = “Un lindo gato blanco y esponjoso se para sobre sus patas traseras, mirando curiosamente un espejo dorado y ornamentado. Pero en el reflejo, el gato no se ve a sí mismo, sino a un león poderoso. El espejo se ilumina con un suave resplandor sobre un fondo blanco puro.”
text = "Un lindo gato blanco y esponjoso se para sobre sus patas traseras, mirando curiosamente un espejo dorado y ornamentado. Pero en el reflejo, el gato no se ve a sí mismo, sino a un león poderoso. El espejo se ilumina con un suave resplandor sobre un fondo blanco puro."
negative_prompts = ['características de gato distorsionadas', 'características de león distorsionadas', 'mal renderizadas']
output = deployed_model.predict(GenerationRequest(
text_prompts=[TextPrompt(text=text)],
style_preset="enhance",
seed=43,
height=640,
width=1536,
steps=100,
cfg_scale=7,
negative_prompts=negative_prompts
))
Vamos a intentar otro ejemplo, donde mantenemos el mismo estímulo negativo pero cambiamos el estímulo detallado y el preajuste de estilo. Como puedes ver, la imagen generada no solo organiza espacialmente los objetos, sino que también cambia los preajustes de estilo prestando atención a detalles como el espejo dorado ornamentado y la reflexión solo del sujeto.
texto = "Un lindo gato blanco y esponjoso se encuentra de pie en sus patas traseras, mirando curiosamente en un espejo dorado ornamentado. En la reflexión, el gato se ve a sí mismo."
estimulos_negativos = ['características distorsionadas del gato', 'características distorsionadas de león', 'mal renderizado']
resultado = modelo_desplegado.predecir(SolicitudGeneracion(
estímulos_de_texto=[EstímuloDeTexto(texto=texto)],
preajuste_de_estilo="neón-punk",
semilla=4343434,
altura=640,
anchura=1536,
pasos=150,
escala_cfg=7,
estimulos_negativos=estimulos_negativos
))
Generación de rostros con SDXL 1.0
En este ejemplo, mostramos cómo SDXL 1.0 crea composiciones de imágenes mejoradas y generación de rostros con características realistas como manos y dedos. La imagen generada es de una figura humana creada por IA con las manos claramente levantadas. Observa los detalles en los dedos y la pose. Una imagen generada por IA como esta de otro modo habría sido amorfa.
texto = "Foto de un anciano con las manos levantadas, pose real."
resultado = modelo_desplegado.predecir(SolicitudGeneracion(
estímulos_de_texto=[EstímuloDeTexto(texto=texto)],
preajuste_de_estilo="fotográfico",
semilla=11111,
altura=640,
anchura=1536,
pasos=100,
escala_cfg=7,
))
Generación de texto usando SDXL 1.0
SDXL está preparado para flujos de trabajo de diseño de imágenes complejas que incluyen la generación de texto dentro de las imágenes. Este ejemplo muestra esta capacidad. Observa lo claro que es la generación de texto usando SDXL y nota el preajuste de estilo cinematográfico.
texto = "Escribe la siguiente palabra: Sueño"
resultado = modelo_desplegado.predecir(SolicitudGeneracion(estímulos_de_texto=[EstímuloDeTexto(texto=texto)],
preajuste_de_estilo="cinematográfico",
semilla=15,
altura=640,
anchura=1536,
muestreador="DDIM",
pasos=32,
))
Descubre SDXL 1.0 desde SageMaker JumpStart
SageMaker JumpStart se encarga de incorporar y mantener modelos base a los que puedes acceder, personalizar e integrar en tus ciclos de vida de ML. Algunos modelos son modelos de peso abierto que te permiten acceder y modificar los pesos y scripts del modelo, mientras que otros son modelos de peso cerrado que no te permiten acceder a ellos para proteger la propiedad intelectual de los proveedores del modelo. Los modelos de peso cerrado requieren que te suscribas al modelo desde la página de detalles del modelo en el AWS Marketplace, y SDXL 1.0 es un modelo de peso cerrado en este momento. En esta sección, repasamos cómo descubrir, suscribir y implementar un modelo de peso cerrado desde SageMaker Studio.
Puedes acceder a SageMaker JumpStart seleccionando JumpStart en Soluciones preconstruidas y automatizadas en la página de Inicio de SageMaker Studio.
Desde la página de inicio de SageMaker JumpStart, puedes buscar soluciones, modelos, cuadernos y otros recursos. La siguiente captura de pantalla muestra un ejemplo de la página de inicio con soluciones y modelos de base listados.
Cada modelo tiene una tarjeta de modelo, como se muestra en la siguiente captura de pantalla, que contiene el nombre del modelo, si es ajustable o no, el nombre del proveedor y una breve descripción sobre el modelo. Puedes encontrar el modelo Stable Diffusion XL 1.0 en el carrusel Modelo Base: Generación de Imágenes o buscarlo en el cuadro de búsqueda.
Puedes elegir Stable Diffusion XL 1.0 para abrir un cuaderno de ejemplo que te guíe sobre cómo utilizar el modelo SDXL 1.0. El cuaderno de ejemplo se abre en modo de solo lectura; debes elegir Importar cuaderno para ejecutarlo.
Después de importar el cuaderno, debes seleccionar el entorno de cuaderno adecuado (imagen, kernel, tipo de instancia, etc.) antes de ejecutar el código.
Desplegar SDXL 1.0 desde SageMaker JumpStart
En esta sección, te guiamos sobre cómo suscribirte y desplegar el modelo.
- Abre la página de listado de modelos en AWS Marketplace utilizando el enlace disponible desde el cuaderno de ejemplo en SageMaker JumpStart.
- En el listado de AWS Marketplace, elige Continuar para suscribirte.
Si no tienes los permisos necesarios para ver o suscribirte al modelo, comunícate con tu administrador de AWS o con el punto de contacto de adquisiciones. Muchas empresas pueden limitar los permisos de AWS Marketplace para controlar las acciones que alguien puede realizar en el Portal de Gestión de AWS Marketplace.
- Elige Continuar para suscribirte.
- En la página Suscribirse a este software, revisa los detalles de precios y el Acuerdo de Licencia de Usuario Final (EULA). Si estás de acuerdo, elige Aceptar oferta.
- Elige Continuar para configurar para comenzar a configurar tu modelo.
- Elige una Región compatible.
Verás que se muestra un ARN del producto. Este es el ARN del paquete del modelo que debes especificar al crear un modelo desplegable utilizando Boto3.
- Copia el ARN correspondiente a tu Región y especifícalo en la instrucción de la celda del cuaderno.
Es posible que la información de ARN ya esté disponible en el cuaderno de ejemplo.
- Ahora estás listo para empezar a seguir el cuaderno de ejemplo.
También puedes continuar desde AWS Marketplace, pero recomendamos seguir el cuaderno de ejemplo en SageMaker Studio para comprender mejor cómo funciona la implementación.
Limpieza
Cuando hayas terminado de trabajar, puedes eliminar el punto de enlace para liberar las instancias de Amazon Elastic Compute Cloud (Amazon EC2) asociadas a él y detener la facturación.
Obtén tu lista de puntos de enlace de SageMaker utilizando AWS CLI de la siguiente manera:
!aws sagemaker list-endpoints
Luego, elimina los puntos de enlace:
deployed_model.sagemaker_session.delete_endpoint(endpoint_name)
Conclusión
En esta publicación, te mostramos cómo empezar con el nuevo modelo SDXL 1.0 en SageMaker Studio. Con este modelo, puedes aprovechar las diferentes características ofrecidas por SDXL para crear imágenes realistas. Debido a que los modelos base están pre-entrenados, también pueden ayudar a reducir los costos de entrenamiento y de infraestructura y permitir la personalización para tu caso de uso.
Recursos
- SageMaker JumpStart
- JumpStart Foundation Models
- Página del producto SageMaker JumpStart
- Catálogo de modelos SageMaker JumpStart