Metricas de inferência TTFT, TPOT, ITL, Goodput, P99
Type: Learn
Languages: Python (stdlib, toy percentile calculator and goodput reporter)
Prerequisites: Phase 17 · 04 (Serving Engine Internals)
Time: ~60 minutes
Objetivos de aprendizagem
- Defina com precisão o TTFT, o TPOT, o ITL, o E2E, o rendimento e o goodput e nome o componente que cada uma mede.
- Explique por que a média é a estatística errada para o serviço de LLM e como ler P50/P90/P99.
- Construa uma restrição múltipla SLO (por exemplo, TTFT < 500 ms E TPOT < 15 ms E E2E < 2 s) e computa o goodput contra ela.
- Cite duas ferramentas de referência que discordam sobre o TPOT para a mesma função e explique o porquê.
O problema
"Nossa capacidade de transferência é de 15.000 tokens por segundo". Então, o que? Se 40% das solicitações passarem por 2 segundos de ponta a ponta, os usuários abandonam a sessão.
A inferência tem múltiplos eixos de latência e cada um falha de forma diferente. O preenchimento é computacional e as escalas têm um comprimento rápido. O decodificação é baseado na memória e as escalas são do tamanho do lote. O atraso na fila é um problema operacional. A rede é um problema de distância física. Precisamos de métricas distintas para cada uma, e precisamos de percentilhas, e precisamos de um único composto que diga "o usuário obteve o que esperava"
O conceito
TTFT tempo para o primeiro token
TTFT = queue_time + network_request + prefill_time
Prefill domina quando os pedidos são longos. No Llama-3.3-70B FP8 no H100, um pedido de 32k leva ~800 ms de prefill puro. O tempo de fila é o comportamento do programador sob carga. A solicitação de rede é o tempo de fio, incluindo TLS. TTFT é a latência que o usuário vê antes de qualquer coisa voltar a fluir.
TPOT / ITL Latência entre tokens
Muitos nomes para uma quantidade.TPOT(tempo por token de saída), ITL(latencia entre tokens), decode latency per tokenÉ o tempo entre os tokens transmitidos consecutivos após o primeiro.
TPOT = (decode_forward_time + scheduler_overhead) / tokens_produced
Na mesma pilha Llama-3.3-70B H100 com preenchimento em pedaços, TPOT significa ~ 7 ms. Sem preenchimento em pedaços, durante um longo preenchimento em uma sequência vizinha, TPOT pode aumentar para 50 ms. Observe P99, não significa.
Latência E2E
E2E = TTFT + TPOT * output_tokens + network_response
Para saídas longas (> 500 tokens), o E2E é dominado pela TPOT. Para saídas curtas com pedidos longos, o E2E é dominado pela TTFT. Relata o E2E condicionado pela extensão da saída.
Transmissão
throughput = total_output_tokens / elapsed_time
A métrica agregada diz-te a eficiência da frota, não a saúde individual.
O que é que você realmente quer saber?
goodput = fraction of requests meeting (TTFT <= a) AND (TPOT <= b) AND (E2E <= c)
O SLO é uma restrição múltipla. Um pedido é "bom" apenas se cada restrição for cumprida. Goodput é a participação.
Em 2026, o goodput é a métrica usada nas submissões MLPerf Inference v6.0 e no rastreamento interno de SLA nos provedores de plataforma de IA.
Por que a média é a estatística errada
As distribuições de latência LLM são distorcidas à direita. Um lote de decodificação com um vizinho de pre-preenchimento longo pode enviar 500 tokens com TPOT ~ 7 ms e 20 tokens com TPOT ~ 60 ms.
Sempre informe o triplo (P50, P90, P99). Para a experiência do usuário, P99 é o que você otimiza.
Números de referência Llama-3.1-8B-Instrução sobre TRT-LLM, 2026
- TTFT médio: 162 ms
- TPOT médio: 7,33 ms
- média E2E: 1.093 ms
- P99 TPOT: varia entre 10 e 25 ms, dependendo da configuração de preenchimento em pedaços.
Estes são os pontos de referência publicados da NVIDIA. Eles mudam com o tamanho do modelo (70B mostraria 3-5x), hardware (H100 vs. B200 ~ 3x), e carga.
A armadilha de medição
Duas das ferramentas de referência mais utilizadas para 2026 discordam sobre o TPOT para a mesma execução:
- NVIDIA GenAI-PerfO ITL começa com o token 2.
- LLMPerfO ITL começa com o token 1.
Para uma solicitação com TTFT 500 ms e 100 tokens de saída em 700 ms total de decodificação, GenAI-Perf relata ITL = 700/99 = 7.07 ms, relatórios da LLMPerf ITL = 1200/100 = 12.00 msA escolha da ferramenta muda o número.
Sempre indicar qual ferramenta.
Construção de um SLO
Um SLO razoável para o consumidor para um modelo de chat 70B em 2026:
- TTFT P99 <= 800 ms.
- TPOT P99 <= 25 ms.
- E2E P99 <= 3 s para saídas de < 300 tokens.
- Objetivo de produção de energia >= 99%.
Os SLOs Enterprise apertam o TTFT (200-400 ms) e afrouxam o E2E. O ponto é anotá-los, medir os três e rastrear o goodput como um único composto.
Como medir
- Execução de tráfego real ou realista sintético (LLMPerf com
--mean-input-tokens 800 --stddev-input-tokens 300 --mean-output-tokens 150)). - Objectivo 2x de simultaneidade máxima para a corrida de referência.
- Execute 30 a 50 iterações, pegue percentilhas da amostra combinada.
- Publicação com nome da ferramenta, versão da ferramenta, modelo, hardware, concurência, distribuição rápida.
Usá-lo
code/main.pyÉ uma calculadora de bom desempenho de brinquedo. Gerar uma distribuição de latência sintética, aplicar um SLO e calcular o bom desempenho. Também mostra a diferença GenAI-Perf vs LLMPerf TPOT no mesmo rastro.
Envia-o
Esta lição produzoutputs/skill-slo-goodput-gate.md- Tendo em conta a carga de trabalho e o SLO, produz uma receita de referência preta para a CI/CD que os portões utilizam em vez de emissão.
Exercícios
- Corra .
code/main.pyComo o goodput muda quando tens P99 TPOT de 30 ms para 15 ms? - Um vendedor cita "15.000 tok/s em Llama 3.3 70B H100". Cite três perguntas a fazer antes de confiar nele.
- Por que o preenchimento em pedaços protege o P99 TPOT mas não o TPOT?
- Construa um SLO de consumo para um assistente de voz (o primeiro token é ouvido, não lido). Qual métrica é mais visível ao usuário?
- Leia o documento LLMPerf README e o documento GenAI-Perf. Identifique outras três métricas em que as ferramentas discordam.
Termos-chave
| Term | What people say | What it actually means |
|---|---|---|
| TTFT | "time to first token" | Queue + network + prefill; dominated by prefill at long prompts |
| TPOT | "time per output token" | Memory-bound decode cost per token after first |
| ITL | "inter-token latency" | Same as TPOT in most tools (not all — see GenAI-Perf) |
| E2E | "end to end" | TTFT + TPOT * output_len; response-side network on top |
| Throughput | "tok/s" | Fleet efficiency; useless without latency percentiles |
| Goodput | "SLO-met rate" | Fraction of requests meeting every SLO constraint simultaneously |
| P99 | "tail" | 1-in-100 worst-case latency; the user experience metric |
| SLO multi-constraint | "the joint" | AND of all three latency bounds; a request fails if any one is violated |
| GenAI-Perf vs LLMPerf | "the tool trap" | Tools disagree on whether ITL includes TTFT |
Mais leitura
- NVIDIA NIM — LLM Benchmarking Metrics definição canónica do TTFT, ITL, TPOT.
- Anyscale — LLM Serving Benchmarking Metrics definições alternativas e receita de medição.
- BentoML — LLM Inference Metrics medição aplicada em implantações reais.
- LLMPerf Referência de código aberto baseada em raios.
- GenAI-Perf Ferramenta de referência da NVIDIA.
- MLPerf Inference o índice de referência baseado em bons resultados aceito pela indústria.
This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.
Browse the complete course catalog or open this lesson on GitHub.