Phase 17 - Lesson 08

Métricas de Inferência — TTFT, TPOT, ITL, Goodput, P99

This lesson includes a graded coding exercise that runs in your browser, unlocked with lifetime access.

Quatro métricas decidem se uma implantação de inferência está funcionando. TTFT é o prefill mais fila mais rede. TPOT (equivalentemente ITL) é o custo de decodificação por token limitado pela memória. A latência fim a fim (E2E) é o TTFT mais o TPOT multiplicado pelo comprimento da saída. O throughput é composto de tokens por segundo agregados em toda a frota. Mas a métrica que realmente importa para o produto é o goodput — a fração de solicitações que atendeu a todos os SLOs simultaneamente. Throughput alto com goodput baixo significa que você está processando tokens que nunca chegarão a tempo aos usuários. Números de referência para Llama-3.1-8B-Instruct no TRT-LLM em 2026: TTFT médio de 162 ms, TPOT médio de 7.33 ms, E2E médio de 1.093 ms. Sempre reporte P50, P90, P99 — nunca apenas a média. E cuidado com a armadilha de medição: o GenAI-Perf exclui o TTFT do cálculo de ITL, enquanto o LLMPerf o inclui; as duas ferramentas discordam sobre o TPOT para a mesma execução.

Tipo: Learn Idiomas: Python (stdlib, calculadora de percentis simples e gerador de relatórios de goodput) Pré-requisitos: Phase 17 · 04 (vLLM Serving Internals) Tempo: ~60 minutos

Objetivos de Aprendizado

  • Definir TTFT, TPOT, ITL, E2E, throughput e goodput com precisão e nomear o componente que cada um mede.
  • Explicar por que a média é a estatística errada para o serviço de LLM e como ler P50/P90/P99.
  • Construir uma restrição múltipla de SLO (ex.: TTFT<500 ms E TPOT<15 ms E E2E<2 s) e calcular o goodput com base nela.
  • Nomear duas ferramentas de benchmark que discordam sobre o TPOT para a mesma execução e explicar o porquê.

O Problema

"Nosso throughput é de 15.000 tokens por segundo." E daí? Se 40% das solicitações ultrapassaram 2 segundos de latência fim a fim, os usuários abandonaram a sessão. O throughput sozinho não diz se o produto funciona.

A inferência possui múltiplos eixos de latência e cada um falha de forma diferente. O prefill é limitado por computação (compute-bound) e escala com o comprimento do prompt. A decodificação (decode) é limitada por memória (memory-bound) e escala com o tamanho do lote (batch size). O atraso na fila (queuing delay) é um problemático operacional. A rede é um problema de distância física. Você precisa de métricas distintas para cada um, precisa de percentis e precisa de um único indicador composto que responda: "o usuário recebeu o que esperava?" — esse indicador é o goodput.

O Conceito

TTFT — tempo para o primeiro token (time to first token)

TTFT = queue_time + network_request + prefill_time

O prefill domina quando os prompts são longos. No Llama-3.3-70B FP8 em H100, um prompt de 32k consome ~800 ms de puro prefill. O tempo de fila (queue time) representa o comportamento do agendador sob carga. A solicitação de rede é o tempo de tráfego físico, incluindo TLS. O TTFT é a latência que o usuário experimenta antes que qualquer resposta comece a ser transmitida.

TPOT / ITL — latência entre tokens (inter-token latency)

Muitos nomes para a mesma grandeza. TPOT (tempo por token de saída / time per output token), ITL (latência entre tokens / inter-token latency), latência de decodificação por token — tudo é a mesma coisa. Refere-se ao tempo decorrido entre tokens consecutivos transmitidos após o primeiro.

TPOT = (decode_forward_time + scheduler_overhead) / tokens_produced

Na mesma stack do Llama-3.3-70B H100 com prefill em pedaços (chunked prefill), a média do TPOT é de ~7 ms. Sem o chunked prefill, se houver um prefill longo ocorrendo em uma sequência vizinha, o TPOT pode saltar para 50 ms. Monitore o P99, não a média.

Latência E2E (fim a fim)

E2E = TTFT + TPOT * output_tokens + network_response

Para saídas longas (>500 tokens), o E2E é dominado pelo TPOT. Para saídas curtas com prompts longos, o E2E é dominado pelo TTFT. Reporte o E2E condicionado ao comprimento da saída.

Throughput (vazão)

throughput = total_output_tokens / elapsed_time

Métrica agregada. Informa a eficiência da frota. Não indica a saúde de solicitações individuais.

Goodput — a métrica que realmente importa

goodput = fraction of requests meeting (TTFT <= a) AND (TPOT <= b) AND (E2E <= c)

O SLO é uma restrição múltipla. Uma solicitação é considerada "boa" apenas se todas as restrições forem atendidas. O goodput é essa proporção. Ter um throughput alto com 60% de goodput é uma falha. Um throughput menor com 99% de goodput é o objetivo ideal.

Em 2026, o goodput é a métrica padrão utilizada nos envios do MLPerf Inference v6.0 e no monitoramento de SLA interno em provedores de plataformas de IA.

Por que a média é a estatística errada

As distribuições de latência de LLM possuem assimetria à direita (são right-skewed). Um lote de decodificação com uma sequência vizinha fazendo prefill longo pode entregar 500 tokens com TPOT ~7 ms e 20 tokens com TPOT ~60 ms. A média do TPOT será de 9 ms, enquanto o P99 do TPOT será de 65 ms. Os usuários encontram o P99 regularmente — e é por isso que desistem do produto.

Sempre reporte a tríade (P50, P90, P99). Para a experiência do usuário, o P99 é a métrica a ser otimizada.

Números de referência — Llama-3.1-8B-Instruct no TRT-LLM, 2026

  • TTFT médio: 162 ms
  • TPOT médio: 7.33 ms
  • E2E médio: 1.093 ms
  • P99 do TPOT: varia de 10 a 25 ms, dependendo da configuração de chunked prefill.

Esses são os pontos de referência publicados pela NVIDIA. Eles mudam conforme o tamanho do modelo (um 70B mostraria de 3 a 5x mais), o hardware (H100 vs B200 melhora em ~3x) e a carga.

A armadilha da medição

Duas das ferramentas de benchmark mais utilizadas em 2026 discordam sobre o cálculo do TPOT para a mesma execução:

  • NVIDIA GenAI-Perf: exclui o TTFT do cálculo de ITL. O ITL começa a partir do token 2.
  • LLMPerf: inclui o TTFT. O ITL começa a partir do token 1.

Para uma solicitação com TTFT de 500 ms e 100 tokens de saída em um tempo total de decodificação de 700 ms, o GenAI-Perf relata ITL = 700/99 = 7.07 ms, enquanto o LLMPerf relata ITL = 1200/100 = 12.00 ms. A escolha da ferramenta altera o número obtido.

Sempre especifique qual ferramenta foi utilizada. Sempre publique a definição adotada.

Construindo um SLO

Um SLO razoável para usuários finais de um modelo de chat de 70B em 2026:

  • TTFT P99 <= 800 ms.
  • TPOT P99 <= 25 ms.
  • E2E P99 <= 3 s para saídas <300 tokens.
  • Meta de goodput >= 99%.

SLOs corporativos tornam o TTFT mais rígido (200-400 ms) e afrouxam o E2E. O ponto crucial é defini-los, medir os três aspectos e monitorar o goodput como um único indicador composto.

Como medir

  • Execute tráfego real ou simulação sintética realista (LLMPerf com --mean-input-tokens 800 --stddev-input-tokens 300 --mean-output-tokens 150).
  • Defina como alvo 2x a concorrência de pico para a execução do benchmark.
  • Execute de 30 a 50 iterações e tire os percentis da amostra combinada.
  • Publique junto com o nome e versão da ferramenta, modelo, hardware, concorrência e distribuição de prompts.

Use-o

O code/main.py é uma calculadora simples de goodput. Gere uma distribuição de latência sintética, aplique um SLO e calcule o goodput. Ele também exibe a diferença de TPOT entre GenAI-Perf e LLMPerf na mesma execução.

Entregue-o

Esta lição produz outputs/skill-slo-goodput-gate.md. Dado um volume de trabalho e um SLO, ele gera uma receita de benchmark pronta para CI/CD que valida implantações com base no goodput, e não apenas no throughput.

Exercícios

  1. Execute code/main.py. Gere uma distribuição com um pico de 1% na cauda. Como o goodput se altera quando você restringe o P99 do TPOT de 30 ms para 15 ms?
  2. Um fornecedor anuncia "15.000 tok/s no Llama 3.3 70B H100". Liste três perguntas que você faria antes de confiar nesse número.
  3. Por que o chunked prefill protege o P99 do TPOT, mas não melhora a média do TPOT?
  4. Construa um SLO de consumidor para um assistente de voz (onde o primeiro token é ouvido, e não lido). Qual métrica é mais perceptível para o usuário?
  5. Leia o README do LLMPerf e a documentação do GenAI-Perf. Identifique três outras métricas onde as duas ferramentas divergem.

Termos-Chave

Termo O que as pessoas dizem O que realmente significa
TTFT "tempo para o primeiro token" Fila + rede + prefill; dominado pelo prefill em prompts longos
TPOT "tempo por token de saída" Custo de decodificação por token limitado pela memória após o primeiro token
ITL "latência entre tokens" O mesmo que TPOT na maioria das ferramentas (nem todas — veja GenAI-Perf)
E2E "fim a fim" TTFT + TPOT * output_len; acrescido de tempo de rede no retorno
Throughput "tok/s" Eficiência da frota; inútil sem os percentis de latência
Goodput "taxa de conformidade com SLO" Fração de solicitações que atendem a todas as restrições do SLO simultaneamente
P99 "cauda" Pior caso de latência (1 em 100); a métrica ideal para avaliar a experiência do usuário
Restrição múltipla de SLO "SLO conjunto" Operação E (AND) de todos os limites de latência; a solicitação falha se algum for violado
GenAI-Perf vs LLMPerf "a armadilha das ferramentas" As ferramentas divergem sobre a inclusão ou não do TTFT no ITL

Leituras Adicionais

0 lifetime access. Curriculum based on AI Engineering from Scratch by Rohit Ghumare (MIT, used under attribution).