Módulo de código aberto libera BF16 nas RTX 30 e eleva o desempenho em quase 80%

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

O projeto de código aberto gpu-unlock, publicado no GitHub pelo desenvolvedor Zagitta, acumulou cerca de 8.100 estrelas e mais de 850 forks em aproximadamente uma semana. O que ele faz é bem específico: remove o limite de taxa das instruções FP16/BF16 dos Tensor Cores nas placas GeForce RTX 30, sem regravar a VBIOS e sem modificar o driver da NVIDIA.

As GeForce de arquitetura Ampere rodam apenas à metade da velocidade nas multiplicações de matrizes com entrada de meia precisão e acumulação em FP32. O objetivo do gpu-unlock é dobrar a taxa de emissão dessa instrução, cobrindo os quatro chips GA102, GA103, GA104 e GA106.

Como funciona

O gpu-unlock é um módulo de kernel Linux. O autor o descreve como a combinação da técnica V67/PLM do desbloqueador de placas de mineração CMP com o momento de atuação das soluções UEFI anteriores, “antes do carregamento do driver”. O módulo conclui o desbloqueio antes de o driver da NVIDIA assumir a placa, grava o seletor de velocidade e depois executa um reset em nível de função (FLR).

A vantagem é o baixo custo de manutenção. Não é um programa UEFI nem um driver modificado, então a cada novo driver da NVIDIA o usuário não precisa aplicar o patch novamente.

As condições de teste divulgadas pelo autor para a RTX 3090 Ti são GEMM denso de 8192³, consumo de 450 W, acumulação em FP32, mediana de cinco amostras:

Precisão de entradaAntes do desbloqueioDepois do desbloqueio
FP1687,46 TFLOPS118,39 TFLOPS
BF1687,50 TFLOPS157,41 TFLOPS
TF3242,58 TFLOPS82,61 TFLOPS

Os ganhos de BF16 relatados por usuários variam conforme a placa: RTX 3070 de 73% a 81%, 3080 10GB de 70% a 73%, 3060 12GB cerca de 80%, 3090 entre 25% e 67%, sendo o menor valor de uma placa com limite de potência de 225 W. Esses números vêm dos benchmarks de cada relator e não podem ser comparados diretamente.

Nas cargas de trabalho reais

As etapas dominadas por operações matriciais ficam visivelmente mais rápidas: a fase de prefill da inferência de modelos grandes teria ganhos de 14% a 36%, e modelos de difusão e FlashAttention também se beneficiam. A geração token a token dos modelos grandes é limitada pela largura de banda da VRAM, e as cargas INT8 seguem outro caminho; portanto, ambas ficam praticamente iguais. Usuários que compararam as saídas relatam resultados de cálculo idênticos bit a bit antes e depois do desbloqueio.

Assim, o “quase 80% a mais de desempenho” é sobretudo um pico teórico. No uso diário de chat com modelos locais, o que mais se nota é a leitura mais rápida de prompts longos; a velocidade de geração do texto muda pouco. Até agora não há teste independente sobre o efeito na taxa de quadros em jogos.

Para quem usa placas usadas na China

Na comunidade chinesa de implantação local, a 3090 usada e a 3080 de 20 GB com memória modificada sempre foram escolhas de bom custo-benefício. A tabela de compatibilidade do projeto traz uma linha “RTX 3080 20 GB (memória modificada)” com ganho relatado de 56% a 59%, o que mostra que placas modificadas também aproveitam o desbloqueio.

O obstáculo está no sistema operacional. O módulo hoje só suporta Linux, oferece pacotes para as famílias Arch, Debian/Ubuntu e Fedora e precisa ser ativado explicitamente nos parâmetros de inicialização do kernel; carregá-lo manualmente depois da inicialização não funciona. Usuários de Windows só podem recorrer a ports UEFI da comunidade; a 3070 Ti, por exemplo, só foi validada por esse caminho.

O autor também lista várias limitações:

  • Após suspender para a RAM, a placa é desbloqueada de novo, o que leva cerca de 1 segundo a mais; a hibernação não é suportada;
  • A placa ligada ao monitor fica brevemente sem imagem durante o reset do desbloqueio;
  • Em algumas placas cujo firmware não para, é preciso cortar a energia e tentar novamente;
  • Na 3080 Ti OEM, o BF16 continua à metade da velocidade após o desbloqueio, e ainda não há relatos para o GA103.

O projeto é de código aberto sob a licença GPL-2.0. O README não discute se alterar o limite de velocidade de fábrica afeta a garantia, e a NVIDIA ainda não se manifestou publicamente; quem pretende testar no computador principal precisa avaliar isso por conta própria.

Fontes: README do projeto gpu-unlock, GameApps.hk, CocoLoop; os dados do repositório no GitHub foram usados para conferir estrelas e forks, e a tabela de benchmarks do README para conferir os TFLOPS e as faixas de ganho por modelo.