Modular ComfyUI: un grafo para txt2img, img2img y upscale
Cree un único grafo ComfyUI para txt2img, img2img y upscale usando bypass, el parámetro denoise de KSampler y plantillas reutilizables.
On this page
- TL;DR
- Por qué importan los flujos de trabajo modulares
- El mecanismo de alternancia: omitir, no eliminar
- Un grafo, tres modos
- Ramas de acondicionamiento opcional
- Agrupación: solo visual, no reutilizable
- Tabla de referencia de configuración
- Errores comunes y correcciones
- Preguntas frecuentes
- Fuentes
- Enlaces internos
Flujos de trabajo modulares de ComfyUI: un grafo para txt2img, img2img y upscale
TL;DR
- Alternar cualquier etapa con
Ctrl + B. Los nodos omitidos permanecen en el lienzo pero se eliminan de la ejecución. - Un grafo, tres modos:
EmptyLatentImagepara txt2img,VAEEncode+denoise < 1.0para img2img,UpscaleModelLoader → ImageUpscalepara escalar. - Agrupar para mayor claridad, no para reutilizar:
Ctrl + Gcolapsa visualmente. Para una verdadera reutilización, use plantillas.jsono un nodo personalizado.
Por qué importan los flujos de trabajo modulares
Los flujos de trabajo de ComfyUI son grafos acíclicos dirigidos. Cada tarea —cargar modelo, codificar el prompt, muestrear, decodificar, escalar— es un nodo discreto con entradas y salidas tipadas. Como el grafo es un flujo de datos y no código imperativo, puede recablear, omitir o duplicar ramas sin reescribir la lógica. Un flujo de trabajo modular mantiene las etapas opcionales (ControlNet, IPAdapter, upscaler) en ramas separadas que se pueden omitir, de modo que el mismo .json cubre texto a imagen, imagen a imagen y hires fix sin duplicación.
El mecanismo de alternancia: omitir, no eliminar
Cómo funciona el bypass
Seleccione cualquier nodo y presione Ctrl + B. ComfyUI lo elimina del grafo de ejecución y une las entradas directamente a las salidas. El nodo permanece en el lienzo (atenuado) para que pueda volver a habilitarlo al instante con otro Ctrl + B.
Fuente: Léame de ComfyUI: "Ctrl+B— Omitir los nodos seleccionados (actúa como si el nodo se eliminara del grafo y los cables se volvieran a conectar)" [^1]
Puede que exista un "Omitir nodo" al hacer clic con el botón derecho en compilaciones recientes de la interfaz, pero el mecanismo documentado es Ctrl + B.
Cuándo omitir o eliminar
Escenario | Acción ----------|-------- Desactivación temporal | Ctrl + B Eliminación permanente | Eliminar y volver a cablear manualmente Cambio de modelo | Mantener el nodo, cambiar la entrada del cargador
Un grafo, tres modos
El pivote es KSampler. Su entrada latent_image y el parámetro denoise determinan el modo de generación.
txt2img (generación pura)
EmptyLatentImage → KSampler (denoise = 1.0) → VAEDecode
EmptyLatentImage crea ruido puro en la resolución objetivo. denoise = 1.0 significa que el muestreador ignora por completo la estructura latente de entrada.
img2img (transformación guiada)
LoadImage → VAEEncode → KSampler (denoise < 1.0) → VAEDecode
VAEEncode comprime la imagen de entrada al espacio latente. Los documentos de KSampler dicen que "los valores más bajos mantendrán la estructura de la imagen inicial permitiendo el muestreo de imagen a imagen" [^2]. denoise < 1.0 preserva esa estructura; los valores más bajos permanecen más cerca de la fuente, los más altos permiten una desviación más creativa.
Upscale (hires fix)
KSampler → VAEDecode → UpscaleModelLoader → ImageUpscale → (opcional) VAEDecode de nuevo
UpscaleModelLoader lee un archivo de modelo desde models/upscale_models/ (por ejemplo 4x-UltraSharp.pth). Para un hires fix real, inserte un segundo KSampler después de ImageScale → VAEEncode, siguiendo el patrón de dos pasadas vinculado en los ejemplos de ComfyUI [^1].
Ramas de acondicionamiento opcional
ControlNet (integrado)
ControlNetApply y ControlNetApplyAdvanced son nodos integrados. Toman:
- acondicionamiento positivo/negativo
- el modelo
control_net(cargado medianteControlNetLoader) - una imagen preprocesada: Canny, OpenPose, Depth, etc.
strength(0–10, recomendado 0,5–1,5)
La salida es un acondicionamiento modificado. Para deshabilitarlo: omita ControlNetApply.
Fuente: Documentos de ControlNetApply: "Controla la intensidad de los ajustes de red, rango de valores de 0 a 10. Los valores recomendados entre 0,5 y 1,5 son razonables". [^3]
IPAdapter (de terceros)
IPAdapter no es un nodo integrado. Proviene de paquetes de nodos personalizados de la comunidad (por ejemplo comfyui-ipadapter). La cadena típica:
LoadImage → IPAdapterEncoder → IPAdapterApply → conditioning
Para deshabilitarlo: omita IPAdapterApply. IPAdapter no tiene un interruptor de encendido/apagado separado del bypass.
Agrupación: solo visual, no reutilizable
Ctrl + G crea un grupo visual plegable. Ayuda a la legibilidad, pero no crea un subgrafo invocable, no permite la reutilización mediante arrastrar y soltar ni exporta un componente independiente.
Para una verdadera reutilización:
Enfoque | Cómo funciona | Desventaja ----------|--------------|----------- Plantillas de flujo de trabajo | Guardar un .json con solo el subgrafo; importar mediante Flujos de trabajo → Abrir | Cableado manual cada vez Nodo personalizado (Python) | Escribir un nodo que construya internamente el subgrafo | Requiere Python, la API más limpia Copiar y pegar + reagrupar | Ctrl + C / Ctrl + V entre pestañas | El más rápido para reutilización ad hoc
Fuente: Léame de ComfyUI: "Ctrl+G— Agrupar nodos seleccionados" — la agrupación es un acceso directo de la interfaz, no un sistema de módulos [^1].
Tabla de referencia de configuración
Parámetro | txt2img | img2img | Upscale (HR fix) | Source ----------|---------|---------|-----------------|-------- KSampler latent_image | EmptyLatentImage | VAEEncode(LoadImage) | Primera pasada: EmptyLatentImage; segunda: VAEEncode(ImageScale) | [^2] KSampler denoise | 1.0 | cualquier valor por debajo de 1.0 | Primera pasada: 1.0; segunda: por debajo de 1.0 | [^2] ControlNet strength | 0.5–1.5 si se usa | 0.5–1.5 | Normalmente desactivado en el pase de upscale | [^3] Upscale model | — | — | ejemplo 4x-UltraSharp.pth en models/upscale_models/ | [^4] Cargador de checkpoints | CheckpointLoaderSimple | CheckpointLoaderSimple | compartido entre todos los pases | [^5]
Errores comunes y correcciones
Error | Causa | Corrección -------|-------|----------- "Cargar > Cargar (nodos personalizados)" no aparece | Instalar nodos personalizados no es cargar el flujo de trabajo | Use Flujos de trabajo → Abrir (Ctrl+O) o arrastre .json al lienzo [^6] Nodo IPAdapter inexistente | IPAdapter no está integrado | Instale un paquete de nodos personalizados mediante ComfyUI Manager ControlNet no hace nada | Preprocesador inexistente o formato de imagen incorrecto | Instale comfyui-controlnet-preprocessors; haga coincidir el preprocesador con el tipo de entrada UpscaleModelLoader no muestra modelos | El archivo del modelo no está en models/upscale_models/ | Coloque .pth/.onnx ahí, luego actualice o reinicie [^4] img2img ignora la imagen de entrada | denoise queda en 1.0 | Establezca denoise por debajo de 1.0 [^2] El nodo omitido todavía se ejecuta | El nodo no fue omitido | Vuelva a seleccionar el nodo, presione Ctrl + B y verifique el atenuado y la continuidad de los cables
Preguntas frecuentes
¿Cómo activo y desactivo una etapa del flujo de trabajo? Seleccione el nodo y presione Ctrl + B. Presione de nuevo para volver a habilitarlo.
¿Puede un mismo grafo ComfyUI manejar txt2img, img2img y upscale? Sí. Alimente a KSampler un EmptyLatentImage para txt2img, un latente VAEEncode con denoise < 1.0 para img2img y encadene UpscaleModelLoader → ImageUpscale tras la decodificación para escalar. Todos comparten el mismo checkpoint, CLIP y VAE.
¿Existe un producto oficial llamado "ComfyUI Modular Node System"? No. El lema de ComfyUI es "la interfaz modular de modelo de difusión más potente", en referencia a su arquitectura de grafo de nodos. No existe un producto ni API llamado "Sistema de nodo modular".
¿Cómo cargo un JSON de flujo de trabajo en ComfyUI? Arrastre el .json al lienzo o use Flujos de trabajo → Abrir (Ctrl+O). La entrada "Cargar (nodos personalizados)" instala paquetes de nodos personalizados de Python, no flujos de trabajo.
¿Tiene ComfyUI un "Omitir nodo" en el menú del botón derecho? El bypass documentado es Ctrl + B. Puede que exista un bypass por menú contextual en compilaciones recientes, pero no está en la tabla oficial de atajos.
¿Son IPAdapter y ControlNet nodos integrados de ComfyUI? ControlNetApply y ControlNetApplyAdvanced están integrados. IPAdapter es un nodo personalizado de terceros.
¿Qué hace realmente el parámetro denoise de KSampler? En 1.0 (predeterminado), el muestreador trata el latente de entrada como ruido puro. Por debajo de 1.0, combina la estructura del latente de entrada con la salida desruidizada; los valores más bajos conservan más de la imagen original.
¿Cómo consigo un grupo de nodos verdaderamente reutilizable? Guarde un subgrafo como plantilla .json e impórtelo manualmente, escriba un nodo Python personalizado o copie y pegue nodos entre pestañas de flujo de trabajo.
Fuentes
[^1]: Léame de ComfyUI — atajos y arquitectura — https://github.com/Comfy-Org/ComfyUI [^2]: Documentación del nodo integrado KSampler — https://docs.comfy.org/built-in-nodes/KSampler.md [^3]: Documentación del nodo integrado ControlNetApply — https://docs.comfy.org/built-in-nodes/ControlNetApply.md [^4]: Documentación del nodo integrado UpscaleModelLoader — https://docs.comfy.org/built-in-nodes/UpscaleModelLoader.md [^5]: Documentación del nodo integrado CheckpointLoaderSimple — https://docs.comfy.org/built-in-nodes/CheckpointLoaderSimple.md [^6]: Tutorial de texto a imagen de ComfyUI (carga de flujo de trabajo) — https://docs.comfy.org/tutorials/basic/text-to-image