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.