El desbloqueo BF16 de la serie RTX 30 acelera ComfyUI hasta un 60%

ComfyUI Wikinews

Un módulo de kernel Linux restaura la tasa de emisión FP/BF16 de las RTX 30. En una 3090 Ti, ComfyUI en BF16 corre hasta un 60% más rápido; INT8 apenas cambia.

<code>Zagitta/gpu-unlock</code> restaura la tasa de emisión de instrucciones FP16 y BF16 que NVIDIA limita en las tarjetas GeForce RTX 30. Es un módulo de kernel Linux que se ejecuta antes de que el driver oficial se vincule a la GPU, por lo que una actualización del driver no lo deshace. El repositorio se hizo público el 18 de octubre de 2026 y superó las 2.800 estrellas en una semana.

Esta familia de tarjetas lleva años con un límite por software: los chips de consumo GA102, GA103, GA104 y GA106 emiten la operación fused multiply-add (FMA) de FP/BF16 hacia FP32 a la mitad de la tasa que sus hermanos profesionales, con el mismo silicio debajo. gpu-unlock escribe los selectores de velocidad que elevan ese techo antes de que se cargue nvidia, así que el resto del stack se ejecuta sin modificaciones.

Qué cambia el módulo

El proyecto combina dos enfoques anteriores: la técnica V67/PLM del desbloqueador de CMP y el momento previo al driver del método UEFI. En concreto, antes de que el driver de NVIDIA se vincule a una tarjeta, el módulo escribe el selector de velocidad SS0 0x88888888, que selecciona la tasa BF16 completa, y el SS1 de 4 bits 0x8 para IMLA4; después realiza un FLR y sale. No es una aplicación UEFI ni un driver parcheado, que es la propiedad que su autor destaca: no hay ningún parche que rehacer cada vez que NVIDIA publica una nueva versión del driver.

El README indica el efecto sin rodeos: duplica la tasa de emisión de instrucciones FMA de FP/BF16 hacia FP32 en esas cuatro familias de chips. El módulo no hace nada a menos que la línea de comandos del kernel lo habilite con gpu_unlock.targets=, ya sea all o una lista de direcciones PCI, y las tarjetas se desbloquean de forma concurrente en aproximadamente un segundo, sin importar cuántas haya.

Qué dicen los números

La medición de referencia del propio proyecto es un GEMM denso de 8192³ en una RTX 3090 Ti a 450 W, con medianas de cinco muestras y acumulación en FP32:

Rendimiento de GEMM denso en una RTX 3090 Ti antes y después del desbloqueo

BF16 pasa de 87.5 a 157.4 TFLOP/s y TF32 de 42.6 a 82.6, casi el doble, mientras que FP16 gana menos, de 87.5 a 118.4. El README describe el cambio como una duplicación de la tasa de emisión de FMA de FP/BF16 hacia FP32, sin desglosar las cifras por tipo de dato, por lo que la tabla publicada es la única medición de ese desglose.

Los informes de compatibilidad de usuarios, recopilados en el README del repositorio, cubren el resto del stack:

TarjetaResultadoGanancia en GEMM BF16
RTX 3090 TiDesbloqueada+68–80%
RTX 3090Desbloqueada+25–67%
RTX 3080 10 GBDesbloqueada+70–73%
RTX 3080 20 GBDesbloqueada+56–59%
RTX 3070Desbloqueada+73–81%
RTX 3060 12 GBDesbloqueadaunos +80%
RTX 3080 Ti 20 GB (OEM)El desbloqueo se completa, BF16 se queda a media tasaninguna
RTX 3070 TiNo probada con este móduloninguna
Ganancias de GEMM BF16 reportadas por tarjeta

El README aclara explícitamente que estas cifras provienen del benchmark propio de cada informe y no son directamente comparables. El límite de potencia es el principal factor de confusión: la cifra más baja, +25% en una 3090, proviene de una tarjeta limitada a 225 W.

Medido en ComfyUI

La prueba útil para este sitio no es GEMM sino la generación. Un propietario independiente de una RTX 3090 Ti, u/under-_-null, ejecutó los mismos grafos con drivers de serie y desbloqueados y publicó el tiempo mediano por imagen o clip: hasta un 60% más rápido en pipelines BF16 y casi sin cambios en INT8.

Tiempo mediano de ComfyUI por imagen o clip en una RTX 3090 Ti, de serie frente a desbloqueada
Modelo y precisiónDe serieDesbloqueadaGanancia
MOSS-Image SFT BF1671.98 s45.40 s+58.6%
Qwen-Image 2.1 Turbo BF168.51 s5.41 s+57.2%
Z-Image Turbo BF166.79 s4.35 s+56.1%
FLUX.1 dev FP8 checkpoint31.96 s20.66 s+54.6%
Krea 2 Turbo BF1615.65 s10.70 s+46.3%
MiniMax H3 BF16 (vídeo y audio)253.27 s158.05 s+60.2%
LTX-2.5 distilled BF16 (vídeo y audio)70.81 s60.63 s+16.8%
MOSS-Image SFT INT827.31 s27.23 s+0.3%
Qwen-Image 2.1 Turbo INT83.92 s3.75 s+4.6%
MiniMax H3 INT8 ConvRot155.07 s118.21 s+31.2%

Dos cosas destacan. Las ganancias se concentran en el trabajo BF16, que es donde importa la tasa de emisión; las rutas de cuantización INT8 apenas se ven afectadas, así que un usuario que ya ejecuta checkpoints INT8 ConvRot obtiene unos pocos por ciento, no 60. MiniMax H3 con INT8 ConvRot es la excepción con un 31%, muy por encima de las otras filas INT8 del mismo informe.

La fidelidad de la salida se mantuvo: el mismo informe comparó 150 ejecuciones de imagen fija desbloqueadas y de serie y encontró píxeles RGB decodificados idénticos. Otros informes de compatibilidad del repositorio dicen lo mismo, lo que es coherente con un cambio en la tasa de emisión y no en la precisión.

Requisitos y riesgos

Se trata de un módulo de kernel sin firmar que modifica el comportamiento del firmware de la GPU antes de que se vincule el driver oficial. Es solo para Linux, cubre las tarjetas GeForce GA102/GA103/GA104/GA106 y requiere un arranque en frío con una habilitación explícita en la línea de comandos del kernel. Si algo falla, el modo de fallo es una tarjeta que no se inicializa, así que trátalo como experimental.

Detalles que importan antes de probarlo, todos tomados de la documentación del proyecto:

  • Solo Linux. El módulo se compila contra los headers del kernel instalados y se instala mediante mkinitcpio, initramfs-tools o dracut, con paquetes para Arch, Debian y Fedora.
  • Habilitación por tarjeta. gpu_unlock.targets=all desbloquea todas las tarjetas GA10x no vinculadas; de lo contrario, enumera las direcciones PCI tal como las imprime lspci -D. Las tarjetas que ya han sido inicializadas por un driver se rechazan.
  • Arranque en frío. Cargar el módulo a mano después del arranque no hace nada en una tarjeta que nvidia ya haya vinculado.
  • Gestión de la suspensión. Los selectores de velocidad se reinician al perder la alimentación, por lo que el módulo vuelve a desbloquear al reanudar mediante un notificador de suspensión, a menos que se desactive con gpu_unlock.resume=0. La hibernación no está cubierta.
  • Las tarjetas de visualización funcionan, con la consola en blanco desde el reinicio hasta que nvidia-drm toma el control.
  • No todas las tarjetas responden. La RTX 3080 Ti 20 GB OEM completa el desbloqueo pero mantiene BF16 a media tasa, y todavía no hay informes para GA103.

Un proyecto comunitario aparte, impacifist/Windows-GPU-UNLOCK, traslada la técnica a una ruta UEFI para usuarios de Windows. No forma parte del proyecto original y no se probó aquí.

Disponibilidad

Comentarios

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

Cargando comentarios…
El desbloqueo BF16 de la serie RTX 30 acelera ComfyUI hasta un 60% | ComfyUI Wiki