Wan 2.2 en local: ComfyUI, cálculo de VRAM y solución de errores de vídeo

Despliega Wan 2.2 con ComfyUI o Diffusers, elige el modelo, prepara CUDA y VRAM, descarga los pesos, valida el vídeo y diagnostica errores habituales.

Wan 2.2 es una serie de modelos de generación de video de código abierto lanzados por el equipo de Alibaba Wan-Video. wan 2.2 aparece en la consulta creciente “Video AI” en Google Trends US. Sin embargo, el error más común en la implementación local no es el comando de inicio, sino la descarga de variantes de modelo que no son adecuadas para la VRAM y el flujo de trabajo. Este artículo primero explica la familia de modelos y luego brinda las rutas ComfyUI y Python respectivamente. Todas las cifras de memoria deben volver a verificarse con la tarjeta del modelo específico, la resolución y la configuración de descarga.

Identifique el nombre del modelo

antes de descargar El repositorio Wan 2.2 puede enumerar diferentes tareas, como video de generación de texto, video de generación de imágenes, TI2V, Animate, S2V, etc. al mismo tiempo. También puede haber diferentes escalas de parámetros, MoE o versiones cuantificadas de la misma tarea. El hecho de que los nombres de los archivos del modelo sean similares no significa que puedan colocarse en el mismo nodo de flujo de trabajo. Primero registre cuatro datos en el archivo README oficial:

  • Tipo de tarea.
  • Escala de parámetros y arquitectura.
  • Resolución recomendada.
  • Entrada de razonamiento oficial.

No descargue primero docenas de archivos GB y luego adivine el propósito del modelo basándose en el mensaje de error.

La planificación de la memoria de vídeo se basa en el valor máximo en lugar del tamaño del archivo del modelo

Los pesos de los modelos son sólo una parte de la memoria de vídeo. La inferencia también requiere codificadores de texto, VAE, activaciones, cachés de atención y tensores de salida. La resolución, el número de fotogramas, el tamaño del lote y los pasos de muestreo cambiarán el valor máximo. La descarga de CPU reduce la VRAM pero aumenta la memoria del sistema y las transferencias PCIe. La cuantificación puede reducir la ocupación por peso, pero no necesariamente reduce todas las activaciones año tras año. No hagas un presupuesto con “el archivo del modelo es de 14 GB, por lo que una tarjeta gráfica de 16 GB debe ser suficiente”.

Cómo elegir entre tres rutas de hardware

Las tarjetas gráficas NVIDIA de más de 24 GB son adecuadas para comenzar con el flujo de trabajo oficial más completo. Las tarjetas gráficas de 12 a 16 GB requieren seleccionar un modelo más pequeño, cuantificación, resolución más baja o descarga de CPU. La tarjeta gráfica de 8 GB es más adecuada para cortometrajes, experimentos de baja resolución y no es adecuada como base de producción estable. La tarjeta múltiple solo es efectiva cuando el marco de inferencia la admite explícitamente y no se puede fusionar automáticamente configurando CUDA_VISIBLE_DEVICES=0,1. La CPU pura puede verificar el entorno y los nodos, pero la velocidad de generación suele ser poco práctica. La compatibilidad con AMD, Intel y Apple Silicon está sujeta al repositorio oficial y a la versión del marco.

Verifique el controlador NVIDIA y la visibilidad de CUDA

1
nvidia-smi

Registre la versión del controlador, el modelo de la tarjeta gráfica, la VRAM total y el uso actual. Verifique PyTorch nuevamente en el entorno Python:

1
python -c "import torch; print(torch.__version__); print(torch.cuda.is_available()); print(torch.version.cuda); print(torch.cuda.get_device_name(0) if torch.cuda.is_available() else 'CPU')"

Si nvidia-smi es normal pero torch.cuda.is_available() es falso, generalmente significa que PyTorch ha instalado la versión de la CPU o que el entorno es incorrecto. No reinstale el controlador de la tarjeta gráfica repetidamente para ocultar los problemas del entorno virtual Python.

Cree un entorno Python independiente para Wan 2.2

1
2
3
python -m venv .venv-wan22
.\.venv-wan22\Scripts\Activate.ps1
python -m pip install --upgrade pip setuptools wheel

Linux:

1
2
3
python3 -m venv .venv-wan22
source .venv-wan22/bin/activate
python -m pip install --upgrade pip setuptools wheel

No incluya ComfyUI, nodos personalizados y proyectos de Difusores independientes en el mismo Python global. Cuando las dependencias entran en conflicto, es más fácil recuperar un entorno aislado que una degradación forzada de todo el sistema.

Clona el repositorio oficial y bloquea el commit

1
2
3
git clone https://github.com/Wan-Video/Wan2.2.git
cd Wan2.2
git rev-parse HEAD

Primero lea el archivo README actual para conocer los comandos de instalación y las tablas de modelos.

1
2
git status --short
git log -1 --oneline

Cuando los tutoriales no están sincronizados con las actualizaciones del repositorio, el SHA de confirmación puede indicarle qué versión está utilizando realmente. No realice un seguimiento de las ramas de relaciones públicas no verificadas hasta que tengan éxito la primera vez.

Haga coincidir la combinación de soporte oficial

al instalar PyTorch Primero vaya a la página de instalación oficial de PyTorch para seleccionar el sistema operativo, el administrador de paquetes y la versión de CUDA. El comando de ejemplo no se puede copiar sin el controlador actual:

1
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128

cu128 es solo un ejemplo, confirme Wan 2.2 y el soporte de dependencias antes de la ejecución. Después de la instalación, ejecute nuevamente la verificación de visibilidad de CUDA. Luego instale las dependencias según los requisitos del repositorio:

1
pip install -r requirements.txt

El directorio de descarga del modelo debe tener suficiente espacio

Los pesos, codificadores de texto, VAE y cachés pueden ocupar decenas de GB. Verifique antes de descargar:

1
2
df -h
du -sh ~/.cache/huggingface 2>/dev/null || true

Ventanas:

1
Get-PSDrive -PSProvider FileSystem

Coloque el caché de Hugging Face en un disco grande:

1
$env:HF_HOME = "D:\hf-cache"

Cuando la variable de entorno solo tiene efecto para el terminal actual, al abrir una nueva ventana se volverá a descargar en la ubicación predeterminada.

Utilice la CLI de Hugging Face para descargar el repositorio especificado

1
2
pip install -U "huggingface_hub[cli]"
huggingface-cli login

Descargue únicamente los repositorios que figuran en la tarjeta del modelo oficial y no utilice imágenes desconocidas con nombres similares.

1
2
huggingface-cli download <official-model-repository> \
  --local-dir ./models/wan22

Reemplace el marcador de posición con el ID del modelo que figura actualmente en el archivo README oficial. Guarde la lista de archivos y el tamaño después de la descarga:

1
find ./models/wan22 -type f -printf '%P %s\n' | sort > wan22-files.txt

Ruta ComfyUI: actualice el núcleo primero y luego instale el nodo

Haga una copia de seguridad de ComfyUI existente:

1
2
git -C ComfyUI status --short
git -C ComfyUI rev-parse HEAD

No tire directamente cuando haya modificaciones del usuario. Pruebe la versión actualizada en un nuevo directorio o guarde el parche primero.

1
2
3
git clone https://github.com/comfyanonymous/ComfyUI.git ComfyUI-Wan22
cd ComfyUI-Wan22
python -m pip install -r requirements.txt

La compatibilidad con el nodo nativo Wan 2.2 está sujeta a la versión actual de ComfyUI y al flujo de trabajo oficial.

El archivo del modelo debe colocarse en el directorio realmente leído por el nodo

Los directorios comunes de ComfyUI incluyen:

1
2
3
4
ComfyUI/models/diffusion_models/
ComfyUI/models/text_encoders/
ComfyUI/models/vae/
ComfyUI/models/clip_vision/

Los diferentes flujos de trabajo tienen diferentes requisitos para directorios y tipos de archivos. No coloque todos los archivos en checkpoints. Después de abrir el flujo de trabajo, no hay ningún modelo en el cuadro desplegable del nodo. Primero verifique la ruta de escaneo en el registro de inicio de ComfyUI. Reinicie ComfyUI y actualice el navegador.

Utilice rutas de modelo adicionales para evitar duplicar el uso del disco

Puede señalar la biblioteca de modelos unificada en extra_model_paths.yaml.

1
2
3
4
5
6
wan22:
  base_path: D:/ai-models/wan22
  diffusion_models: diffusion_models
  text_encoders: text_encoders
  vae: vae
  clip_vision: clip_vision

Se recomienda utilizar barras diagonales en las rutas de Windows para reducir los problemas de escape de YAML. Después de la modificación, confirme en el registro de inicio que la nueva ruta esté cargada. Cuando el directorio compartido está configurado como de solo lectura, los nodos personalizados no se pueden descargar ni cambiar de nombre automáticamente allí.

Después de importar el flujo de trabajo oficial, primero verifique si faltan nodos

El flujo de trabajo JSON puede depender de versiones específicas de ComfyUI o nodos personalizados. Cuando vea un nodo rojo, registre primero el nombre de la clase del nodo. Instale únicamente los nodos correspondientes de repositorios confiables y no permita que Manager instale todos los resultados de búsqueda en lotes. Después de la instalación, registre la URL del repositorio y confirme:

1
2
git -C custom_nodes/<node-directory> remote -v
git -C custom_nodes/<node-directory> rev-parse HEAD

Los nodos personalizados tienen permiso para ejecutar Python nativo y deben revisarse como software normal.

El primer video utiliza parámetros de bajo costo

Comience eligiendo la resolución más baja recomendada por el modelo. La velocidad de fotogramas se controla dentro del rango de muestra oficial. el tamaño del lote está establecido en 1. El paso de muestreo utiliza primero los valores de muestra y no persigue el máximo. Semilla fija para facilitar la comparación de cambios de configuración. Las palabras clave describen un tema, una acción y una toma simple. El objetivo de la primera ronda es validar el flujo de datos, no producir un producto final.

Estructura de palabras rápidas para videos de generación de texto

1
2
3
4
A red bicycle parked beside a quiet lake at sunrise.
Light fog moves slowly above the water.
The camera performs a gentle left-to-right pan.
Natural colors, realistic motion, no text, no watermark.

Demasiados temas pueden dificultar la coherencia. Las acciones, tomas y entornos se describen por separado, lo que los hace más fáciles de reproducir que apilar palabras de estilo. Si el modelo admite palabras clave negativas, establezca restricciones como deformación, texto y baja calidad en la entrada correspondiente, y no adivine la gramática al final de la palabra clave principal.

El video de generación de imágenes primero procesa el lienzo de entrada

La imagen de entrada debe estar cerca de la relación de aspecto objetivo. No mantengas el cuerpo cerca de los bordes, dejando espacio para el movimiento. El procesamiento alfa de archivos PNG transparentes depende del flujo de trabajo, componiendo primero el fondo si es necesario. La rotación EXIF puede hacer que la orientación real del píxel difiera de la vista previa.

1
2
3
4
5
6
from PIL import Image, ImageOps

image = Image.open("input.jpg")
image = ImageOps.exif_transpose(image).convert("RGB")
image.save("input-normalized.png")
print(image.size)

Después de la estandarización, póngalo en el flujo de trabajo.

Si la VRAM es insuficiente, primero verifique en qué etapa ocurre el pico

La etapa de codificación de texto OOM, la etapa de difusión OOM y la etapa de decodificación VAE OOM se manejan de manera diferente. Vea el registro del último componente cargado.

1
nvidia-smi -l 1

Reducir la resolución y la velocidad de cuadros es lo más efectivo para activar la VRAM. Habilitar la descarga de CPU del codificador de texto o modelo aumenta el uso de memoria. La decodificación en mosaico VAE puede aliviar los picos de decodificación, pero puede agregar costuras o llevar mucho tiempo. No cambie cinco configuraciones al mismo tiempo tan pronto como encuentre OOM.

Archivo de página de Windows y memoria del sistema

La descarga de CPU puede consumir grandes cantidades de RAM. Cuando el sistema tiene poca memoria, Windows utiliza el archivo de paginación, lo que puede ralentizar el proceso de generación. Verifique la confirmación y la actividad del disco en el Administrador de tareas. Coloque el archivo de página en un SSD con suficiente espacio y establezca un límite superior razonable. No inicie descargas y descargas de modelos grandes cuando solo queden unos pocos GB en el disco del sistema.

Libere completamente el proceso después de CUDA out of memory

Algunos flujos de trabajo fallidos conservan la memoria de vídeo. Detener la cola de ComfyUI no necesariamente libera el proceso de Python.

1
2
nvidia-smi
Get-Process python -ErrorAction SilentlyContinue

Confirme que el PID pertenece a este ComfyUI antes de finalizar el proceso. No elimine Python para otros usuarios o tareas de capacitación. Después de reiniciar, cambie solo un parámetro para verificar.

No module named Normalmente el entorno de inicio es inconsistente

Confirme el Python utilizado por ComfyUI:

1
2
import sys
print(sys.executable)

Las versiones portátiles de ComfyUI pueden venir con Python independiente. La instalación de dependencias en el sistema Python no ingresará automáticamente a un entorno portátil. Utilice el python -m pip install ... de ese entorno en lugar del pip básico.

shape mismatch es principalmente una mezcla de componentes del modelo

Compruebe si el modelo de difusión, VAE, codificador de texto y flujo de trabajo pertenecen a la misma familia de modelos. No se deben adivinar los componentes de Wan 2.1 basándose en los nombres de los archivos para que sean totalmente compatibles con Wan 2.2. El peso cuantificado también debe corresponder al nodo del cargador. Regrese al flujo de trabajo oficial y complete la verificación mínima de todos los componentes de precisión y luego reemplácelos uno por uno. No fuerce la carga del modelo de video ignorando los errores de dictado de estado.

El vídeo en negro elimina por primera vez los problemas del codificador

Confirme si el cuadro generado es normal antes de juzgar la codificación MP4. Exporte marcos como PNG para verificar. Cuando FFmpeg no está presente o el codificador falla, la vista previa puede estar vacía pero los resultados de la inferencia siguen ahí.

1
2
ffmpeg -version
ffprobe -v error -show_streams output.mp4

Si el PNG también es completamente negro, verifique nuevamente el VAE, la precisión y el rango de entrada.

La velocidad de generación debe calcularse según el marco efectivo

Registre la segunda carrera después del calentamiento. Guarde el modelo, la resolución, el número de fotograma, los pasos, la semilla, la GPU, la memoria de vídeo máxima y el tiempo total empleado.

1
seconds_per_generated_frame = total_seconds / output_frames

El primer paso implica la carga del modelo y no se puede comparar directamente con el segundo paso almacenado en caché. La utilización reducida de la GPU después de activar la descarga no es necesariamente un error, puede estar esperando transferencias de memoria.

Valide el archivo de salida con ffprobe

1
2
3
4
ffprobe -v error \
  -show_entries stream=codec_name,width,height,r_frame_rate,nb_frames \
  -show_entries format=duration,size \
  -of json output.mp4

Confirme que la resolución, la velocidad de fotogramas, la cantidad de fotogramas y la duración cumplan con el flujo de trabajo. El hecho de que el navegador pueda reproducir no significa que los parámetros de codificación sean adecuados para el software de edición. Convierta a H.264 explícito o codificación intermedia cuando se requiera posprocesamiento.

Cola por lotes para evitar que el disco se llene

Cada vídeo puede producir una vista previa, fotogramas temporales y un MP4 final. Establezca una advertencia de espacio para el directorio de salida. Estime el número máximo de productos antes de comenzar la tarea. Los directorios temporales para tareas fallidas están configurados para caducar después de la limpieza, pero no se eliminan mientras el proceso Python los usa. El nombre del archivo contiene el ID del trabajo, el modelo y la semilla para evitar sobrescribirlos.

La actualización de nodo personalizado adopta el método de reversión

1
2
3
git -C custom_nodes/example status --short
git -C custom_nodes/example rev-parse HEAD
git -C custom_nodes/example pull --ff-only

Guarde el JSON del flujo de trabajo antes de actualizar. Recurra a la confirmación registrada cuando falla una nueva versión, en lugar de instalar otra bifurcación aleatoriamente. No actualice el núcleo, los nodos y los modelos de ComfyUI el mismo día.

Riesgos de abrir ComfyUI de forma remota

ComfyUI y los nodos personalizados generalmente no están diseñados para redes públicas no autenticadas. De forma predeterminada, sólo se monitorea la dirección de loopback. Acceso remoto mediante túnel VPN o SSH:

1
ssh -L 8188:127.0.0.1:8188 user@gpu-server

No asigne el puerto 8188 directamente a la red pública. Los materiales cargados pueden contener rostros, videos de clientes y contenido protegido por derechos de autor, y el almacenamiento remoto requiere control de acceso y políticas de limpieza.

Traiga la lista de dependencias

al publicar el flujo de trabajo Simplemente compartir JSON no es suficiente para reproducir. También grabado:

  • Compromiso de ComfyUI.
  • Repositorio de nodos personalizado y confirmación.
  • Repositorio de modelos y nombre de archivo.
  • Versiones Python, PyTorch y CUDA.
  • Resolución, número de fotogramas, pasos y semilla.
  • Ya sea para utilizar cuantificación y descarga.

No comparta los archivos del modelo para eludir las restricciones de licencia o acceso.

Mantenga la línea base

una vez antes de actualizar Wan 2.2 Prepare imágenes fijas, palabras clave, semillas y flujos de trabajo. Después de la actualización, se genera la misma tarea y se comparan la memoria de vídeo máxima, el consumo de tiempo, el tamaño de salida y los fotogramas clave. La aleatoriedad del modelo significa que el metraje no será exactamente igual que en la prueba de píxeles. Concéntrese en comprobar si se puede completar, si hay parpadeos anormales y bloqueos de movimiento. Cuando el rendimiento se degrada, revierta el modelo, el nodo y PyTorch respectivamente para localizar en qué capa se produce el cambio.

Estándar de finalización de implementación local

  • CUDA es visible en el entorno virtual de destino.
  • Las tareas modelo son consistentes con los tipos de flujo de trabajo.
  • ComfyUI descubre todos los componentes.
  • Se puede completar el primer vídeo de baja resolución.
  • Se registran las etapas de OOM y la memoria de picos.
  • Los parámetros de salida de ffprobe son correctos.
  • Las fuentes y confirmaciones de nodos personalizados son rastreables.
  • El puerto remoto no está expuesto directamente a la red pública.
  • La línea base fija está disponible para futuras actualizaciones.

La implementación local de Wan 2.2 no termina con colocar los pesos en un directorio. Solo verificando por separado los componentes del modelo, el flujo de trabajo, la VRAM y la salida de medios podemos distinguir los errores de descarga, las incompatibilidades de nodos, los problemas de CUDA y las verdaderas limitaciones de la capacidad del modelo.

Entrada al proyecto