Pular para o conteúdo
Fantástico Mundo de Jon
RSS

Lab

Atualizado em

Esta página é a procedência de tudo que sai publicado aqui. Quando um post cita um número, ele foi medido nesta máquina, com esta configuração.

Como eu meço

Um número de throughput só significa alguma coisa se vier com o procedimento. O meu é este, e é o mesmo em todos os posts:

Modelo carregado e aquecido antes de medir. A primeira execução depois de carregar inclui a leitura do modelo do disco e a compilação de kernels. Ela é descartada.

Contexto declarado explicitamente. A janela padrão do runtime não é a janela que eu uso, e o KV cache muda a memória e o desempenho. O contexto vai declarado em toda medição.

Três execuções, mediana reportada. Média esconde outlier; uma execução só não vale nada. Quando a dispersão entre execuções passa de 5%, isso vira nota no post — porque variação alta geralmente significa térmica ou disputa por GPU, e o leitor precisa saber.

Prompt e saída de tamanho fixo. Throughput medido com prompts diferentes não é comparável. Uso o mesmo prompt e limito a saída ao mesmo número de tokens.

GPU dedicada durante a medição. Nada de vídeo, nada de outro modelo carregado, nada de compositor pesado disputando memória.

O que separa prefill de decode

Duas métricas diferentes que muita gente reporta como uma só:

O prefill (ou prompt eval) é o processamento do prompt de entrada — paralelo, limitado por poder de cálculo. O decode (eval) é a geração token a token — sequencial, limitado por largura de banda de memória.

Um modelo pode ter prefill excelente e decode medíocre, ou o contrário. Reportar só “tokens/s” sem dizer qual dos dois é a fonte mais comum de comparação inútil entre modelos. Aqui os dois aparecem separados.

Limitações desta bancada

Vale dizer o que estes números não cobrem: é uma máquina de usuário único, com uma GPU. Não meço concorrência, não meço batching de servidor, não meço escala horizontal. Quem vai colocar isso em produção com muitos usuários simultâneos precisa de vLLM ou TensorRT-LLM e de um teste próprio — os números daqui servem para decidir o que rodar na sua mesa, não para dimensionar um cluster.

Bancada

  1. NVIDIA RTX 5070

    12 GB GDDR7

    o piso realista — o que cabe em quem comprou placa de entrada

  2. NVIDIA RTX 5070 Ti

    16 GB GDDR7

    onde os modelos de 14B e 24B começam a caber inteiros

  3. NVIDIA RTX 4090

    24 GB GDDR6X

    a geração anterior, que em muita conta ainda ganha por token

  4. NVIDIA RTX 5090

    32 GB GDDR7

    32B em Q4 com contexto longo, sem precisar mandar nada para a CPU

  5. MacBook Pro M4 Max

    48 GB unificados

    Apple Silicon com MLX — a comparação de consumo e de bateria

  6. Mini PC de memória unificada

    96 GB unificados

    muita memória e pouca banda: carrega o que nenhuma GPU aqui carrega

Runtimes
vLLM · Ollama · llama.cpp · MLX
Apoio
LiteLLM (gateway) · Langfuse (tokens e custo)