ArtificialGuyBR

Home / Blog / Fixing things

CFG Scale en Stable Diffusion: matemática del control de guion

Cómo la escala CFG controla la adherencia al guion en Stable Diffusion, rangos óptimos por familia de modelos y por qué los modelos distilados usan CFG 1.

12 sources cited Fixing things

CFG Scale Explained: La matemática detrás del control del guion de Stable Diffusion

TL;DR

  • Qué hace CFG: la escala CFG multiplica la diferencia entre una predicción consciente del guion y una predicción no consciente del guion, empuja la imagen generada hacia el guion o lejos de él.
  • Los rangos óptimos varían: SD 1.5 funciona mejor normalmente con CFG 7, SDXL con 5-7, mientras que Flux dev, SDXL Turbo y SD-Turbo deben usar CFG 1 porque son modelos distilados/con guion incrustado.
  • Artefactos de alto CFG: superar el valor 12 puede causar saturación excesiva, sobreacetido y una hiperrealismo natural; los modelos distilados producen resultados lavados o distorsionados con CFG > 1.

Qué hace CFG realidad a las predicciones

El guidance libre de clasificador (CFG) mezcla dos versiones del modelo: una que presta atención a su guion (consciente del guion) y otra que más o menos lo ignora (no consciente del guion). Al mezclarlos, controla qué tan cerca sigue Stable Diffusion su guion en lugar de improvisar por su cuenta.

Durante el entrenamiento, el modelo aprende dos predicciones simultáneamente: la predicción condicional εθ(zλ, c)—qué ruido eliminar según su guion c—y la predicción incondicional εθ(zλ)—qué ruido eliminar según un token nulo. La escala CFG, denotada w, combina estas expresiones matemáticamente:

εθ(zλ, c) = (1 + w) · εθ(zλ, c) − w · εθ(zλ)

Con w = 0, el modelo ignora por completo el guion. A medida que aumenta w, la puntuación guiada se mueve más hacia la predicción condicional. Un CFG más alto hace que las imágenes sean más fieles al guion. La técnica fue introducida en Ho & Salimans (2022), que mostró que eliminar aleatoriamente los tokens de condicionamiento permite a una red producir ambas predicciones sin cambios arquitectónicos. La fórmula de la puntuación guiada (Eq. 6 del artículo) no tiene gradiente de clasificador presente, lo que la distingue del guidance de clasificador (arXiv:2207.12598).

Familia de modelos: cuándo usar qué CFG

SD 1.5 y checkpoints heredados

SD 1.5 se entrenó con un 10% de descarte de condicionamiento de texto (tarjeta del modelo SD 1.5). Los practicantes de la comunidad reportan un rango de trabajo de CFG 7-8, con 7 siendo el punto óptimo común para resultados equilibrados. Véase SAMPLES y programadores para ver cómo CFG interactúa con los pasos de sampling.

CFGResultado típico
4–5Más creativo, menos fiel al guion; útil para exploración de estilo
7Adherencia equilibrada y calidad para la mayoría de guiones
10+Hiperlatorico, puede introducir saturación excesiva o artefactos

Ponen SGXL base y refinadores

SDXL usa dos codificadores de texto (OpenCLIP-ViT/G y CLIP-ViT/L) y espera una resolución de 1024×1024 (tarjeta base SDXL). Los toques de la comunidad sugieren CFG 5-7 como un rango estándar para imágenes coherentes, con valores más altos para efectos deliberados. A diferencia de SD 1.5, SDXL es más sensible a los extremos del CFG; el procesamiento separado del refinador puede amplificar artefactos cuando la guion es demasiado agresiva.

Flux Dev: guion distilado, CFG debe ser 1

Flux dev es un modelo distilado para guion (artículo de distilación de guion, documentación del pipeline de Flux). La distilación incorpora la combinación de guion directamente en los pesos del modelo, haciendo que w sea una entrada en lugar de un factor de escala del sampler.

Esto significa:

  • Establecer CFG del sampler en exactamente 1.0
  • Ajustar el nodo FluxGuidance (o equivalente) para la adherencia de guion deseada

Usar CFG 7 en Flux dev duplicaría la aplicación de guion, lavando la imagen. El flujo de trabajo estándar usa el sampler Euler, cfg 1.0, y guion 3.5 (guía de flujo de trabajo de Flux, discusión Forge #1119).

Modelos Turbo: guion deshabilitado por diseño

SDXL Turbo y SD-Turbo están distilados para la síntesis de 1-4 pasos (tarjeta SDXL-Turbo, tarjeta SD-Turbo). Sus tarjetas de modelo indican explícitamente que no usan guidance_scale o negative_prompt, y guidance_scale=0.0 deshabilita el mecanismo. Usar CFG > 1 introduce artefactos y ralentiza la generación sin beneficio.

Otras variantes distiladas

Los mismos principios aplican a Anima-Turbo (CFG 1, 8-12 pasos) (tarjeta del modelo Anima), Z-Image-Turbo (guidance_scale=0.0) (tarjeta Z-Image-Turbo), y Flux Schnell (guidance_scale 0 o 1, 1-4 pasos).

Por qué CFG alto causa artefactos

Al ir el CFG más allá de la distribución de entrenamiento, se amplifica la diferencia entre las predicciones condicional y incondicional. La observación del practicante (DucHaiten, publicación Civitai 443573) indica que CFG por encima de 12 tiende a producir mayor nitidez, hiperesaturación y una fijación más literal a los tokens del guion (publicación Civitai 443573). La rama incondicional, entrenada con guiones vacíos, no puede contrarrestar de manera significativa la dirección agresiva. El artículo mismo indica que las muestras fuertemente guiadas muestran colores saturados (arXiv:2207.12598, captura de Figura 3).

Modelos distilados vs CFG 1: la razón técnica

El guidance distillation entrena un modelo estudiante para reproducir la salida combinada del maestro (artículo de distilación de guion). El modelo distilado toma w como entrada en lugar de ejecutar dos predicciones separadas. Ejecutar CFG encima duplicaría la aplicación de la guion, causando sobresaturación: o bien lavan los detalles (Flux) o introducen artefactos (Turbo). Esta regla también aplica a LCM-SDXL (guidance_scale 1.0-2.0 o deshabilitado) y SD-Turbo (guidance_scale=0), donde la guion se maneja por la arquitectura en el entrenamiento (tarjeta LCM-SDXL HF, tarjeta SD-Turbo HF).

Guiones negativos y modelos distilados

Los guiones negativos funcionan reemplazando el embedding de texto incondicional vacío con su texto negativo (wiki de Negative Prompt de AUTOMATIC1111). En modelos distilados como Flux dev, el guion negativo se ignora a menos que true_cfg_scale > 1 (documentación del pipeline diffusers). Para usar negativos en Flux, establecer true_cfg_scale > 1 y aceptar el costo adicional. Los modelos Turbo ignoran completamente los negativos porque guidance_scale=0 deshabilita el mecanismo (tarjeta SDXL-Turbo, tarjeta SD-Turbo).

Véase guía de guiones negativos para técnicas más allá de la negación.

Errores comunes y soluciones

SíntomaCausaSolución
Imagen lavada en FluxCFG > 1 con modelo distilado de guionEstablecer CFG del sampler en 1.0; usar nodo FluxGuidance
Guion negativo no tiene efecto en Fluxtrue_cfg_scale predeterminado es 1.0Establecer true_cfg_scale > 1 con guion negativo
Salida parece quemada o saturadaCFG demasiado alto para la familia de modelosReducir CFG; usar toques conocidos (7 para SD 1.5, 5-7 para SDXL)

FAQ

¿Qué cambia realmente la escala CFG entre las predicciones? La puntuación guiada es (1+w)·εθ(zλ, c) − w·εθ(zλ) (arXiv:2207.12598, Eq. 6). Un w más alto desplaza el resultado más hacia la predicción condicional.

¿Por qué el guion negativo no tiene efecto en Flux? Flux dev es un modelo distilado de guion (documentación del pipeline de diffusers). Sin true_cfg_scale > 1, no hay una rama incondicional separada que aleje los términos negativos.

¿Deben usar los modelos distilados CFG mayor que 1? No (artículo de distilación de guion, documentación del pipeline de diffusers). Los modelos distilados incorporan la guion en sus pesos. Usar CFG > 1 duplica la aplicación de la guion, causando resultados lavados o distorsionados.

¿Qué rango de CFG es normal para SDXL frente a SD 1.5? Los practicantes de SD 1.5 usan comúnmente CFG 7–8; los de SDXL sugieren 5–7 (tarjeta base SDXL). Ambas familias muestran resultados degradados en los extremos; el límite exacto varía por checkpoint.

¿Por qué el CFG alto se ve sobresaturado o "quemado"? Los valores de guion grandes amplifican las características ligadas a los tokens de guion más allá del rango visto durante el entrenamiento, enfatizando nitidez y saturación a costa de una apariencia natural (arXiv:2207.12598, Figura 3; publicación Civitai 443573).

¿Cuál es la fórmula detrás de CFG y de dónde vino? εθ(zλ, c) = (1 + w)·εθ(zλ, c) − w·εθ(zλ). Introducida en Ho & Salimans (2022) (arXiv:2207.12598).

¿SeedVR2 es adecuado para el tiling de una sola imagen? SeedVR2 es un upscaler de video que puede reutilizarse para frames individuales. El flujo de trabajo de la comunidad reportó un upscale de ~950% en una 3090 con 16 tiles. Verifique que la documentación del modelo apoye explícitamente imágenes individuales antes de recomendarlo para producción.

¿Por qué algunas interfaz de Forge muestran múltiples entradas CFG? Forge expone deslizadores CFG separados para modelos distilados como Flux (guía de flujo de trabajo de Flux). El CFG principal debe ser 1.0; ajuste el parámetro de guion distilado en su lugar. Véase guía de inpaint y outpaint para técnicas relacionadas.