Un módulo de código abierto desbloquea BF16 en las RTX 30 y sube el rendimiento casi un 80 %

Open source illustration: hands joining branches to a shared node tree

El proyecto de código abierto gpu-unlock, publicado en GitHub por el desarrollador Zagitta, ha reunido unas 8.100 estrellas y más de 850 forks en aproximadamente una semana. Lo que hace es muy concreto: elimina el límite de velocidad de las instrucciones FP16/BF16 de los Tensor Cores en las tarjetas GeForce RTX 30, sin reflashear la VBIOS y sin modificar el controlador de NVIDIA.

Las GeForce de arquitectura Ampere solo funcionan a la mitad de velocidad en las multiplicaciones de matrices con entrada de media precisión y acumulación en FP32. El objetivo de gpu-unlock es duplicar la tasa de emisión de esa instrucción, y abarca los cuatro chips GA102, GA103, GA104 y GA106.

Cómo lo consigue

gpu-unlock es un módulo del kernel de Linux. El autor lo describe como la combinación de la técnica V67/PLM del desbloqueador de tarjetas de minería CMP con el momento de actuación de las soluciones UEFI anteriores, “antes de que se cargue el controlador”. El módulo completa el desbloqueo antes de que el controlador de NVIDIA tome el control de la tarjeta, escribe el selector de velocidad y después realiza un reinicio a nivel de función (FLR).

La ventaja es el bajo coste de mantenimiento. No es un programa UEFI ni un controlador parcheado, así que con cada nueva versión del controlador de NVIDIA el usuario no tiene que volver a aplicar el parche.

Las condiciones de prueba que el autor da para la RTX 3090 Ti son GEMM denso de 8192³, consumo de 450 W, acumulación en FP32 y mediana de cinco muestras:

Precisión de entradaAntes del desbloqueoDespués del desbloqueo
FP1687,46 TFLOPS118,39 TFLOPS
BF1687,50 TFLOPS157,41 TFLOPS
TF3242,58 TFLOPS82,61 TFLOPS

Las mejoras de BF16 que comunican los usuarios varían según la tarjeta: la RTX 3070 entre un 73 % y un 81 %, la 3080 de 10 GB entre un 70 % y un 73 %, la 3060 de 12 GB en torno al 80 %, y la 3090 entre un 25 % y un 67 %, con el valor más bajo procedente de una tarjeta con límite de potencia de 225 W. Estas cifras salen de las pruebas propias de cada usuario, por lo que no se pueden comparar directamente.

En cargas de trabajo reales

Las fases con mucha operación matricial se aceleran de forma notable: en el prefill de la inferencia de modelos grandes se reportan mejoras del 14 % al 36 %, y los modelos de difusión y FlashAttention también se benefician. La generación token a token de los modelos grandes está limitada por el ancho de banda de la VRAM y las cargas INT8 siguen otra ruta, por lo que ambas se mantienen básicamente igual. Los usuarios que compararon las salidas señalan que los resultados de cálculo son idénticos bit a bit antes y después del desbloqueo.

Por eso, el “casi un 80 % más de rendimiento” es sobre todo un pico teórico. En el uso diario de chat con modelos locales, lo más perceptible es que los prompts largos se leen más rápido; la velocidad de escritura de la respuesta cambia poco. Hasta ahora no hay pruebas independientes sobre el efecto en la tasa de fotogramas de los juegos.

Para quienes usan tarjetas de segunda mano en China

En el círculo chino del despliegue local, las 3090 de segunda mano y las 3080 de 20 GB con memoria modificada siempre han sido opciones con buena relación calidad-precio. La tabla de compatibilidad del proyecto incluye una fila “RTX 3080 20 GB (memoria modificada)” con una mejora reportada del 56 % al 59 %, lo que indica que las tarjetas modificadas también aprovechan este desbloqueo.

La barrera está en el sistema operativo. El módulo solo admite Linux, ofrece paquetes para las familias Arch, Debian/Ubuntu y Fedora y debe activarse de forma explícita en los parámetros de arranque del kernel; cargarlo a mano después del arranque no funciona. Los usuarios de Windows solo pueden recurrir a los ports UEFI de la comunidad; la 3070 Ti, por ejemplo, solo se ha verificado por esa vía.

El autor también enumera bastantes limitaciones:

  • Tras suspender a RAM, la tarjeta se vuelve a desbloquear, lo que tarda aproximadamente 1 segundo más; la hibernación no es compatible;
  • La tarjeta conectada al monitor se queda brevemente en negro durante el reinicio del desbloqueo;
  • En algunas tarjetas cuyo firmware no se detiene, hay que cortar primero la alimentación y reintentarlo;
  • En la 3080 Ti OEM, el BF16 sigue a media velocidad tras el desbloqueo, y todavía no hay informes sobre el GA103.

El proyecto es de código abierto bajo la licencia GPL-2.0. El README no aborda si cambiar el límite de velocidad de fábrica afecta a la garantía, y NVIDIA tampoco ha respondido públicamente por ahora; quien quiera probarlo en su equipo principal debe sopesarlo por su cuenta.

Fuentes: README del proyecto gpu-unlock, GameApps.hk, CocoLoop; los datos del repositorio de GitHub sirvieron para contrastar estrellas y forks, y la tabla de benchmarks del README para contrastar los TFLOPS y los rangos de mejora por modelo.