Logo NascimentoIgor Nascimento / Blog
Infraestrutura

VRAM é o estacionamento, Tensor Cores são o motor: por que placa antiga cheia de memória não roda formato novo

"Comprei uma GPU usada cheia de VRAM, mas ela não roda os formatos novos de IA na velocidade esperada." Muita gente olha só para os gigabytes e esquece que quem move os dados são os Tensor Cores, e que a geração da arquitetura dita quais formatos o silício entende. Uma conversa sobre o que é quantização, o que cada geração de Tensor Core sabe fazer, e quando a memória barata compensa mesmo assim.

InfraestruturaInferência13 min de leituraIgor Nascimento

A frustração que motiva a conversa

"Comprei uma GPU usada cheia de VRAM, mas ela não roda os formatos mais novos de IA na velocidade esperada." Ouço isso com frequência, e a causa é quase sempre a mesma: a pessoa olhou para a quantidade de gigabytes e esqueceu que VRAM é o estacionamento. O motor que move os dados são os Tensor Cores, e quando o assunto é quantização moderna, a idade da arquitetura dita as regras do jogo.

O que é quantização e por que ela existe

Modelos nascem em precisão de 16 bits, FP16 ou BF16, e isso significa dois bytes por parâmetro: um modelo de 8 bilhões ocupa 16 GB antes de qualquer cache. Quantização é comprimir esses pesos para representações menores, INT8, INT4, ou os formatos de ponto flutuante curtos, FP8 e FP4. O ganho mais óbvio é memória: o mesmo modelo em INT4 cabe em 4 a 5 GB. O ganho menos óbvio, e mais importante para quem serve, é banda: como o decode é limitado por leitura de memória, ler metade dos bytes por token é, em primeira aproximação, gerar o dobro de tokens por segundo.

Há uma distinção que muda tudo o que vem depois e que raramente aparece nos posts sobre o tema. Existem dois tipos de quantização:

Só os pesos (weight-only)

  • GPTQ, AWQ, GGUF e similares, em INT4 ou INT8
  • Os pesos ficam comprimidos na VRAM e são descomprimidos para FP16 na hora de multiplicar
  • O cálculo continua sendo em FP16; o ganho é de memória e de banda
  • Funciona em qualquer GPU com Tensor Cores FP16

Pesos e ativações (W8A8, FP8)

  • Pesos e ativações em 8 bits
  • A multiplicação acontece no formato reduzido, sem descompressão
  • O ganho é de memória, de banda e de computação, de uma vez
  • Exige que o Tensor Core entenda aquele formato em silício

Essa distinção é a chave para entender por que uma placa antiga pode rodar INT4 bem e FP8 mal.

O segredo: suporte nativo no silício

Para uma quantização ser rápida de verdade, a GPU precisa entender aquele formato em nível de hardware. É aqui que entram as gerações de Tensor Cores:

GeraçãoPlacasO que o Tensor Core entende
Pascal e anterioresGTX 10xx, Tesla P40/P100Não há Tensor Cores. Tudo roda em núcleos CUDA gerais, e a multiplicação de matrizes é lenta por natureza
Volta / TuringV100, RTX 20xx, T4Volta estreou os Tensor Cores em datacenter, com FP16. Turing foi a primeira geração de consumo e somou INT8 e INT4
AmpereRTX 30xx, A100, A10Adiciona BF16, essencial para a estabilidade de LLMs modernas, TF32, e aceleração de matrizes esparsas
Ada Lovelace / HopperRTX 40xx, L40, H100Transformer Engine com FP8 nativo, dobrando a vazão em relação a FP16
BlackwellRTX 50xx, B200FP4 nativo e formatos sub-8-bit, quadruplicando a vazão de Ampere nos melhores casos

O nosso cluster roda em RTX 3060, que é Ampere. Isso significa FP16, BF16, INT8 e INT4 nativos, e nenhum FP8 em silício. Saber disso antes de escolher o formato do modelo evita uma semana de "por que está lento".

O que acontece quando o formato não é suportado

Se você tenta rodar um modelo em FP8 numa arquitetura sem instruções para isso, acontece um de dois cenários:

  1. Emulação via software. A GPU converte os dados de FP8 para FP16 antes de calcular, e converte de volta. Você paga ciclos extras de computação e perde a vantagem de velocidade. Sobra o ganho de memória, que às vezes é o que você queria, mas é preciso saber que foi só isso que se comprou.
  2. Incompatibilidade de kernel. Motores de inferência modernos, como o vLLM, selecionam kernels otimizados pela compute capability do chip. Se a placa não atinge o requisito, o kernel não carrega, e o motor cai para um caminho genérico ou se recusa a iniciar com aquele formato.
Onde a nuance salva dinheiro

Para quem serve com poucos usuários simultâneos, o gargalo é o decode, e o decode é limitado por banda, não por computação. Nesse regime, quantização só de pesos em INT4 numa placa Ampere entrega quase todo o ganho possível: lê um quarto dos bytes e calcula em FP16, que a placa faz bem. A descompressão na hora custa computação que a placa tinha sobrando. Ter FP8 nativo passa a importar quando o prefill domina (prompts longos, muitos usuários, lote grande), porque aí a conta vira computação e o formato reduzido na multiplicação faz diferença real.

Então: custo por GB ou geração?

É a pergunta de quem monta cluster, e a resposta depende de qual regime você vai viver. Uma placa de datacenter antiga com 24 GB custa hoje uma fração de uma placa de consumo recente com 16 GB. Os trade-offs:

CritérioPlaca antiga, muita VRAMPlaca recente, menos VRAM
Carregar modelo grandeCabe mais modelo por real gastoPode exigir duas placas ou quantização mais agressiva
Decode com poucos usuáriosBom, se tiver Tensor Core FP16 e banda decenteBom
Prefill pesado e lote grandeSofre: sem FP8, sem esparsidade, menos TFLOPsBrilha: é onde a geração nova paga a diferença
Formatos FP8 e FP4Emulado ou indisponívelNativo
Suporte de softwareKernels novos param de dar suporte a compute capability antigaPrimeiro a receber otimizações
Consumo e calorGeralmente pior por token geradoMelhor eficiência energética

A regra que uso: se o produto é conversa com poucas pessoas e modelo grande, VRAM barata ganha, desde que a placa tenha Tensor Cores FP16 (o que exclui Pascal, por mais que os 24 GB da P40 sejam tentadores). Se o produto é vazão, lote e prompts longos, a geração ganha, e a VRAM que falta se resolve com duas placas ou com quantização mais agressiva.

E há uma terceira variável que pesa mais do que parece: o ciclo de vida do software. Bibliotecas de inferência abandonam arquiteturas antigas. Comprar barato hoje pode significar ficar preso numa versão de motor daqui a dezoito meses. Isso não aparece no preço, mas aparece no calendário.

A frase para levar

Muita VRAM numa arquitetura legada resolve o problema de carregar o modelo. Não resolve o de computar matrizes compactas na velocidade que aplicações em tempo real exigem. São dois problemas, e a ficha técnica só mostra o primeiro.

Resumo da conversa