Deriva en Generaciones: Solucionando la Deriva del Modelo MiniMax H3 en ComfyUI

Deriva Progresiva en Workflows de ComfyUI

Al trabajar con modelos grandes como MiniMax H3 en un workflow de ComfyUI, uno espera que el sistema sea completamente determinista: la misma seed y el mismo prompt deberían producir siempre el mismo resultado. Sin embargo, muchos usuarios experimentan una situación peculiar donde el modelo parece «olvidar» su instrucción inicial a medida que avanza el proceso.

Diagrama técnico mostrando las capas de gestión de memoria en ComfyUI con una sección resaltada sobre Dynamic VRAM causando deriva de estado entre generaciones.
Visualizando la gestión de memoria y la deriva del modelo en ComfyUI.

Este fenómeno, conocido como deriva en generaciones, ocurre cuando la primera ejecución del workflow es coherente y sigue el prompt correctamente, pero las siguientes iteraciones se vuelven progresivamente más surrealistas o desviadas. Es crucial entender que esto no significa necesariamente que el modelo esté «aprendiendo» o que el prompt se esté quemando.

El Papel de la Gestión de Estado y Dynamic VRAM

La causa principal suele residir en problemas de estado acumulativo dentro del sistema. En ComfyUI, particularmente con versiones recientes, el uso de Dynamic VRAM es activado por defecto. Este mecanismo gestiona la memoria de forma dinámica, pero si no se configura correctamente, puede causar corrupción de los pesos del modelo o reutilizar componentes internos entre ejecuciones.

Por ejemplo, se han reportado casos donde una segunda ejecución no es equivalente a cargar todo desde cero debido a caches o mecanismos de offloading. Si el workflow usa Dynamic VRAM junto con sistemas como LoRA loaders o model patchers, los objetos internos pueden modificarse y reutilizarse, provocando que la calidad se degrade incrementalmente.

La Solución: Desactivar Dynamic VRAM

Para solucionar este problema en tu instalación de Windows, la solución más directa es desactivar el sistema dinámico. ComfyUI permite esto mediante el parámetro --disable-dynamic-vram. Al ejecutar tu script principal con esta bandera, como python main.py --disable-dynamic-vram, le indicas al programa que use la estimación basada en modelo para cargar los modelos.

Es importante notar que desactivar Dynamic VRAM no es lo mismo que usar --lowvram. Al desactivarlo, el comportamiento de otros parámetros como --lowvram vuelve a su estado tradicional. La prueba definitiva consiste en ejecutar el workflow con este parámetro agregado y comparar si la deriva desaparece.

Si al ejecutar con Dynamic VRAM desactivado las generaciones vuelven a ser coherentes, tienes una pista contundente de que el problema residía en la gestión dinámica de memoria. Esto te ahorra tiempo y esfuerzo intentando corregir con ingeniería de prompt un problema que ocurre debajo del workflow.