BF16 vs INT8 en RTX 3090: ¿Cuál formato elegir para ejecutar modelos locales?

Al ejecutar modelos de IA locales en una NVIDIA RTX 3090, es común sentirse abrumado por las opciones disponibles. ¿BF16? ¿INT8? ¿Pruned? Al principio parece que el BF16 es para tarjetas más nuevas como la 4090 o la 5090, mientras que el INT8 se queda corto en calidad.

Gráfico técnico mostrando las barras de uso de memoria GPU para diferentes formatos de cuantización en una tarjeta NVIDIA Ampere.
Comparación de uso de memoria entre los formatos BF16, INT8 y pruned en una RTX 3090.

Es importante aclarar primero qué significan realmente estos términos. El BF16 (Bfloat16) se trata de precisión y calidad, ofreciendo un comportamiento muy cercano al modelo original. Por otro lado, el INT8 es un compromiso excelente que reduce la memoria necesaria para el cálculo, aunque puede haber una pequeña pérdida de calidad. La opción «pruned» es diferente: significa que literalmente se han eliminado pesos o parámetros del modelo, lo cual no garantiza necesariamente un mejor rendimiento.

En tu caso específico, te enfrentas a dos modelos concretos: `int8_pruned`, sugerido por el workflow nativo de ComfyUI, y `int8`, que aparece en el workflow del H3 Latent Upscaler. Inicialmente podrías pensar que el segundo es inferior porque consume más VRAM y no te convence la calidad.

Más allá de eso, surge la duda sobre si los formatos BF16 o FP16 son solo para hardware superior. La realidad es que la RTX 3090 soporta perfectamente ambos formatos gracias a sus Tensor Cores; las recomendaciones de usarlos en tarjetas nuevas suelen deberse simplemente al mayor rendimiento y a la capacidad de memoria, no a una limitación técnica.

Vista detallada de dos archivos de modelo de IA, comparando su tamaño de archivo y requisitos de memoria.
Detalle de los archivos int8_pruned e int8 en el contexto de ComfyUI y H3 Latent Upscaler.

Para resolver estas dudas, lo mejor es realizar un experimento controlado. Intercambia los checkpoints mientras mantienes constantes el mismo prompt, el mismo seed, los mismos pasos y el mismo sampler. Si descubres que `int8_pruned` te da resultados igual o mejores y además utiliza menos VRAM, entonces se convierte en la opción más sensata para tu tarjeta.

Vista aislada de un bloque de datos masivo etiquetado como bf16_ref2va, mostrando su peso físico.
Representación visual del archivo bf16_ref2va pesando 66 GB en comparación con archivos INT8 más pequeños.

Por cierto, hay un detalle importante que cambia completamente el panorama: el archivo `bf16_ref2va` pesa 66 GB. Esto lo hace totalmente impráctico para una RTX 3090 de 24 GB, incluso con técnicas de offloading o cuantización.

Basado en esto, la conclusión es clara: el formato `INT8_pruned` se posiciona como la opción estrella por su equilibrio entre optimización y calidad. El `INT8` estándar sigue siendo una alternativa sólida si necesitas más capacidad del modelo, pero el archivo BF16 de 66 GB debe ser ignorado para ejecuciones locales en este hardware.