Pular para o conteúdo

LLM VRAM Calculator: Dimensione a GPU antes de baixar o modelo.

Roda no seu navegador — nada do que você cola sai desta página. Como comprovamos isso

Ambiente de testes da LLM VRAM Calculator

Model
Quantization

KV cache is counted at FP16. Overhead is a fixed 1.5 GiB estimate for the runtime and compute buffers. A custom size borrows the architecture of the nearest preset.

Results update as you type — press Enter to run now.

fig. 40 — llm-vram-calculator · ai 7.05 GiB total at Q4_K_M, 8k context — fits an 8 GiB GPU.
Result
Total VRAM7.05 GiBfits an 8 GiB card
Weights4.55 GiB8 B × 4.89 bpw (Q4_K_M)
KV cache1.00 GiB8k ctx · 32 layers · 8 KV heads · 128 dim · FP16
Overhead1.50 GiBruntime + compute buffers, estimate
ArchitectureLlama 3.1 8B

GPU tiers

  • 8 GiBfitsRTX 4060, RTX 3070, RX 7600
  • 12 GiBfitsRTX 4070, RTX 3060 12GB, RTX 5070
  • 16 GiBfitsRTX 4060 Ti 16GB, RTX 4080, RTX 5080
  • 24 GiBfitsRTX 4090, RTX 3090, RX 7900 XTX
  • 32 GiBfitsRTX 5090, V100 32GB
  • 48 GiBfitsRTX A6000, RTX 6000 Ada, L40S
  • 80 GiBfitsA100 80GB, H100 80GB

Escolha um preset de modelo como Llama 3.1 8B ou informe um número de parâmetros, selecione uma quantização GGUF como Q4_K_M e um tamanho de contexto, e obtenha a VRAM que um LLM local precisa — pesos, cache KV e sobrecarga de execução em GiB, com um veredito contra os tamanhos de GPU comuns — tudo calculado no seu navegador, sem cadastro.

A lacuna

Os pesos cabem. Depois a janela de contexto não cabe.

A memória de GPU de um LLM local são três contas, não uma. Os pesos são a parte que todo mundo dimensiona: parâmetros vezes bits por peso, e por isso a quantização de 4 bits de um modelo de 8B é um arquivo de 4,5 GiB. O cache KV é a parte que todo mundo esquece — dois tensores por camada que crescem linearmente com o tamanho do contexto, então o mesmo modelo de 8B pede 1 GiB de cache em 8k tokens e 16 GiB em 128k. A sobrecarga de execução é o resto: buffers de computação, contexto CUDA ou Metal e o próprio framework, um custo fixo de cerca de 1,5 GiB.

Dois sistemas de unidades pioram os casos-limite. Uma GPU vendida como “24 GB” expõe 24 GiB (2³⁰ bytes cada), enquanto as fichas de modelo e os tamanhos de arquivo costumam citar GB (10⁹ bytes) — uma diferença de 7,4 %. Esta calculadora trabalha em GiB do início ao fim, então o encaixe é julgado contra o que o driver realmente informa, e a referência abaixo mostra os dois números para o exemplo resolvido. No Apple silicon a memória unificada é compartilhada com o sistema; conte com cerca de 75 % da RAM do Mac disponível para o modelo.

Perguntar a uma IA quanta VRAM um modelo precisa é o atalho arriscado: um modelo de linguagem lembra números plausíveis de fóruns sobre outras quantizações e tamanhos de contexto. Esta calculadora calcula o cache KV real por camada a partir da forma do config.json de cada modelo e dos bits por peso medidos pelo llama.cpp — números com os quais você pode verificar a resposta de uma IA, e não mais texto plausível.

Convertendo entre GiB e GB? O Data Size Converter mostra as contagens exatas de bytes.

O processo

Como funciona.

Quatro passos determinísticos rodam a cada mudança — todos dentro da aba do seu navegador, com as formas de modelo conferidas contra cada config.json.

  1. Escolhe a forma.

    Um preset fornece o número de camadas, as cabeças KV e a dimensão de cabeça do modelo a partir do seu config.json; um número de parâmetros personalizado toma emprestada a forma do preset mais próximo e é marcado como estimado.

  2. Pesa os pesos.

    Parâmetros × bits efetivos por peso da quantização escolhida, ÷ 8, ÷ 2³⁰. Os bits por peso vêm da tabela medida do llama.cpp, não dos 4 ou 8 nominais.

  3. Dimensiona o cache KV.

    Dois tensores por camada (K e V) × cabeças KV × head-dim × tokens de contexto × 2 bytes em FP16 — a parte da conta que cresce com a sua janela de contexto.

  4. Soma a sobrecarga e dá o veredito.

    1,5 GiB fixos para o runtime e os buffers de computação; depois o total é comparado com os tamanhos de placa comuns e a menor em que cabe é nomeada.

Referência de fórmulas

As duas fórmulas, resolvidas.

Tudo o que o painel mostra vem destas duas linhas mais uma sobrecarga fixa. Aqui estão elas com formas de modelo reais, para você conferir o resultado à mão.

O cache KV cresce com o contexto

A atenção por grupos de consultas mantém o cache pequeno: o Llama 3.1 tem 32 cabeças de atenção, mas só 8 cabeças KV por camada, e é esse o número que conta aqui.

fig. 40.1 — kv-cache-llama-3-1-8b
KV cache (FP16) = 2 × layers × kv_heads × head_dim × context × 2 bytes

Llama 3.1 8B at 128k context
  layers 32 · kv_heads 8 · head_dim 128 · context 131,072
  = 2 × 32 × 8 × 128 × 131,072 × 2 B
  = 17,179,869,184 B
  = 16.0 GiB            (17.2 GB — the KV cache alone outgrows a 16 GiB card)

Same model at 8k context
  = 1.0 GiB

Pesos por quantização

Um GGUF “de 4 bits” não tem 4 bits por peso: o Q4_K_M fica em média em 4,89 depois de contadas as escalas e os tensores de maior precisão, e o Q8_0 em média em 8,5.

fig. 40.2 — weights-llama-3-1-70b
Weights = params × bits_per_weight ÷ 8 ÷ 2^30

Llama 3.1 70B, Q4_K_M (4.89 bpw measured)
  weights   70e9 × 4.89 ÷ 8 ÷ 2^30  = 39.85 GiB
  KV @ 8k   2 × 80 × 8 × 128 × 8,192 × 2 B  =  2.50 GiB
  overhead                                 =  1.50 GiB
  total                                    = 43.85 GiB   → fits a 48 GiB card, not 24 or 32

Llama 3.1 8B, Q4_K_M
  weights   8e9 × 4.89 ÷ 8 ÷ 2^30   = 4.55 GiB
  KV @ 8k                            = 1.00 GiB
  total (with overhead)              = 7.05 GiB   → fits an 8 GiB card

Próximo passo

Vai servir o modelo em um cluster? Dimensione o pod também.

Escolhida a placa, a Kubernetes Resource Calculator transforma o seu número de réplicas e as requisições de CPU, memória e GPU por pod em totais por nó e folga — útil antes de escrever o Deployment que monta o modelo.

fit.txt
Llama 3.1 8B   Q4_K_M    8k   →  7.05 GiB   fits  8 GiB
Llama 3.1 8B   FP16    128k   →  32.4 GiB   fits 48 GiB
Llama 3.1 70B  Q4_K_M    8k   →  43.8 GiB   fits 48 GiB

FAQ

Suas perguntas, respondidas.

Toque em uma pergunta para expandir a resposta.

Some três partes. Os pesos são o número de parâmetros multiplicado pelos bits por peso da quantização escolhida, dividido por 8 para obter bytes e por 2^30 para obter GiB — um modelo de 8B ocupa cerca de 15 GiB em FP16, 8 GiB em Q8_0 e 4,6 GiB em Q4_K_M. O cache KV cresce com o tamanho do contexto (próxima pergunta), e o runtime acrescenta um buffer fixo, que esta calculadora fixa em 1,5 GiB. O total precisa caber na memória da placa com alguma folga; se não couber, escolha uma quantização menor ou um contexto mais curto antes de partir para uma GPU maior.

A quantização guarda cada peso em menos bits do que os 16 com que ele foi treinado. FP16 mantém 16 bits por peso (bpw); Q8_0 usa cerca de 8,5 bpw e é praticamente sem perdas; Q4_K_M usa cerca de 4,89 bpw — mais ou menos um terço do tamanho FP16 — com um pequeno custo de qualidade que a maioria não percebe num chat. Os valores fracionários vêm dos layouts mistos do llama.cpp, que mantêm alguns tensores sensíveis em precisão maior e guardam um fator de escala por bloco; por isso um arquivo «de 4 bits» não é exatamente metade de um de 8 bits.

Cada token do contexto guarda um vetor chave e um vetor valor em cada camada, então o cache KV é 2 × camadas × cabeças KV × dimensão da cabeça × tokens × 2 bytes em FP16. Para o Llama 3.1 8B (32 camadas, 8 cabeças KV, dimensão da cabeça 128) são 128 KiB por token: 1 GiB com 8.192 tokens e 16 GiB com os 131.072 completos — mais do que os próprios pesos em Q4_K_M. A atenção de consulta agrupada (8 cabeças KV em vez de 32) divide o cache por quatro, e é por isso que o Llama 3 aguenta contextos longos onde o Llama 2 não aguentava. O controle deslizante de contexto desenha o cache como um segmento próprio da barra para você ver para onde a memória vai.

Memória de GPU é vendida em gigabytes binários: uma RTX 4090 «de 24 GB» tem 24 GiB, que são 25,77 GB. Um GB são 10^9 bytes e um GiB são 2^30 = 1.073.741.824 bytes, 7,37% a mais, então dividir por 10^9 faria cada modelo parecer 7,4% maior do que é e erraria os veredictos bem no limite. A calculadora divide por 2^30 em todo lugar, para que um veredicto compare coisas iguais.

Pesos e cache KV não são tudo: o runtime (llama.cpp, Ollama, vLLM) aloca buffers de computação para as ativações, o contexto CUDA ou Metal ocupa algumas centenas de MiB e o driver reserva um pouco de memória própria. 1,5 GiB é uma estimativa redonda que cobre isso para a maioria dos modelos em uma única placa; o valor real varia com o runtime, o tamanho do lote e a GPU. Trate como margem, não como medida — se um veredicto cair a menos de meio GiB de um degrau, espere problemas.

Não inteiramente na GPU. O Llama 3.1 70B em Q4_K_M precisa de cerca de 40 GiB só para os pesos, antes do cache KV e do overhead do runtime, então uma única placa de 24 GiB não consegue guardá-lo. Ele cabe em uma placa de 48 GiB (RTX 6000 Ada, A6000) ou dividido entre duas placas de 24 GiB com divisão por camadas; Q2_K, com cerca de 3,16 bpw, baixa os pesos para uns 26 GiB, ainda demais para uma placa e com custo de qualidade visível. Os runtimes podem descarregar as camadas restantes para a RAM do sistema, mas a velocidade de tokens cai então para o que a largura de banda de memória da CPU permite, normalmente poucos tokens por segundo.

O Apple Silicon compartilha um único pool de memória entre CPU e GPU, então um Mac com 64 GB carrega modelos que nenhuma placa de 24 GiB aceita. Por padrão o macOS deixa a GPU usar cerca de 75% da memória unificada (uns 48 GiB numa máquina de 64 GB) e guarda o resto para o sistema; o sysctl iogpu.wired_limit_mb pode elevar o limite por sua conta e risco. Informe como orçamento cerca de três quartos da memória do Mac, e lembre que a largura de banda, não a capacidade, define a velocidade de tokens: um M-series Max move cerca de 400 GB/s, uma RTX 4090 perto de 1 TB/s.

Não. A calculadora roda 100% no cliente: os presets de arquitetura e a aritmética chegam junto com a página, e cada número é calculado na aba do seu navegador. Nada é enviado a um servidor, não há conta nem cadastro, e o link de compartilhamento codifica sua seleção no fragmento da URL, que os navegadores nunca enviam a um servidor.

Só para os pesos: um modelo de 8B precisa de cerca de 4,6 GiB em Q4_K_M, 7,9 GiB em Q8_0 e 14,9 GiB em FP16 (um de 7B, cerca de 4,0, 6,9 e 13,0 GiB); um de 14B, cerca de 8,0, 13,9 e 26,1 GiB; um de 70B, cerca de 39,9, 69,3 e 130,4 GiB. Some o cache KV do seu contexto — com 8.192 tokens é 1 GiB para o Llama 3.1 8B e 2,5 GiB para o Llama 3.1 70B — mais o overhead de 1,5 GiB do runtime, de modo que um 8B em Q4_K_M com 8k de contexto fica perto de 7,1 GiB no total. Cada modelo popular tem sua própria página com o número real de camadas e de cabeças KV, para você ler direto o veredicto daquele modelo.

Os pesos têm tamanho fixo, mas o cache KV cresce a cada token: custa 2 × camadas × cabeças KV × dimensão da cabeça × 2 bytes por token em FP16. Para o Llama 3.1 8B são 2 × 32 × 8 × 128 × 2 = 128 KiB por token, então o contexto completo de 131.072 tokens precisa de 16 GiB de cache contra cerca de 4,6 GiB de pesos em Q4_K_M. É a atenção de consulta agrupada que o mantém pequeno assim — 8 cabeças KV em vez de 32 reduzem o cache a um quarto —, enquanto modelos antigos com atenção multicabeça, com uma cabeça KV por cabeça de consulta, estouram a memória em contextos bem mais curtos.

More free, private DevOps tools.

A LLM VRAM Calculator é uma das ferramentas do OpsCanopy — um dossel crescente de validadores, conversores e testadores baseados no navegador que nunca tocam um servidor.

Começando com AI & local LLMs?  Leia o guia de AI & local LLMs →

42 ferramentas gratuitas, todas capazes de funcionar offline — o opscanopy.com não exige cadastro e não envia nada.

Mais dimensionamento: a Kubernetes Resource Calculator e o Data Size Converter, ou navegue pelo diretório completo de ferramentas.

Apenas estimativas; o cache KV é dimensionado em FP16 e a sobrecarga é uma margem fixa, então confirme sempre contra o relatório do seu próprio runtime antes de comprar hardware. OpsCanopy é gratuito e aberto.