El desbloqueo BF16 de la serie RTX 30 acelera ComfyUI hasta un 60%
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.
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:
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:
| Tarjeta | Resultado | Ganancia en GEMM BF16 |
|---|---|---|
| RTX 3090 Ti | Desbloqueada | +68–80% |
| RTX 3090 | Desbloqueada | +25–67% |
| RTX 3080 10 GB | Desbloqueada | +70–73% |
| RTX 3080 20 GB | Desbloqueada | +56–59% |
| RTX 3070 | Desbloqueada | +73–81% |
| RTX 3060 12 GB | Desbloqueada | unos +80% |
| RTX 3080 Ti 20 GB (OEM) | El desbloqueo se completa, BF16 se queda a media tasa | ninguna |
| RTX 3070 Ti | No probada con este módulo | ninguna |
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.
| Modelo y precisión | De serie | Desbloqueada | Ganancia |
|---|---|---|---|
| MOSS-Image SFT BF16 | 71.98 s | 45.40 s | +58.6% |
| Qwen-Image 2.1 Turbo BF16 | 8.51 s | 5.41 s | +57.2% |
| Z-Image Turbo BF16 | 6.79 s | 4.35 s | +56.1% |
| FLUX.1 dev FP8 checkpoint | 31.96 s | 20.66 s | +54.6% |
| Krea 2 Turbo BF16 | 15.65 s | 10.70 s | +46.3% |
| MiniMax H3 BF16 (vídeo y audio) | 253.27 s | 158.05 s | +60.2% |
| LTX-2.5 distilled BF16 (vídeo y audio) | 70.81 s | 60.63 s | +16.8% |
| MOSS-Image SFT INT8 | 27.31 s | 27.23 s | +0.3% |
| Qwen-Image 2.1 Turbo INT8 | 3.92 s | 3.75 s | +4.6% |
| MiniMax H3 INT8 ConvRot | 155.07 s | 118.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
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=alldesbloquea todas las tarjetas GA10x no vinculadas; de lo contrario, enumera las direcciones PCI tal como las imprimelspci -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
nvidiaya 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-drmtoma 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
- Módulo: Zagitta/gpu-unlock, versión 1.0.0 en el repositorio, con la tabla de compatibilidad y el código de extracción del firmware.
- Hilos de benchmark: debate sobre el desbloqueo de la serie RTX 30 y el informe de ComfyUI en RTX 3090 Ti.
- Port para Windows: impacifist/Windows-GPU-UNLOCK.
Comentarios
Inicia sesión con GitHub para unirte a la conversación.