kostakoff/stable-diffusion-2-GGUF

kostakoff
Texto a imagen

Versión cuantizada de Stable Diffusion 2 en formato GGUF, preparada para ejecutarse con stable-diffusion.cpp/sd.cpp. Está orientada a generación de imágenes texto-a-imagen en local, con pesos convertidos desde 768-v-ema.safetensors y cuantizaciones Q8_0, Q4_K y Q4_0 para equilibrar calidad, tamaño y velocidad.

Como usar

Instalación y uso con Diffusers:

pip install -U diffusers transformers accelerate

import torch
from diffusers import DiffusionPipeline

# switch to "mps" for apple devices
pipe = DiffusionPipeline.from_pretrained("kostakoff/stable-diffusion-2-GGUF", dtype=torch.bfloat16, device_map="cuda")

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

Descarga de pesos GGUF:

wget https://huggingface.co/kostakoff/stable-diffusion-2-GGUF/resolve/main/768-v-ema-Q8_0.gguf
# Other quantizations:
# wget https://huggingface.co/kostakoff/stable-diffusion-2-GGUF/resolve/main/768-v-ema-Q4_K.gguf
# wget https://huggingface.co/kostakoff/stable-diffusion-2-GGUF/resolve/main/768-v-ema-Q4_0.gguf

Compilación de stable-diffusion.cpp con CUDA:

git clone https://github.com/leejet/stable-diffusion.cpp
cd stable-diffusion.cpp
git submodule init
git submodule update
mkdir build && cd build
cmake .. -DSD_CUDA=ON
cmake --build . --config Release

Inicio del servidor local:

export CUDA_VISIBLE_DEVICES=0
./stable-diffusion.cpp/build/bin/sd-server \
  -m ./768-v-ema-Q8_0.gguf \
  --listen-ip 0.0.0.0 \
  --listen-port 8081 \
  --seed -1

Generación de imagen mediante endpoint compatible con OpenAI:

curl -s http://127.0.0.1:8081/v1/images/generations \
  -H "Content-Type: application/json" \
  -d '{ "model": "sd2.0", "prompt": "A lovely cat", "n": 1, "size": "768x768", "response_format": "b64_json" }' | jq -r '.data[0].b64_json' | base64 --decode > output.png

Conversión de pesos desde safetensors:

# Q4_0
./stable-diffusion.cpp/build/bin/sd-cli -M convert \
  -m ~/llm/models/sd2.0/768-v-ema.safetensors \
  -o 768-v-ema-Q4_0.gguf -v --type q4_0

# Q4_K
./stable-diffusion.cpp/build/bin/sd-cli -M convert \
  -m ~/llm/models/sd2.0/768-v-ema.safetensors \
  -o ./768-v-ema-Q4_K.gguf -v --type q4_K

# Q8_0
./stable-diffusion.cpp/build/bin/sd-cli -M convert \
  -m ~/llm/models/sd2.0/768-v-ema.safetensors \
  -o ./768-v-ema-Q8_0.gguf -v --type q8_0

Funcionalidades

Generación texto-a-imagen basada en Stable Diffusion v2.
Pesos en formato GGUF compatibles con stable-diffusion.cpp.
Cuantización Q8_0 para alta calidad con menor tamaño que bf16.
Cuantización Q4_K como opción equilibrada entre calidad y tamaño.
Cuantización Q4_0 como opción más pequeña y rápida, con ligera pérdida de calidad.
Servidor local con endpoint compatible con OpenAI `/v1/images/generations`.
Modelo base: `sd2-community/stable-diffusion-2`.
Licencia heredada: CreativeML Open RAIL++-M / openrail++.

Casos de uso

Generar imágenes 768x768 a partir de prompts de texto en un entorno local.
Ejecutar Stable Diffusion 2 con stable-diffusion.cpp sin depender de proveedores externos de inferencia.
Servir generación de imágenes mediante una API local compatible con OpenAI.
Probar distintas cuantizaciones GGUF para ajustar consumo de memoria, tamaño de archivo, velocidad y calidad.
Integrar generación texto-a-imagen en aplicaciones locales usando herramientas como Diffusers, Draw Things, DiffusionBee o sd.cpp.