Voltar para o Blog

gpu-unlock em 2026: Sua GeForce Roda IA Pela Metade? Como Tirar a Trava no Linux

Olá HaWkers, um repositório criado em 18 de outubro chegou a mais de 13 mil estrelas no GitHub em menos de duas semanas com uma frase provocativa: "Your GeForce runs AI at half speed". O gpu-unlock, do desenvolvedor Zagitta, é um módulo do kernel Linux que remove um limite de fábrica das GeForce RTX 20, 30 e 40 e promete até o dobro de vazão nas contas de ponto flutuante usadas em IA.

Será que a sua placa de vídeo esteve correndo com o freio de mão puxado esse tempo todo? Neste artigo você vai entender o que é essa trava, em que tipo de carga o ganho aparece, como testar de um jeito que dá para desfazer e por que eu não instalaria isso na máquina de trabalho sem pensar duas vezes.

O Que É a Trava dos Tensor Cores

Desde a arquitetura Turing, as placas RTX da NVIDIA têm unidades dedicadas a multiplicar matrizes: os Tensor Cores. É nelas que rodam a maior parte do treinamento e boa parte da inferência em ponto flutuante.

Segundo o projeto, as GeForce saem de fábrica com esses núcleos limitados à metade da taxa quando a conta usa FP16, BF16 ou TF32 com acumulação em FP32, justamente a combinação mais comum em IA sem quantização. O mesmo silício vendido como RTX série A, a linha profissional, roda na taxa cheia. A explicação do autor é direta: segmentação de mercado, para que empresas comprem as placas mais caras.

Alguns termos importam aqui:

  • FP16: ponto flutuante de 16 bits, com menos alcance e tamanho pequeno.
  • BF16: 16 bits com mais alcance, muito usado em treinamento.
  • TF32: formato da NVIDIA que aceita entradas FP32, mas multiplica com a precisão de 10 bits do FP16.
  • FP32 accumulation: a soma do resultado acontece em 32 bits, o que evita perda de precisão nas somas longas de uma multiplicação de matrizes.

O limite está na taxa de emissão de instruções. A placa não fica mais inteligente nem ganha memória: ela só passa a emitir essas instruções na frequência que o hardware já suportava. Por isso o projeto afirma que a saída é idêntica bit a bit. Muda a velocidade, não o resultado.

Como o gpu-unlock Remove o Limite

O trabalho acontece antes de o driver da NVIDIA carregar. A sequência, pela documentação do projeto, é esta:

  1. O módulo gpu_unlock entra no initramfs e carrega antes do nvidia.
  2. Ele executa a etapa de firmware que dá acesso aos registradores protegidos.
  3. Grava os seletores de velocidade (SS0 e SS1) com os valores da taxa cheia.
  4. Faz um reset da função PCIe (FLR).
  5. O driver oficial, sem nenhuma alteração, assume a placa como sempre.

Isso explica três coisas que chamam atenção no README: não há VBIOS gravada, não há driver modificado e nada precisa ser refeito quando sai um driver novo.

O ponto mais delicado é o passo 2. A técnica vem de pesquisas anteriores feitas nas placas de mineração CMP, como a CMP 170HX, e usa uma falha de estouro de pilha no Booter, o firmware assinado que roda no processador de segurança da GPU. Ou seja, não é um ajuste previsto pela NVIDIA: é uma falha de segurança usada a favor do dono da placa. O próprio autor disse no Hacker News que as ideias do exploit não são dele e que o desbloqueio "simply flips 2 bits", ou seja, só inverte dois bits.

Quais Placas Entram

Linux é a única plataforma oficial. A tabela abaixo resume o estado do projeto na versão 2.0, lançada em 27 de outubro:

Geração Exemplos Status
RTX 30 (Ampere) 3050 a 3090 Ti, 3070 e 3080 de notebook Estável, com mais de 100 relatos
RTX 40 (Ada Lovelace) 4050 a 4090 D Experimental
RTX 20 (Turing) 2060 a 2080 Ti, Titan RTX Experimental
RTX 50 (Blackwell) Toda a linha Sem suporte

Quem tem RTX 50 fica de fora, e o autor considera improvável que isso mude. Em notebooks, a situação é irregular: muitos modelos desligam a GPU dedicada quando ela fica ociosa, e isso apaga o desbloqueio em silêncio.

Antes de qualquer coisa, descubra a sua placa e o endereço PCI dela:

# Nome da placa, endereço PCI, versão do driver e limite de energia
nvidia-smi --query-gpu=name,pci.bus_id,driver_version,power.limit --format=csv

# Endereço completo no formato que o gpu-unlock aceita (ex: 0000:21:00.0)
lspci -Dnn | grep -i nvidia

Onde o Ganho Aparece de Verdade

Esta é a parte que o título chamativo esconde. "2x" é a taxa de pico da instrução, não o tempo que a sua tarefa vai levar. O próprio README separa os dois mundos.

Multiplicação densa de matrizes em BF16, com o limite de energia original:

Placa Antes Depois Ganho
RTX 3060 12 GB 27 TFLOPS 51 TFLOPS +87%
RTX 3070 40 TFLOPS 72 TFLOPS +81%
RTX 3090 75 TFLOPS 125 TFLOPS +65%
RTX 4080 104 TFLOPS 193 TFLOPS +87%
RTX 4090 165 TFLOPS 329 TFLOPS +100% no pico

Agora as cargas reais, sempre segundo os relatos reunidos pelo projeto:

Carga Ganho típico
Prefill de LLM em FP16/BF16 (vLLM, PyTorch, Transformers) +25% a +55%
Geração de imagem (SDXL, ComfyUI) +30% a +55%
LoRA e fine-tuning em BF16 +25% a +50%
Geração de vídeo (Wan 2.2) +15% a +20%
llama.cpp e Ollama com GGUF quantizado 0% a +15%
Geração de tokens de LLM (limitada pela memória) Nenhum
Modelos INT8, FP8 e INT4 Nenhum
Jogos e CUDA em FP32 Nenhum

Repare na linha do Ollama. Se você roda modelo quantizado em casa, que é o caso da maioria, o ganho tende a ser pequeno ou nulo. Quem já configurou IA local na GPU com o Strata sabe que a velocidade da resposta costuma esbarrar na memória, e essa trava não tem nada a ver com memória.

Os testes de fora confirmam a cautela. O Notebookcheck relatou que um usuário com RTX 3090 foi de 77,5 para 129,6 TFLOPS em BF16, mas viu só 16% de ganho no processamento de prompt com contexto longo, e a geração de tokens ficou praticamente igual. Na RTX 4090 o freio passa a ser a energia: o fork para a linha 40 registra que a taxa de instrução dobra, enquanto multiplicações reais de matrizes ganharam de 12% a 34% em FP16 em alguns tamanhos e nada em uma matriz de 4096³ em BF16. A mesma ficha mostra 346 W contra 313 W em uma comparação com a placa original.

Vale lembrar também que quase todos esses números são autorrelatados, em poucas placas e poucas rodadas. Eles não são benchmark independente de laboratório.

Meça Antes de Instalar

Sem uma linha de base você não vai saber se ganhou alguma coisa. O script abaixo mede uma multiplicação de matrizes em BF16 e em FP32 no PyTorch. O FP32 funciona como grupo de controle: se o BF16 subir e o FP32 ficar parado, o desbloqueio está fazendo o que promete.

import time
import torch

# Tamanho da matriz: use um valor que caiba com folga na sua VRAM
N = 4096
RODADAS = 20


def medir(dtype):
    a = torch.rand(N, N, device="cuda", dtype=dtype)
    b = torch.rand(N, N, device="cuda", dtype=dtype)

    # Aquecimento para evitar que a alocação inicial suje a medição
    for _ in range(3):
        torch.matmul(a, b)
    torch.cuda.synchronize()

    inicio = time.perf_counter()
    for _ in range(RODADAS):
        torch.matmul(a, b)
    # Sem sincronizar, o relógio mediria só o envio dos comandos
    torch.cuda.synchronize()
    duracao = time.perf_counter() - inicio

    # Uma multiplicação densa faz cerca de 2 * N^3 operações
    return (2 * N**3 * RODADAS) / duracao / 1e12


print(torch.cuda.get_device_name(0))
for nome, dtype in [("BF16", torch.bfloat16), ("FP32", torch.float32)]:
    print(f"{nome}: {medir(dtype):.1f} TFLOPS")

Rode três vezes, salve os resultados e repita tudo depois do desbloqueio. O número absoluto pode não bater com a tabela do README, e tudo bem: aqui o que importa é a comparação na mesma máquina, com a mesma temperatura e o mesmo limite de energia.

Depois disso, meça a tarefa que você realmente usa. Cronometrar o trabalho real diz mais do que qualquer TFLOPS:

# Registra o tempo total da sua carga real antes e depois do desbloqueio
/usr/bin/time -v python meu_treino.py 2>&1 | tee resultado-antes.log

# Em outro terminal, acompanha energia, temperatura e clock durante o teste
nvidia-smi --query-gpu=power.draw,temperature.gpu,clocks.sm --format=csv -l 2

Uma issue aberta no projeto relata telemetria de clock presa em 210 MHz depois do desbloqueio em uma RTX 3090, com desempenho normal. Por isso, confie mais no tempo de execução do que em uma única leitura do monitor.

Como Instalar no Linux

Se a medição mostrou que sua carga pode se beneficiar, a instalação segue o README oficial. Use só o repositório original. O FAQ avisa que não existe site, moeda ou instalador do projeto, e recomenda muito cuidado com os instaladores de Windows que circulam por aí.

git clone https://github.com/Zagitta/gpu-unlock
cd gpu-unlock

# Leia o que vai rodar com sudo antes de executar
less Makefile

# Detecta Arch, Debian/Ubuntu ou Fedora/RHEL, compila e instala os pacotes
make install

O make install baixa os insumos da NVIDIA e gera o firmware localmente. Instalar, porém, não ativa nada: o módulo só age quando a linha de comando do kernel pede.

# Debian, Ubuntu e Mint: edite o arquivo e acrescente o parâmetro,
# mantendo as opções que já existem
sudo nano /etc/default/grub
# GRUB_CMDLINE_LINUX_DEFAULT="quiet splash gpu_unlock.targets=all"
sudo update-grub

# Fedora e RHEL
sudo grubby --update-kernel=ALL --args="gpu_unlock.targets=all"

Com mais de uma GPU, prefira apontar a placa pelo endereço PCI (gpu_unlock.targets=0000:21:00.0). Assim você testa uma só de cada vez. Depois de reiniciar, confira o resultado:

# Mostra o que o módulo fez neste boot
journalctl -k -b | grep gpu_unlock

# Confirma que o driver nvidia assumiu a placa normalmente
lspci -nnk -s 0000:21:00.0

Para voltar atrás, remova gpu_unlock.targets= da linha de comando do kernel. Em um boot avulso, dá para apagar o parâmetro na tela de edição do bootloader, o que salva você se a máquina não subir. Tirar os pacotes remove o módulo e os ajustes do initramfs.

Os Riscos Que Você Assume

Não existe almoço grátis aqui, e o FAQ otimista do projeto não conta a história inteira.

Hardware. O autor considera dano muito improvável, porque a limitação térmica e o controle de energia continuam funcionando. Outros projetos da mesma família são menos tranquilos: o README do turing-unlock alerta que o uso pode danificar o hardware. Uma placa antiga, com ventoinha cansada ou fonte no limite, é o pior cenário para extrair mais carga do chip.

Estabilidade. Há relatos de falha real. Uma issue descreve cinco RTX 3090 atrás de um switch PCIe em que o switch inteiro caiu com erro Xid 79 depois de um desbloqueio bem-sucedido. Outra relata que, em passthrough no ESXi, o estado original não voltou após remover o parâmetro e reiniciar a máquina convidada. Máquina que serve produção não é lugar para esse teste.

Licença e garantia. O módulo é GPL-2.0, mas o firmware da NVIDIA continua sob os termos dela, e o próprio projeto diz que não afirma ter aprovação de redistribuição. Não encontrei nenhuma posição pública da NVIDIA nem informação sobre garantia. Trate como risco seu, ainda mais em uma placa nova.

Validade do truque. A NVIDIA pode mudar isso no futuro. A linha RTX 50 já não é alcançada, e novos firmwares ou mudanças no carregamento podem encerrar a brincadeira sem aviso.

Para quem isso faz sentido, então? Eu resumiria assim:

  • Vale testar: RTX 30 em uma máquina dedicada, treinando LoRA, gerando imagem ou rodando prefill em FP16/BF16.
  • Pense bem: RTX 40 e RTX 20 experimentais, notebooks e máquinas com várias GPUs.
  • Não vale: quem só joga, quem usa só GGUF quantizado e qualquer servidor do qual alguém dependa.

O Que Isso Diz Sobre o Mercado de GPUs

A história maior é a da segmentação. Fazer um único chip e travar recursos por software é uma prática antiga e, para quem vende, faz todo sentido: o custo de fabricação é o mesmo e o preço segue o que cada cliente aceita pagar. Com a IA local, essa linha passou a incomodar muita gente, porque o entusiasta com uma 3090 usada faz hoje um trabalho que antes era exclusivo de placas profissionais.

As 13 mil estrelas mostram o tamanho dessa vontade. A velocidade com que surgiram forks para Ada e Turing, além de um porte experimental para Windows, indica que uma comunidade inteira estava esperando por isso. E há uma ironia técnica no meio: um projeto que aumenta o desempenho se apoia em uma falha de segurança do firmware que deveria proteger a placa.

Para o desenvolvedor, a lição prática é outra. Antes de comprar hardware novo ou instalar um hack, descubra onde está o gargalo real da sua carga. Em muitos casos a memória manda, e nenhum desbloqueio de núcleo muda isso.

Perspectivas

O ponto a acompanhar agora é a resposta da NVIDIA, que ainda não apareceu nas fontes que consultei, e a chegada de benchmarks independentes mais rigorosos. Se os ganhos em prefill e imagem se confirmarem em laboratório, placas RTX 30 usadas podem ganhar uma sobrevida interessante para quem faz IA local. Enquanto isso, trate os números do projeto como promessa e os da sua máquina como verdade.

Bora pra cima! 🦅

📚 Quer Acompanhar o Que Vem Por Aí?

Este artigo cobriu o gpu-unlock e a trava dos Tensor Cores nas GeForce, mas o ecossistema muda toda semana e nem tudo vira artigo aqui.

No X eu compartilho o que estou testando, os bastidores dos projetos e as novidades que aparecem antes de virarem post.

Me Segue Lá

👉 Seguir @jeffbruchado no X

💡 Conteúdo diário sobre desenvolvimento, carreira e as ferramentas que eu realmente uso

Comentários (0)

Esse artigo ainda não possui comentários 😢. Seja o primeiro! 🚀🦅

Adicionar comentário