ClipProj: codificador 4B en lugar del 32B de MiniMax H3 en ComfyUI

ComfyUI Wikinews

Un nodo de ComfyUI sustituye el codificador Qwen3-VL-32B (15,7 GB) de MiniMax H3 por un Qwen3-VL-4B con proyección aprendida, reduciendo la VRAM de acondicionamiento a 4,5 GB.

ComfyUI-ClipProj es un nuevo nodo personalizado que sustituye el codificador de texto Qwen3-VL-32B de MiniMax H3 por un Qwen3-VL-4B mucho más pequeño junto con una proyección lineal aprendida, reduciendo la huella de VRAM de acondicionamiento de 15.7 GB a 4.5 GB (matrices de proyección en Hugging Face). El DiT, los VAE y el muestreador no se tocan: el nodo devuelve un objeto que se comporta como el CLIP oficial, por lo que se conecta directamente a la entrada clip existente sin necesidad de recablear nada.

Pipeline completo de MiniMax H3 acondicionado por un Qwen3-VL-4B proyectado

El pipeline completo: codificador, proyección, acondicionamiento, muestreo, decodificación y salida de vídeo (examples/minimax_h3_clipproj.json).

Por qué ahorra tanta VRAM

MiniMax H3 utiliza un Qwen3-VL-32B truncado a 50 capas (15.7 GB en NVFP4) únicamente para convertir un prompt en un tensor de acondicionamiento [seq, 5120]. ClipProj lo sustituye por un Qwen3-VL-4B (2560 dimensiones) más un mapa lineal aprendido hacia el espacio de 5120 dimensiones que el DiT espera:

cond = ((h - mean_in) / std_in) @ W * std_out + mean_out

Memoria del codificador medida:

Configuración del codificadorVRAM
Qwen3-VL-32B original (NVFP4)15.7 GB
Qwen3-VL-4B + ClipProj (bf16)8.3 GB
Qwen3-VL-4B + ClipProj (fp8)5.2 GB
Qwen3-VL-4B + ClipProj (int8_convrot)4.5 GB

Cómo se aprende la proyección

Los codificadores de 4B y 32B comparten el mismo tokenizer (151,936 tokens), por lo que un prompt produce tokens idénticos en posiciones idénticas en ambos. Eso hace que un mapeo posición por posición sea aprendible. La calibración es regresión ridge, no entrenamiento: codifica N prompts con ambos modelos, acumula XᵀX y XᵀY en streaming (memoria constante) y luego resuelve. Sin gradientes, sin épocas, sin tasa de aprendizaje.

Las mediciones del autor (MEASUREMENTS.md) reportan un coseno entre prompts de ~0.71 con un corpus de 2,000 prompts. En la generación real, la proyección se sostiene para prompts simples, prompts estructurados de múltiples tomas (subject_definitions, tomas con timecode, overall_soundscape) y fl2va con primer y último fotograma. También es robusta al intercambio de pesos del codificador: una proyección calibrada en bf16 funciona en una variante fp8 abliterada y en int8_convrot.

Uso en ComfyUI

Instala el nodo:

cd ComfyUI/custom_nodes
git clone https://github.com/nicolab28/ComfyUI-ClipProj

Reinicia ComfyUI. No hay requirements.txt: los nodos importan únicamente torch y los módulos propios de ComfyUI. En el primer inicio se crea la carpeta ComfyUI/models/clip_projections/; coloca allí las matrices de proyección (mmh3-4b-ClipProj*.safetensors, mmh3-8b-ClipProj*.safetensors). Los flujos de trabajo de ejemplo están en examples/: arrastra minimax_h3_clipproj.json al lienzo.

Ejemplo de reescritura de prompt con ClipProj

Un ejemplo de flujo de trabajo que combina el codificador pequeño con la reescritura estructurada de prompts H3 (examples/rewrite_h3_prompt.json).

Estado

La versión 0.1.4 del nodo libera la tarjeta GPU antes de cargar un codificador de reemplazo (corrigiendo los picos de OOM cuando de otro modo dos codificadores estarían residentes a la vez), libera las cachés de proyección al recargar y mantiene las redes residuales en su precisión guardada. Las matrices -mlp ahora son fp16 y tienen la mitad de tamaño (240 MB para el 4B, 288 MB para el 8B).

El proyecto es explícitamente una prueba de concepto: construido y probado en una única configuración (Windows 11, NVIDIA RTX 3090 / 4070 / 3060, ComfyUI 0.31.0) con una exploración deliberadamente limitada. Espera bordes sin pulir y cambios que rompen la compatibilidad.

Disponibilidad

Comentarios

Inicia sesión con GitHub para unirte a la conversación.

Cargando comentarios…
ClipProj: codificador 4B en lugar del 32B de MiniMax H3 en ComfyUI | ComfyUI Wiki