Phase 17 - Lesson 08

Inference Metrics — TTFT, TPOT, ITL, Goodput, P99

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

Cuatro métricas determinan si un despliegue de inferencia está funcionando. TTFT es el prefill más la cola más la red. TPOT (equivalentemente ITL) es el costo de decodificación por token limitado por memoria. La latencia de extremo a extremo (E2E) es el TTFT más el TPOT multiplicado por la longitud de salida. El rendimiento (throughput) representa los tokens por segundo agregados en toda la flota. Pero la métrica que realmente importa para el producto es el goodput: la fracción de solicitudes que cumplieron con cada SLO simultáneamente. Un alto rendimiento con un bajo goodput significa que se están procesando tokens que nunca llegarán a tiempo a los usuarios. Números de referencia para Llama-3.1-8B-Instruct en TRT-LLM en 2026: TTFT promedio de 162 ms, TPOT promedio de 7.33 ms, E2E promedio de 1,093 ms. Reporte siempre P50, P90, P99; nunca solo el promedio. Y preste atención a la trampa de medición: GenAI-Perf excluye el TTFT del cálculo de ITL, mientras que LLMPerf lo incluye; ambas herramientas difieren en el TPOT para la misma ejecución.

Tipo: Learn Idiomas: Python (stdlib, calculadora básica de percentiles y generador de informes de goodput) Prerrequisitos: Phase 17 · 04 (vLLM Serving Internals) Tiempo: ~60 minutos

Objetivos de Aprendizaje

  • Definir con precisión TTFT, TPOT, ITL, E2E, rendimiento (throughput) y goodput, e identificar el componente que cada uno mide.
  • Explicar por que el promedio es la estadística incorrecta para el servicio de LLM y cómo interpretar P50/P90/P99.
  • Construir una restricción múltiple de SLO (por ejemplo, TTFT<500 ms Y TPOT<15 ms Y E2E<2 s) y calcular el goodput a partir de ella.
  • Nombrar dos herramientas de evaluación (benchmark) que difieren en el TPOT para la misma ejecución y explicar por qué.

El Problema

"Nuestro rendimiento es de 15,000 tokens por segundo". ¿Y qué? Si el 40% de las solicitudes superaron los 2 segundos de extremo a extremo, los usuarios abandonaron la sesión. El rendimiento por sí solo no dice si el producto funciona.

La inferencia tiene múltiples ejes de latencia y cada uno falla de manera diferente. El prefill está limitado por cómputo (compute-bound) y escala con la longitud del prompt. El decode está limitado por memoria (memory-bound) y escala con el tamaño del lote (batch size). El retraso en la cola (queuing delay) es un problema operativo. La red es un problema de distancia física. Necesita métricas distintas para cada uno, necesita percentiles y necesita un único indicador compuesto que responda: "¿recibió el usuario lo que esperaba?": ese indicador es el goodput.

El Concepto

TTFT — tiempo hasta el primer token (time to first token)

TTFT = queue_time + network_request + prefill_time

El prefill domina cuando los prompts son largos. En Llama-3.3-70B FP8 en H100, un prompt de 32k toma ~800 ms de prefill puro. El tiempo de cola (queue time) representa el comportamiento del planificador bajo carga. La solicitud de red es el tiempo de transmisión física, incluyendo TLS. El TTFT es la latencia que experimenta el usuario antes de recibir cualquier respuesta de vuelta.

TPOT / ITL — latencia entre tokens (inter-token latency)

Muchos nombres para la misma cantidad. TPOT (tiempo por token de salida / time per output token), ITL (latencia entre tokens / inter-token latency), latencia de decodificación por token: todo es lo mismo. Es el tiempo transcurrido entre tokens transmitidos consecutivos después del primero.

TPOT = (decode_forward_time + scheduler_overhead) / tokens_produced

En la misma pila Llama-3.3-70B H100 con prefill en fragmentos (chunked prefill), el promedio de TPOT es de ~7 ms. Sin chunked prefill, si ocurre un prefill largo en una secuencia vecina, el TPOT puede dispararse a 50 ms. Monitoree el P99, no el promedio.

Latencia E2E (extremo a extremo)

E2E = TTFT + TPOT * output_tokens + network_response

Para salidas largas (>500 tokens), E2E está dominado por TPOT. Para salidas cortas con prompts largos, E2E está dominado por TTFT. Reporte el E2E condicionado a la longitud de salida.

Rendimiento (throughput)

throughput = total_output_tokens / elapsed_time

Métrica agregada. Indica la eficiencia de la flota. No informa sobre la salud de las solicitudes individuales.

Goodput — la métrica que realmente importa

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

El SLO es una restricción múltiple. Una solicitud es "buena" solo si se cumplen todas las restricciones. El goodput es esa proporción. Un alto rendimiento con un 60% de goodput es un fracaso. El objetivo es un rendimiento menor con un 99% de goodput.

En 2026, el goodput es la métrica utilizada en las entregas de MLPerf Inference v6.0 y en el seguimiento interno de SLA en proveedores de plataformas de IA.

Por qué el promedio es la estadística incorrecta

Las distribuciones de latencia en LLM tienen asimetría a la derecha (right-skewed). Un lote de decodificación con un vecino de prefill largo puede entregar 500 tokens con un TPOT de ~7 ms y 20 tokens con un TPOT de ~60 ms. El TPOT promedio es de 9 ms. El TPOT P99 es de 65 ms. Los usuarios experimentan el P99 con regularidad: por eso abandonan el producto.

Reporte siempre la tríada (P50, P90, P99). Para la experiencia del usuario, el P99 es la métrica que se debe optimizar.

Números de referencia: Llama-3.1-8B-Instruct en TRT-LLM, 2026

  • TTFT promedio: 162 ms
  • TPOT promedio: 7.33 ms
  • E2E promedio: 1,093 ms
  • TPOT P99: varía entre 10 y 25 ms, según la configuración de chunked prefill.

Estos son los puntos de referencia publicados por NVIDIA. Cambian según el tamaño del modelo (un 70B mostraría de 3 a 5x más), el hardware (H100 vs B200 mejora ~3x) y la carga.

La trampa de la medición

Dos de las herramientas de evaluación más utilizadas en 2026 difieren en el cálculo del TPOT para la misma ejecución:

  • NVIDIA GenAI-Perf: excluye el TTFT del cálculo de ITL. El ITL comienza desde el token 2.
  • LLMPerf: incluye el TTFT. El ITL comienza desde el token 1.

Para una solicitud con un TTFT de 500 ms y 100 tokens de salida en un tiempo total de decodificación de 700 ms, GenAI-Perf reporta ITL = 700/99 = 7.07 ms, mientras que LLMPerf reporta ITL = 1200/100 = 12.00 ms. La elección de la herramienta cambia el número obtenido.

Indique siempre la herramienta utilizada. Publique siempre la definición adoptada.

Construcción de un SLO

Un SLO razonable orientado al usuario final para un modelo de chat de 70B en 2026:

  • TTFT P99 <= 800 ms.
  • TPOT P99 <= 25 ms.
  • E2E P99 <= 3 s para salidas <300 tokens.
  • Objetivo de goodput >= 99%.

Los SLO empresariales ajustan el TTFT (200-400 ms) y relajan el E2E. Lo importante es establecerlos, medir los tres aspectos y monitorear el goodput como un único indicador compuesto.

Cómo medir

  • Ejecute tráfico real o simulaciones sintéticas realistas (LLMPerf con --mean-input-tokens 800 --stddev-input-tokens 300 --mean-output-tokens 150).
  • Defina como objetivo 2x la concurrencia de pico para la ejecución de la prueba.
  • Ejecute de 30 a 50 iteraciones, obtenga los percentiles de la muestra combinada.
  • Publique junto con el nombre de la herramienta, su versión, el modelo, el hardware, la concurrencia y la distribución de prompts.

Utilízalo

code/main.py es una calculadora básica de goodput. Genere una distribución de latencia sintética, aplique un SLO y calcule el goodput. También muestra la diferencia de TPOT entre GenAI-Perf y LLMPerf en la misma ejecución.

Entrégalo

Esta lección produce outputs/skill-slo-goodput-gate.md. Dado un volumen de trabajo y un SLO, genera una receta de evaluación lista para CI/CD que valida implementaciones basada en el goodput en lugar de solo en el rendimiento (throughput).

Ejercicios

  1. Ejecute code/main.py. Genere una distribución con un pico del 1% en la cola. ¿Cómo cambia el goodput cuando ajusta el TPOT P99 de 30 ms a 15 ms?
  2. Un proveedor cotiza "15,000 tok/s en Llama 3.3 70B H100". Nombre tres preguntas que haría antes de confiar en esa cifra.
  3. ¿Por qué el chunked prefill protege el TPOT P99 pero no el TPOT promedio?
  4. Construya un SLO de consumidor para un asistente de voz (el primer token se escucha, no se lee). ¿Qué métrica es más visible para el usuario?
  5. Lea el README de LLMPerf y los documentos de GenAI-Perf. Identifique otras tres métricas en las que las herramientas no están de acuerdo.

Términos Clave

Término Lo que la gente dice Lo que realmente significa
TTFT "tiempo hasta el primer token" Cola + red + prefill; dominado por el prefill con prompts largos
TPOT "tiempo por token de salida" Costo de decodificación por token limitado por memoria después del primero
ITL "latencia entre tokens" Lo mismo que TPOT en la mayoría de las herramientas (no en todas; ver GenAI-Perf)
E2E "extremo a extremo" TTFT + TPOT * output_len; más el tiempo de red de respuesta
Rendimiento "tok/s" Eficiencia de la flota; inútil sin percentiles de latencia
Goodput "tasa de cumplimiento de SLO" Fracción de solicitudes que cumplen simultáneamente con cada restricción del SLO
P99 "cola" Latencia del peor caso de 1 en 100; la métrica de experiencia del usuario
Restricción múltiple de SLO "SLO conjunto" Conjunción (AND) de todos los límites de latencia; una solicitud falla si se infringe alguno
GenAI-Perf frente a LLMPerf "la trampa de las herramientas" Las herramientas no coinciden en si el ITL incluye el TTFT

Lecturas Adicionales

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