Benchmarks de LLMs com 16 GB de VRAM usando llama.cpp (velocidade e contexto)

Velocidade de tokens do llama.cpp em 16 GB de VRAM (tabelas).

Conteúdo da página

Aqui estou comparando a velocidade de vários LLMs executados em uma GPU com 16GB de VRAM, e escolhendo o melhor para auto-hospedagem.

Executei esses LLMs no llama.cpp com janelas de contexto de 19K, 32K e 64K tokens.

GPU estilizada com blocos de VRAM e gráficos de estilo benchmark

Neste post, estou registrando minhas tentativas de extrair o máximo de desempenho em termos de velocidade possível.

Tabela de comparação de velocidade de LLMs (tokens por segundo e VRAM)

Modelo Tamanho 19K VRAM 19K GPU/CPU 19K T/s 32K VRAM 32K Carga 32K T/s 64K VRAM 64K Carga 64K: T/s
Qwen3.6-35B-A3B-UD-IQ3_XXS 13.2 13.8GB 96%/100% 147.5 14.0GB 96%/101% 149.1 14.7GB 96%/101% 145.8
Qwen3.6-35B-A3B-UD-IQ4_XS 17.7 14.3GB 62%/266% 95.0 14.9GB 58%/279% 92.3 14.9GB 57%/293% 86.4
Qwen3.5-35B-A3B-UD-IQ3_S 13.6 14.3GB 93%/100% 136.4 14.6GB 93%/100% 138.5 14.9GB 88%/115% 136.8
Qwen3.5-27B-IQ3_XXS-bartowsky 11.3 12.8 98/100 44.9 13.5 98/100 44.9 14.5 45/415 23.6
Qwen3.5-27B-UD-IQ3_XXS 11.5 12.9 98/100 45.3 13.7 98/100 45.1 14.7 45/410 22.7
Qwen3.5-27B-IQ4_XS.gguf 15.0 14.6 49/406 20.5 14.7 37/465 17.4 14.7 23/533 13.3
Qwen3.5-122B-A10B-UD-IQ3_XXS 44.7 14.7 30/470 22.3 14.7 30/480 21.8 14.7 28/490 21.5
Qwen3.5-122B-A10B-UD-IQ3_S 46.5 14.7 25/516 19.4 14.7 24/516 19.5 14.7 24/516 19.6
Mistral-Small-4-119B UD-IQ3_XXS 42.8 14.8 28/585 30.4 14.7 27/574 28.5 14.9 20/590 31.5
Qwen3-Coder-Next-UD-IQ4_XS 38.4 14.6 32/460 41.1 14.7 29/440 41.3 14.8 32/460 38.3
Nemotron Super 120b IQ3_XXS 56.2 15.0 26/517 17.5 14.6 26/531 17.4 14.6 26/535 17.6
gemma-4-26B-A4B-it-UD-IQ4_XS 13.4 14.7 95/100 121.7 14.9 95/115 114.9 14.9 75/190 96.1
gemma-4-31B-it-UD-IQ3_XXS 11.8 14.8 68/287 29.2 14.8 41/480 18.4 14.8 18/634 8.1
GLM-4.7-Flash-IQ4_XS 16.3 15.0 66/240 91.8 14.9 62/262 86.1 14.9 53/313 72.5
GLM-4.7-Flash-REAP-23B IQ4_XS 12.6 13.7 92/100 122.0 14.4 95/102 123.2 14.9 71/196 97.1

19K, 32K e 64K são os tamanhos de contexto.

O valor de carga acima é a Carga da GPU. Se você vir um número baixo nesta coluna, significa que o modelo está sendo executado principalmente na CPU e não consegue atingir uma velocidade aceitável neste hardware. Esse padrão corresponde ao que as pessoas veem quando uma quantidade muito pequena do modelo cabe na GPU ou quando o contexto empurra o trabalho de volta para o host.

Sobre llama.cpp, desempenho de LLMs, OpenCode e outras comparações

Se você deseja obter caminhos de instalação, exemplos de llama-cli e llama-server, e as bandeiras que importam para VRAM e tokens por segundo (tamanho do contexto, lote, -ngl), comece com Introdução ao llama.cpp com CLI e Servidor.

Para uma visão mais ampla do desempenho (taxa de transferência versus latência, limites de VRAM, requisições paralelas e como os benchmarks se encaixam em diferentes hardwares e runtimes), veja Desempenho de LLMs em 2026: Benchmarks, Gargalos & Otimização.

A qualidade da resposta é analisada em outros artigos, por exemplo:

Executei um teste semelhante para LLMs no Ollama: Melhores LLMs para Ollama em GPU com 16GB de VRAM.

Se você executa o Qwen 3.6 27B ou 35B via llama.cpp e deseja impulsionar ainda mais a velocidade de geração, veja Qwen 3.6 MTP vs Decodificação Padrão em GPU de 16GB — a decodificação especulativa MTP adiciona até 67% de taxa de transferência na geração para o modelo denso de 27B, com tabelas mostrando o custo de VRAM e a compensação da janela de contexto em cada nível de --spec-draft-n-max.

Por que o comprimento do contexto altera os tokens por segundo

À medida que você passa de 19K para 32K ou 64K tokens, o cache KV cresce e a pressão sobre a VRAM aumenta. Algumas linhas mostram uma grande queda nos tokens por segundo em 64K, enquanto outras permanecem estáveis, o que é o sinal para revisar os quantizados, os limites de contexto ou o offloading de camadas, em vez de assumir que o modelo é “lento” em geral. Para os cálculos de orçamento por trás desses números — a fórmula exata para bytes KV por token, tabelas de tipo de cache em 32K/64K/128K e como calcular sua própria margem — veja Cache KV em GPUs de 16 GB: Fazendo o Contexto Longo Caber de Verdade.

Os modelos e quants que escolhi para testar são para que eu execute por conta própria e veja se eles trazem um bom ganho em termos de custo/benefício neste equipamento ou não. Então, sem quants q8 com contexto de 200k aqui :) …

GPU/CPU é uma carga, medida por nvitop.

O llama.cpp, ao autoconfigurar o descarregamento das camadas para a GPU, tenta manter 1GB livre. Especificamos manualmente esse parâmetro via parâmetro de linha de comando -ngl, mas não estou ajustando finamente isso aqui, apenas preciso entender que, se houver uma queda significativa de desempenho ao aumentar o tamanho da janela de contexto de 32k para 64k - podemos tentar aumentar a velocidade em 64k ajustando finamente o número de camadas descarregadas.

Hardware de teste e configuração do llama.cpp

Testei a velocidade dos LLMs em um PC com esta configuração:

  • CPU i-14700
  • RAM 64GB 6000Hz (2x32GB)
  • GPU RTX-4080
  • Ubuntu com drivers NVidia
  • llama.cpp/llama-cli, sem camadas descarregadas especificadas
  • VRAM usada inicialmente, antes de iniciar o llama-cli: 300MB

Execuções extras em contexto de 128K (Qwen3.5 27B e 122B)

Modelo 128K Carga 128K: T/s
Qwen3.5-27B-UD-IQ3_XXS 16/625 9.6
Qwen3.5-122B-A10B-UD-IQ3_XXS 27/496 19.2

Execuções Ajustadas

Para alguns modelos e quants interessantes, tentei encontrar parâmetros de linha de comando especiais do llama-cpp para melhor utilizar a VRAM. Aqui está o que consegui alcançar:

Modelo Contexto Camadas na GPU Carga CPU/CPU Velocidade
Qwen3.5-27B-IQ4_XS.gguf 18k 65 98%/100% 38.0
Qwen3.5-27B-IQ4_XS.gguf 64k 53 33%/488% 15.7

Considerações finais para construções com 16 GB de VRAM

  • Meu favorito atual, Qwen3.5-27B-UD-IQ3_XXS, está parecendo bom em seu ponto ideal de contexto de 50k (estou obtendo aproximadamente 36t/s)
  • Qwen3.5-122B-A10B-UD-IQ3_XXS está superando em desempenho o Qwen3.5 27B nos contextos acima de 64K.
  • Posso fazer o Qwen3.5-35B-A3B-UD-IQ3_S lidar com contexto de 100k tokens, e ele cabe na vram, portanto não há queda de desempenho
  • Não vou usar o gemma-4-31B em 16GB de VRAM, mas o gemma-4-26B pode ser medianamente bom…, preciso testar.
  • Preciso testar o quão bem o Nemotron cascade 2 e o GLM-4.7 Flash REAP 23B funcionam. Serão melhores que o Qwen3.5-35B q3? Duvido, mas ainda assim, posso testar para confirmar a suspeita.
  • Para saber por que a faixa de 25–34B é o padrão em 2026 uma vez que você tem 24 GB, e por que um Qwen3.8-27B Q4 não pertence realmente a este cartão de 16 GB, veja A Fronteira Eficiente dos Modelos Abertos em 2026.

Subscrever

Receba novos artigos sobre sistemas, infraestrutura e engenharia de IA.