Diffusers con Python reproducible

Cuando una imagen forma parte de un curso, campaña o producto, necesitas repetirla, compararla y documentarla. Ahí Diffusers gana: convierte la generación en código versionable.

Objetivos de aprendizaje
  • Crear un script mínimo de generación de imágenes.
  • Controlar seed, tamaño, pasos y nombre de salida.
  • Guardar un manifest para auditar resultados.
En cristiano: seed. Es el punto de partida aleatorio. Si guardas modelo, prompt, parámetros y seed, puedes acercarte al mismo resultado y comparar cambios con justicia.

Entorno

Terminal
mkdir imagenes-diffusers
cd imagenes-diffusers
python -m venv .venv
source .venv/bin/activate
pip install -U diffusers transformers accelerate sentencepiece safetensors

Script base

Terminal
import json
import torch
from diffusers import FluxPipeline

model_id = "black-forest-labs/FLUX.1-schnell"
prompt = "clear educational diagram about local AI, calm workspace, Spanish labels, no logos"
seed = 2048

pipe = FluxPipeline.from_pretrained(model_id, torch_dtype=torch.bfloat16)
pipe.enable_model_cpu_offload()

image = pipe(
    prompt,
    num_inference_steps=4,
    guidance_scale=0.0,
    generator=torch.Generator("cpu").manual_seed(seed),
).images[0]

image.save("salida-local-ai-2048.png")

manifest = {
    "model_id": model_id,
    "prompt": prompt,
    "seed": seed,
    "steps": 4,
    "guidance_scale": 0.0,
    "output": "salida-local-ai-2048.png",
}

with open("salida-local-ai-2048.manifest.json", "w", encoding="utf-8") as f:
    json.dump(manifest, f, ensure_ascii=False, indent=2)
Idea clave. FLUX.1 schnell está pensado para pocas iteraciones. Si cambias de modelo, revisa parámetros recomendados: no todos responden igual a pasos, guidance o resolución.
Cuidado. Diffusers facilita ejecutar modelos, pero no elimina sus requisitos de memoria. Si tu GPU no llega, usa offload, baja resolución o ejecuta en una máquina temporal con GPU.
Comprueba que funciona. Genera tres imágenes con la misma seed cambiando solo una palabra del prompt. Si puedes explicar qué cambió y por qué, ya tienes una base reproducible.
Guardar y reabrir el proyecto.
El manifest es parte del resultado. Una imagen sin modelo, prompt y seed es difícil de mejorar y difícil de defender.