ArtificialGuyBR

Home / Blog / AI video

Flujo de LoRA de Wan 2.2: High Noise vs Low Noise

Cadena secuencial de ComfyUI: el KSampler de high noise alimenta al de low noise. Guía de configuración y entrenamiento con LoraLoaderModelOnly.

8 sources cited AI video

Flujo de LoRA de Wan 2.2: High Noise vs Low Noise

Un consejo común de la comunidad afirma que Wan 2.2 requiere dos pipelines independientes — uno para el experto de high noise y otro para el experto de low noise — cada uno con su propio ModelSamplingSD3 y KSampler. El flujo de trabajo oficial de ComfyUI encadena los dos expertos secuencialmente a través de un único flujo de latent.

TL;DR

  • Secuencial, no paralelo. El KSampler de high noise envía su latent parcialmente desruidado directamente al KSampler de low noise: un único flujo de latent compartido, no dos pipelines independientes.
  • Usa LoraLoaderModelOnly. Aplica LoRA solo al modelo de difusión y deja intacto el codificador de texto T5 compartido. El LoraLoader estándar modifica tanto el modelo de difusión como el codificador CLIP/T5.
  • Se necesitan dos nodos ModelSamplingSD3. Cada experto es un objeto de modelo separado cargado por su propio UNETLoader; ambos necesitan parches shift=8.0 independientes.

Por qué Wan 2.2 usa dos modelos expertos

La variante 14B de Wan 2.2 usa una arquitectura Mixture-of-Experts que separa el desruido entre dos modelos especializados [1]. El experto de high noise se encarga del desruido de etapa temprana (timesteps ~875–1000) para la composición, el layout y el movimiento. El experto de low noise se encarga del desruido de etapa tardía (timesteps ~0–875) para la textura, el detalle facial y la fidelidad del color [1]. Ambos expertos contienen ~14B de parámetros cada uno (27B en total), pero solo 14B están activos por paso, ya que el modelo cambia de experto según la SNR [1].

El umbral de SNR determina el punto de transición [1]. El flujo de trabajo oficial de ComfyUI implementa esto mediante dos nodos KSamplerAdvanced en secuencia: el primero ejecuta los pasos 0–10, y su latent de salida se convierte en la entrada del segundo, que ejecuta los pasos 10–20 [3]. La etapa de low noise requiere el latent parcialmente desruidado de la etapa de high noise.

Para más información sobre la programación de la difusión, consulta Fundamentos de entrenamiento de Wan 2.1.

La corrección crítica: secuencial, no paralelo

Varias fuentes de la comunidad describen Wan 2.2 como si requiriera "dos pipelines paralelos" — una cadena de high noise y otra de low noise, cada una con su propio ModelSamplingSD3 y KSampler [4]. El JSON oficial del flujo de trabajo 14B T2V de ComfyUI revela una estructura secuencial: dos nodos UNETLoader (uno por experto), cada uno con su propio ModelSamplingSD3, y luego dos nodos KSamplerAdvanced en serie. El sampler de high noise (pasos 0–10) genera un LATENT que se conecta directamente al sampler de low noise (pasos 10–20) como entrada [3]. Existe un único flujo de latent compartido.

Ejecutar el experto de low noise desde ruido puro produce una salida incoherente, porque espera un latent parcialmente estructurado. Ejecutar solo el experto de high noise se detiene en el paso 10 y deja ruido visible [5]. Ambas etapas son necesarias y deben encadenarse en orden.

El pipeline completo para un flujo de trabajo Wan 2.2 14B con LoRAs es el siguiente:

  1. UNETLoader (high noise) → carga wan2.2_t2v_high_noise_14B_fp8_scaled.safetensors
  2. LoraLoaderModelOnly → encadena tantos nodos LoRA como necesites, cada uno tomando la salida MODEL del anterior
  3. ModelSamplingSD3 → parchea el modelo de high noise con shift=8.0 [8]
  4. KSamplerAdvanced (high noise) → start_step=0, end_step=10, return_with_leftover_noise=enable
  5. KSamplerAdvanced (low noise) → start_step=10, end_step=20, return_with_leftover_noise=disable (recibe el latent del paso 4)
  6. UNETLoader (low noise) → carga wan2.2_t2v_low_noise_14B_fp8_scaled.safetensors
  7. LoraLoaderModelOnly → la misma cadena de LoRAs aplicada a la base de low noise
  8. ModelSamplingSD3 → parchea el modelo de low noise con shift=8.0 [8]

Para los fundamentos de los nodos de ComfyUI, consulta Conceptos básicos de pipelines de ComfyUI.

Ambos nodos ModelSamplingSD3 usan shift=8.0 en el flujo de trabajo oficial [3]. No fusiones los dos nodos ModelSamplingSD3 en uno: operan sobre objetos de modelo separados cargados por nodos UNETLoader distintos.

Por qué LoraLoaderModelOnly, no LoraLoader

Wan 2.2 usa un único codificador de texto T5 (umt5_xxl) compartido entre ambos expertos, y el entrenamiento estándar de LoRA se dirige solo al transformer de difusión [6]. El nodo LoraLoader estándar devuelve tanto un modelo modificado como un CLIP modificado: su código fuente llama a comfy.sd.load_lora_for_models(model, clip, lora, strength_model, strength_clip) y devuelve (model_lora, clip_lora) [7]. Como los LoRAs de Wan 2.2 no contienen pesos de CLIP, aplicarlos al codificador compartido es innecesario y puede cambiar el comportamiento del codificador.

LoraLoaderModelOnly aplica el parche solo al MODEL: su código fuente pasa None para clip y 0 para strength_clip [7]. Devuelve una única salida MODEL que alimenta el siguiente nodo de la cadena, y la descripción del nodo indica que "múltiples nodos LoRA pueden encadenarse" [7].

El parámetro strength_model controla con qué fuerza los pesos del LoRA modifican el modelo.

Parámetros de entrenamiento

El flujo de trabajo de Wan 2.2 de musubi-tuner usa --network_dim 16 --network_alpha 16 con --learning_rate 3e-4 y un programador LR polinómico (power=8) [6]. Todos los hiperparámetros — optimizador (adamw, weight_decay=0.1), precisión mixta (fp16), gradient checkpointing y --fp8_base — son compartidos entre ambas corridas de entrenamiento de expertos [6].

Modelos necesarios y nombres de archivo

La lista oficial de recursos de ComfyUI indica estos archivos para las variantes 14B [2][3]:

ComponenteModelo T2VModelo I2V
Experto de high noisewan2.2_t2v_high_noise_14B_fp8_scaled.safetensorswan2.2_i2v_high_noise_14B_fp16.safetensors
Experto de low noisewan2.2_t2v_low_noise_14B_fp8_scaled.safetensorswan2.2_i2v_low_noise_14B_fp16.safetensors
VAE (modelos 14B)wan_2.1_vae.safetensorswan_2.1_vae.safetensors
Codificador de textoumt5_xxl_fp8_e4m3fn_scaled.safetensorsumt5_xxl_fp8_e4m3fn_scaled.safetensors

Coloca todos los modelos de difusión en ComfyUI/models/diffusion_models/, el VAE en ComfyUI/models/vae/ y el codificador de texto en ComfyUI/models/text_encoders/ [2].

La variante de modelo 5B (wan2.2_ti2v_5B_fp16.safetensors) usa un VAE distinto (wan2.2_vae.safetensors) y un único archivo de modelo — sin división high/low noise [2]. El flujo de trabajo descrito aquí se aplica solo a los modelos 14B.

Errores comunes y soluciones

SíntomaCausaSolución
El video de salida tiene ruido o se detiene en un paso tempranoSolo se ejecuta el KSampler de high noise; falta la etapa de low noiseAñade un segundo KSamplerAdvanced (pasos 10→20) y conecta la salida de latent del primer KSampler a él [3]
El LoRA se aplica a un solo experto, así que su efecto aparece en los primeros pasos y luego se desvaneceLa cadena de LoRAs alimenta el KSampler de high noise pero no el de low noise (o al revés)Carga la misma cadena de LoRAs en ambos expertos — véanse los pasos 2 y 7 anteriores [7]
La adherencia al prompt cambia de forma inesperada tras añadir un LoRALoraLoader también parchea el codificador de texto umt5 compartido; los LoRAs de Wan 2.2 se entrenan solo contra el DiTUsa LoraLoaderModelOnly, que pasa None para clip y deja el codificador intacto [7]
Solo se aplica el último LoRA de la cadenaNodos mal encadenados — cada uno debe tomar la salida MODEL del nodo anteriorConecta la salida de cada LoraLoaderModelOnly a la entrada model del siguiente nodo de forma secuencial [7]
Tinte de color o decodificación suave/desenfocadaVAE incompatible — usar wan2.2_vae.safetensors con modelos 14B o wan_2.1_vae.safetensors con el 5BLos modelos 14B requieren wan_2.1_vae.safetensors; los modelos 5B requieren wan2.2_vae.safetensors [2]
Al video le falta detalle facial o consistencia de rostroExperto de low noise con poca potencia — muy pocos pasos para la etapa de refinamiento tardíaAumenta los pasos del KSampler de low noise (p. ej., 2 high / 4 low, o 4 high / 4 low) [5]

Entrenamiento de LoRAs para ambos expertos

El entrenamiento debe hacerse por separado para cada experto. Los comandos de musubi-tuner solo difieren en la ruta del archivo de modelo --dit y en los valores de --min_timestep / --max_timestep [6]. El entrenamiento de high noise usa --min_timestep 875 --max_timestep 1000; el de low noise usa --min_timestep 0 --max_timestep 875 [6]. Todos los demás hiperparámetros — learning rate (3e-4), dimensión de red (16), network alpha (16), optimizador (adamw con weight_decay=0.1), programador LR (polinómico, power=8) y precisión mixta (fp16) — son idénticos [6]. En la inferencia, deben cargarse ambos LoRAs entrenados: uno en la cadena del experto de high noise y otro en la del experto de low noise.

Si este es tu primer LoRA, empieza con entrenar un LoRA desde cero y vuelve para los detalles de los dos expertos.

FAQ

¿Por qué Wan 2.2 tiene dos archivos de modelo para 14B? Wan 2.2 usa una arquitectura Mixture-of-Experts donde dos modelos 14B separados manejan distintas fases del desruido. El experto de high noise gestiona la estructura y el movimiento de etapa temprana; el experto de low noise se encarga del refinamiento de detalle de etapa tardía. [1]

¿Cómo conecto los modelos de high noise y low noise en ComfyUI? La salida del KSamplerAdvanced de high noise envía su LATENT directamente a la entrada del KSamplerAdvanced de low noise. No crees dos pipelines independientes que generen cada uno desde ruido. [3]

¿Necesito dos KSamplers separados para Wan 2.2? Sí, conectados en secuencia. El KSamplerAdvanced de high noise procesa los pasos 0–10 y pasa su salida al KSamplerAdvanced de low noise, que procesa los pasos 10–20. [3]

¿Cuál es el límite de timestep entre los expertos de high noise y low noise? El límite depende de la SNR del paso de desruido actual, definida por el umbral mínimo de SNR. El flujo de trabajo oficial maneja esto mediante rangos de pasos de KSamplerAdvanced, no mediante cambio manual de modelo. [1]

¿Por qué usar LoraLoaderModelOnly en vez de LoraLoader para Wan 2.2? LoraLoaderModelOnly aplica los pesos del LoRA solo al modelo de difusión y deja intacto el codificador de texto compartido. LoraLoader modifica tanto el modelo de difusión como el codificador CLIP/T5, lo cual no es intencional para LoRAs de Wan 2.2 entrenados solo contra el DiT. [7]

¿Qué valor de shift debo usar en ModelSamplingSD3 para Wan 2.2? El flujo oficial 14B T2V usa un valor de shift de 8.0 en ambos nodos ModelSamplingSD3. El parámetro acepta valores entre 0.0 y 100.0. [8]

¿Entreno un LoRA o dos LoRAs para Wan 2.2 14B? Entrenas dos LoRAs separados, uno sobre el modelo base de high noise y otro sobre el de low noise, con el mismo dataset e hiperparámetros idénticos. En la inferencia, se cargan ambos LoRAs, uno en cada cadena de expertos. [6]