msochan/stable-diffusion-xl-base-1.0

msochan
Texto a imagen

Duplicado en Hugging Face del modelo Stable Diffusion XL Base 1.0 de Stability AI. Es un modelo generativo de texto a imagen basado en difusión latente que puede crear y modificar imágenes a partir de prompts de texto. SDXL usa dos codificadores de texto preentrenados fijos, OpenCLIP-ViT/G y CLIP-ViT/L, y puede funcionar como modelo base independiente o como primera etapa dentro de un flujo base + refiner para mejorar el denoising final y la calidad de alta resolución.

Como usar

Instalación y uso básico con Diffusers:

pip install -U diffusers transformers accelerate
import torch
from diffusers import DiffusionPipeline

# switch to "mps" for apple devices
pipe = DiffusionPipeline.from_pretrained(
    "msochan/stable-diffusion-xl-base-1.0",
    dtype=torch.bfloat16,
    device_map="cuda"
)

prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"
image = pipe(prompt).images[0]

Uso del modelo base SDXL con Diffusers:

pip install diffusers --upgrade
pip install invisible_watermark transformers accelerate safetensors
from diffusers import DiffusionPipeline
import torch

pipe = DiffusionPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0",
    torch_dtype=torch.float16,
    use_safetensors=True,
    variant="fp16"
)
pipe.to("cuda")

# if using torch < 2.0
# pipe.enable_xformers_memory_efficient_attention()

prompt = "An astronaut riding a green horse"
images = pipe(prompt=prompt).images[0]

Uso del flujo base + refiner como ensemble of experts:

from diffusers import DiffusionPipeline
import torch

# load both base & refiner
base = DiffusionPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0",
    torch_dtype=torch.float16,
    variant="fp16",
    use_safetensors=True
)
base.to("cuda")

refiner = DiffusionPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-refiner-1.0",
    text_encoder_2=base.text_encoder_2,
    vae=base.vae,
    torch_dtype=torch.float16,
    use_safetensors=True,
    variant="fp16",
)
refiner.to("cuda")

# Define how many steps and what % of steps to be run on each experts (80/20) here
n_steps = 40
high_noise_frac = 0.8

prompt = "A majestic lion jumping from a big stone at night"

# run both experts
image = base(
    prompt=prompt,
    num_inference_steps=n_steps,
    denoising_end=high_noise_frac,
    output_type="latent",
).images
image = refiner(
    prompt=prompt,
    num_inference_steps=n_steps,
    denoising_start=high_noise_frac,
    image=image,
).images[0]

Optimización con torch.compile en PyTorch 2.0 o superior:

pipe.unet = torch.compile(pipe.unet, mode="reduce-overhead", fullgraph=True)

Si la VRAM de la GPU es limitada, se puede activar offloading a CPU en lugar de mover todo el pipeline a CUDA:

- pipe.to("cuda")
+ pipe.enable_model_cpu_offload()

Uso con Optimum y OpenVINO:

pip install optimum[openvino]
- from diffusers import StableDiffusionXLPipeline
+ from optimum.intel import OVStableDiffusionXLPipeline

model_id = "stabilityai/stable-diffusion-xl-base-1.0"

- pipeline = StableDiffusionXLPipeline.from_pretrained(model_id)
+ pipeline = OVStableDiffusionXLPipeline.from_pretrained(model_id)

prompt = "A majestic lion jumping from a big stone at night"
image = pipeline(prompt).images[0]

Uso con Optimum y ONNX Runtime:

pip install optimum[onnxruntime]
- from diffusers import StableDiffusionXLPipeline
+ from optimum.onnxruntime import ORTStableDiffusionXLPipeline

model_id = "stabilityai/stable-diffusion-xl-base-1.0"

- pipeline = StableDiffusionXLPipeline.from_pretrained(model_id)
+ pipeline = ORTStableDiffusionXLPipeline.from_pretrained(model_id)

prompt = "A majestic lion jumping from a big stone at night"
image = pipeline(prompt).images[0]

Funcionalidades

Generación de imágenes a partir de texto con la arquitectura Stable Diffusion XL.
Modelo base SDXL utilizable de forma independiente o combinado con el refiner SDXL 1.0.
Pipeline de difusión latente con enfoque de ensemble of experts para separar generación inicial y refinamiento final.
Compatible con Diffusers, Safetensors, ONNX y flujos de Optimum para OpenVINO u ONNX Runtime.
Soporta generación de latentes para una segunda etapa de refinado con SDEdit/img2img usando el mismo prompt.
Licencia CreativeML Open RAIL++-M / openrail++.
Mejor preferencia de usuarios frente a Stable Diffusion 1.5, 2.1 y SDXL 0.9 según la evaluación descrita en la ficha.

Casos de uso

Investigación sobre modelos generativos de texto a imagen y difusión latente.
Generación de obras visuales, diseño conceptual y procesos artísticos asistidos por IA.
Herramientas educativas o creativas que necesitan producir imágenes desde prompts.
Evaluación de despliegues seguros para modelos capaces de generar contenido dañino.
Estudio de sesgos, limitaciones y fallos composicionales en modelos generativos visuales.
Generación base de latentes para pipelines de alta resolución con un refiner especializado.