A expressão “tokens por segundo” exige atenção especial. Ela nomeia uma unidade, não uma métrica completa. Ainda é preciso saber quais tokens foram contabilizados e qual intervalo de tempo foi usado.
O que cada métrica mede
Latência de inferência
Latência de inferência é o tempo decorrido de uma solicitação. Para uma resposta gerada, a “latência de ponta a ponta” normalmente vai do envio ou recebimento da solicitação até o recebimento da saída final.
Ela responde: Quanto tempo falta para esta solicitação terminar?
Esse limite não é universal. Uma medição no cliente pode incluir roteamento, transferência pela rede, enfileiramento e processamento da resposta. Um servidor de inferência pode iniciar o relógio depois de algumas dessas etapas. Um benchmark que informa apenas “latência” não forneceu dados suficientes para reproduzir o número.
A latência também depende diretamente do comprimento da saída. Uma resposta concisa e uma resposta longa podem ter o mesmo TTFT e a mesma velocidade de geração, mas a resposta longa leva mais tempo para terminar.
Tempo até o primeiro token
Tempo até o primeiro token, ou TTFT, vai do limite da solicitação até o primeiro token de saída não vazio em uma resposta transmitida.
Ele responde: Quanto tempo falta para a resposta começar a aparecer?
O TTFT normalmente inclui enfileiramento, processamento da entrada, o trabalho de prefill do modelo sobre o prompt, a geração do primeiro token e qualquer tempo de rede que esteja dentro do limite escolhido. Ele é parte da latência de ponta a ponta, não um nome alternativo para ela.
Um TTFT baixo faz uma interface parecer responsiva. Por si só, ele não diz nada sobre a regularidade com que o restante da resposta chegará nem sobre quando ela terminará.
Tokens por segundo
Tokens por segundo é a quantidade de tokens de saída dividida pelo tempo decorrido. Em comparações de produtos, isso geralmente significa a velocidade de geração de uma solicitação após o primeiro token.
Ele responde: Com que rapidez o texto gerado chega depois que a geração começa?
Para uma resposta com (N) tokens de saída, existem (N-1) intervalos entre o primeiro e o último token. Se esses intervalos levam (G) segundos, a taxa após o primeiro token é:
[\n\text{taxa de geração por solicitação} = \frac{N-1}{G}\n]
Essa é o recíproco do tempo médio por intervalo entre tokens de saída quando cada evento medido contém um token. APIs de streaming reais podem entregar blocos contendo vários tokens, portanto o cliente deve contar tokens, em vez de presumir um token por evento.
Algumas ferramentas, em vez disso, dividem todos os tokens de saída pela latência completa de ponta a ponta da solicitação. Outras combinam os tokens de todas as solicitações simultâneas. Essas escolhas produzem números diferentes, embora todos possam ser rotulados como TPS ou tokens/s.
Throughput de inferência
Throughput de inferência é a quantidade total de trabalho que um sistema conclui por unidade de tempo sob uma carga de trabalho definida. Ele pode ser medido em tokens de saída por segundo, tokens totais por segundo, solicitações por segundo, amostras por segundo ou outra unidade adequada à carga de trabalho.
Ele responde: Que quantidade de carga o sistema consegue suportar?
Throughput é uma propriedade agregada. Ele exige um intervalo de teste e um padrão de carga. Concorrência, taxa de chegada das solicitações, comprimentos dos prompts e das respostas, batching, quantidade de réplicas e tratamento de solicitações com falha podem alterá-lo.
Throughput de solicitações e throughput de tokens não são intercambiáveis. Um servidor pode concluir muitas solicitações curtas ou menos solicitações longas enquanto produz a mesma quantidade de tokens de saída por segundo.
A distinção real
| Metric | Clock stops at | Typical scope | Typical unit | The question it answers |
|---|---|---|---|---|
| Latency | Final response output | One request | ms or s/request | When is this request finished? |
| TTFT | First content token | One streamed request | ms or s/request | When does the answer begin? |
| Tokens per second | Depends on the stated formula | One request or the whole system | output tokens/s | How fast are tokens arriving, and for whom? |
| Throughput | End of a test interval | System or deployment | tokens/s, requests/s, or samples/s | How much work is completed under load? |
Três perguntas esclarecem praticamente qualquer resultado informado:
- O que é contabilizado? Tokens de saída, todos os tokens, solicitações concluídas ou amostras?
- Onde o relógio começa e termina? No envio pelo cliente, no recebimento pelo servidor, no primeiro token, no token final ou em limites fixos do teste?
- Qual é o escopo? Uma solicitação, um usuário, uma réplica ou toda a implantação sob carga simultânea?
Se um benchmark não conseguir responder às três perguntas, seu número não está pronto para comparação.
Um exemplo prático
Imagine uma solicitação que retorna 81 tokens de saída:
- A solicitação é enviada no instante 0,0 segundo.
- O primeiro token chega em 0,8 segundo.
- O token final chega em 2,8 segundos.
Seu TTFT é de 0,8 segundo. Sua latência de ponta a ponta é de 2,8 segundos. A geração após o primeiro token abrange 2,0 segundos e contém 80 intervalos entre tokens, portanto sua taxa após o primeiro token é de 40 tokens por segundo.
Se uma ferramenta contabilizar todos os 81 tokens de saída e dividir pela latência total de 2,8 segundos, ela informará aproximadamente 29 tokens por segundo. Isso não é uma discordância matemática. É um limite de relógio e um numerador diferentes.
Agora coloque muitas solicitações em um servidor. Durante uma janela de teste de 10 segundos, o servidor gera 3.000 tokens de saída e conclui 50 solicitações:
- Throughput de tokens de saída: (3{,}000 / 10 = 300) tokens por segundo
- Throughput de solicitações: (50 / 10 = 5) solicitações por segundo
Os 300 tokens por segundo do servidor representam a saída combinada entre as solicitações ativas. Um usuário individual ainda pode receber saída a 40 tokens por segundo, ou menos, se a carga adicional aumentar o enfileiramento e os atrasos de decodificação.
Quando cada métrica importa
Para uma interface de chat, um assistente de programação ou outra interação transmitida, o TTFT descreve a pausa inicial. A taxa de geração por solicitação, ou seu inverso, o tempo por token de saída, descreve o ritmo após essa pausa. A latência de ponta a ponta importa quando o usuário ou outro programa precisa da resposta completa antes de continuar.
Para um trabalho em lote, o throughput geralmente importa mais que o TTFT. O trabalho se preocupa com a taxa total de conclusão, desde que as falhas e a qualidade da saída permaneçam aceitáveis.
Para o planejamento de capacidade, use throughput junto com um objetivo de latência. Aumentar a concorrência geralmente melhora o throughput agregado no início, pois o hardware realiza mais trabalho em paralelo. A mesma concorrência pode aumentar o enfileiramento e tornar cada usuário mais lento. Depois da saturação, o throughput pode estabilizar ou cair enquanto a latência continua aumentando.
Para uma API sem streaming, o TTFT pode não ser observável no cliente, pois a resposta só é entregue quando está completa. O servidor ainda pode medir etapas internas, mas o desempenho visível para o cliente é a latência de ponta a ponta.
O que as pessoas confundem e por quê
TTFT baixo não garante latência baixa
Uma resposta pode começar rapidamente e depois ser gerada lentamente. O TTFT captura apenas o primeiro marco. A latência total também inclui o tempo de geração restante.
Sob uma definição explícita após o primeiro token, a relação é:
[\n\text{latência de ponta a ponta} = \text{TTFT} + (N-1)\times\text{tempo médio por intervalo entre tokens de saída}\n]
As implementações usam diferentes convenções de contagem, portanto verifique a fórmula do benchmark antes de reconstruir uma métrica a partir de outra.
Tokens por segundo podem ser throughput
“Tokens por segundo” às vezes significa a velocidade de geração de um usuário. Também pode ser a unidade do throughput agregado de tokens de saída. O rótulo, por si só, não permite distingui-los.
Procure qualificadores como por solicitação, por usuário, por fluxo, agregado ou do sistema. Se nenhum aparecer, examine a fórmula e a configuração do teste.
Throughput alto não garante solicitações rápidas
Um servidor pode agrupar muitas solicitações para produzir mais tokens totais por segundo, enquanto cada solicitação espera mais tempo ou recebe tokens com menor frequência. Por isso, testes sérios de serving informam o throughput junto com percentis de latência ou calculam o goodput: trabalho concluído enquanto uma meta de serviço definida é atendida.
Cargas de trabalho diferentes produzem resultados diferentes
O TTFT muda conforme o comprimento do prompt e o enfileiramento. A latência de ponta a ponta muda conforme o comprimento da resposta. O throughput muda conforme a concorrência, o padrão de chegada, o batching e a alocação de hardware. As taxas de tokens também dependem do tokenizador usado para contar a saída.
Compare sistemas apenas com o mesmo comportamento do modelo, as mesmas distribuições de prompts e saídas, o mesmo padrão de carga, modo de streaming, configurações de amostragem, tokenizador, limite de medição e critérios de sucesso. Uma única solicitação ociosa testa algo diferente de um servidor saturado.
As médias ocultam as solicitações de que os usuários se lembram
Um TTFT ou uma latência média pode parecer saudável enquanto uma pequena parcela das solicitações espera muito mais tempo na fila. Informe uma distribuição, incluindo percentis de cauda relevantes, e inclua o número de observações. Para throughput, informe erros e solicitações rejeitadas, em vez de contar apenas o trabalho bem-sucedido sem deixar isso claro.
Como ler um benchmark de inferência
Antes de confiar em um gráfico ou em uma afirmação de um model card, verifique se ele informa:
- se tokens por segundo é por solicitação ou agregado;
- se contabiliza apenas tokens de saída ou tokens de entrada mais tokens de saída;
- se o TTFT ou o primeiro token está incluído no cálculo da taxa de tokens;
- se a latência é medida no cliente, no servidor ou apenas no modelo;
- as distribuições de comprimento dos prompts e das saídas;
- a concorrência e o padrão de chegada das solicitações;
- o aquecimento, a duração do teste e o tratamento dos limites de início e fim;
- a latência média e de cauda, não apenas uma única média;
- os critérios para solicitações bem-sucedidas e erros;
- o modelo, a precisão, o hardware, o mecanismo e a quantidade de réplicas.
A melhor métrica não é uma dessas quatro isoladamente. É a métrica que corresponde ao objetivo visível para o usuário ou operacional, medida sob uma carga realista com todos os limites explicitados.
Próximos passos
Leia O que é latência de inferência? para conhecer os limites de medição de uma solicitação, O que é tempo até o primeiro token? para entender o atraso inicial de uma resposta transmitida, O que são tokens por segundo? para conhecer as fórmulas de taxa de tokens e O que é throughput de inferência? para entender a capacidade do sistema sob carga.