Stable‑Diffusion.cpp: Motor ligero de inferencia de difusión en C++

Qué es stable‑diffusion.cpp?

stable‑diffusion.cpp es una implementación de código abierto, puro C/C++ de los modelos de difusión modernos. Lleva stable‑diffusion, Flux, Wan, Qwen‑Image, Z‑Image y otros algoritmos emergentes a cualquier sistema que pueda compilar C++ — desde servidores Linux hasta laptops Windows, e incluso Android mediante Termux. El proyecto está diseñado para ser:

  • Zero‑dependency – sin librerías externas aparte del runtime ggml incluido.
  • Cross‑platform – funciona en Linux, macOS, Windows, Macs basados en ARM y Android.
  • GPU‑friendly – soporta CUDA, Vulkan, Metal, OpenCL, SYCL e incluso ejecución solo en CPU con AVX / AVX2 / AVX512.
  • Performance‑oriented – uso de memoria optimizado, Flash‑Attention, tesselado VAE y aceleración basada en caché.

La biblioteca se inspira en llama.cpp y ggml, lo que la convierte en una opción natural para desarrolladores familiarizados con esos ecosistemas.

Funciones principales a primera vista

Feature Supported Models Notes
Generación de imágenes SD1.x, SD2.x, SD‑Turbo, SDXL, SDXL‑Turbo, SD‑v1.5, SD‑v2.5, SD‑3, SD‑3.5 Pipelines estándar de texto‑a‑imagen
Edición / Inpainting de imágenes FLUX.1‑Kontext‑dev, series Qwen‑Image‑Edit Soporta ediciones basadas en prompts
Generación de video Wan2.1, Wan2.2 Incluye condicionamiento consciente de movimiento
Upscale rápido ESRGAN Tamaño de mosaico personalizado
Decodificación optimizada para latencia TAESD Decodificación latente más rápida
LoRA & ControlNet SD1.5 Misma interfaz que stable‑diffusion‑webui
Modelos de Consistencia Latente LCM, LCM‑LoRA Añadido en 2025
Elección de back‑end CPU, CUDA, Vulkan, Metal, OpenCL, SYCL Arquitectura plug‑in
Formatos de pesos .ckpt/.pth, .safetensors, .gguf Carga flexible de pesos
API de línea de comandos sd-cli Generación de imágenes en una línea
C API sd.h / sd.cpp Integrar en otros proyectos
Docker & CI Imágenes Docker Compilar para Linux & Windows

Empezando: Construir y ejecutar

1. Instalar dependencias

# En Ubuntu
sudo apt-get update && sudo apt-get install -y build-essential git cmake
# En macOS con Homebrew
brew install cmake git

2. Clonar el repositorio

 git clone https://github.com/leejet/stable-diffusion.cpp
 cd stable-diffusion.cpp

3. Construir desde fuente

mkdir build && cd build
cmake .. -Dggml_backend=cpu   # o cuda, vulkan, metal, etc.
make -j$(nproc)

4. Descargar pesos del modelo

 git clone https://huggingface.co/stable-diffusion-v1-5
 curl -L -O https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors

5. Generar una imagen

./bin/sd-cli -m ../models/v1-5-pruned-emaonly.safetensors -p "a cyberpunk city at dusk"

La salida PNG también embebe los embeddings del modelo como una cadena de tokens compatible con web‑UI.

Consejos de rendimiento

Tip Explicación
Usar GGUF El formato .gguf está cuantificado y carga más rápido.
Habilitar Flash‑Attention Reduce el uso de VRAM en gran medida en CUDA.
Tesselado VAE Reduce la memoria pico para imágenes grandes.
Capa de caché ./bin/sd-cli --use-cache reutiliza estados de modelo anteriores.
Usar Metal en macOS Proporciona ~40 % de aceleración respecto a CPU.

Las pruebas de rendimiento en un MacBook Pro 2020 (CPU 10 núcleos, GPU 3070) muestran generación de una imagen SD‑XL 512×512 en ~32 s en CPU, reducida a ~2.5 s en NVIDIA 3070 con CUDA + Flash‑Attention.

Extender la biblioteca

La API es intencionalmente ligera. Para añadir nuevos modelos: 1. Añade una definición de modelo (.h/.cpp) y referencia el formato ggml. 2. Actualiza CMakeLists.txt y añade una entrada en docs/. 3. Envía un PR y lo verás en la próxima release!

Ejemplos de extensiones comunitarias incluyen: - Bindings en Pythonstable-diffusion-cpp-python - Wrapper en Gostable-diffusion - Runtime en Rustdiffusion-rs - Widget Flutterlocal-diffusion

Comunidad y contribución

El repositorio tiene más de 5 000 estrellas, 500 forks y una base de colaboradores vibrante. Si estás interesado en contribuir: - Haz fork del repositorio. - Crea ramas de características. - Envía PRs con mensajes de commit claros. - Ejecuta pruebas (make check). - Participa en la conversación de issues.

El proyecto también incluye un conjunto de imágenes Docker listas para implantar rápidamente en producción o entornos CI.

Por qué elegir stable‑diffusion.cpp?

  • Rendimiento y simplicidad – Aprovecha al máximo tu GPU sin aprender un nuevo framework.
  • Cobertura amplia de modelos – Desde el clásico SD hasta los últimos modelos Flux y Wan.
  • Personalizable – Cambia back‑ends, usa cuantización o incrústalo en tu propio servicio C++.
  • Desarrollo en vivo – Releases activos cada mes y soporte de nuevos modelos añadido mensualmente.

¿Listo para probar? Descarga los binarios precompilados de la página de releases o crea el tuyo propio. La documentación se actualiza continuamente y la comunidad es increíblemente útil.


Próximos pasos: 1. Elige un back‑end de motor que coincida con tu hardware. 2. Descarga un modelo y genera una imagen de prueba. 3. Explora la carpeta examples/ para pipelines más avanzados como edición de imágenes o generación de video.

¡Feliz difusión!

Artículo original: Ver original

Compartir este artículo