¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Latencia, tiempo límite y percentiles de un LLM

Después de esta lección: Puedo decir adónde va el tiempo en una llamada a un modelo y fijar un tiempo límite a partir de duraciones grabadas.

Lección de 60 min5 comandosLaboratorio de agente de programación con IA: usa opencode para explicar y corregir código, y comprueba su trabajo

Di adónde va el tiempo

La latencia es el tiempo entre una petición y su respuesta. En una llamada a un modelo son dos números: la espera del primer token y la del último. Importa porque los usuarios juzgan una función por sus peores momentos, no por su media.

Una función que responde en un segundo a diecinueve usuarios y en ocho al vigésimo le parece rota a ese vigésimo.

Al final de esta lección

Nota

Puedo decir adónde va el tiempo en una llamada a un modelo y fijar un tiempo límite a partir de duraciones grabadas.

Palabras clave

PalabraQué significa
Latenciael tiempo que tarda una petición en recibir respuesta
Primer tokenel primer trozo de una respuesta en flujo
Percentilel valor bajo el cual cae una parte de las peticiones
Colalas pocas peticiones más lentas
Tiempo límitela espera más larga antes de rendirse
Flujoenviar una respuesta por trozos, a medida que se genera

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Los percentiles muestran la cola

Una media esconde las peticiones lentas. Ordena las duraciones en su lugar. La mediana (p50) es la del medio. El p95 es el valor que el 95 por ciento de las peticiones no supera. Las pocas por encima forman la cola.

Usa el rango más cercano. Con n valores, toma el que está en el lugar p por ciento de n, redondeado hacia arriba, contando desde 1. No hay interpolación, así que todas las herramientas dan lo mismo.

Ejemplo resuelto: veinte duraciones

MedidaLugar entre 20Valor
p5010.º900 ms
p9018.º2300 ms
p9519.º4200 ms
p9920.º7800 ms
Medianinguno1493 ms

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Fija un tiempo límite con los datos

Un tiempo límite es la espera más larga que aceptas. Si es muy corto, cortas respuestas buenas. Si es muy largo, una llamada atascada retiene a un usuario y una conexión. Toma un percentil alto como el p95, añade un margen y redondea.

El flujo esconde la espera: el usuario lee el primer token a unos cientos de milisegundos mientras llega el resto. Mide por separado el primer token y la respuesta completa, y dale a cada uno su límite.

Un error frecuente

Advertencia

Mucha gente fija el tiempo límite con la media, porque es un solo número fácil. Con la media de aquí, 1493 ms, se cortarían 4 de las 20 peticiones. Fíjalo con un percentil alto de duraciones grabadas y comprueba cuántas cortaría.

Escribe el informe de latencia, parte 1

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' '// Veinte duraciones grabadas e inventadas, en milisegundos: la respuesta completa y el primer token.' 'const TOTAL = [820, 910, 760, 1500, 880, 940, 830, 4200, 900, 870, 1020, 790, 850, 2300, 910, 880, 960, 840, 7800, 900];' 'const FIRST = [210, 240, 200, 300, 220, 250, 215, 500, 230, 225, 260, 205, 222, 380, 240, 228, 255, 218, 900, 232];' > latency4.js"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Escribe el informe de latencia, parte 2

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' '// Rango más cercano: se ordena y se toma el valor en el lugar techo(p por ciento de n).' 'function percentile(values, p) {' '  const sorted = values.slice().sort(function (a, b) { return a - b; });' '  const rank = Math.ceil(p * sorted.length / 100);' '  return sorted[rank - 1];' '}' 'function average(values) {' '  return Math.round(values.reduce(function (sum, v) { return sum + v; }, 0) / values.length);' '}' >> latency4.js"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Escribe el informe de latencia, parte 3

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' '// Un tiempo límite: el percentil 95 más un 20 por ciento de margen, redondeado a 100 ms hacia arriba.' 'function timeoutFor(values) {' '  return Math.ceil(percentile(values, 95) * 120 / 100 / 100) * 100;' '}' 'function over(values, limit) {' '  return values.filter(function (v) { return v > limit; }).length;' '}' >> latency4.js"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Escribe el informe de latencia, parte 4

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const limit = timeoutFor(TOTAL);' 'console.log(\"respuesta completa: p50 \" + percentile(TOTAL, 50) + \", p90 \" + percentile(TOTAL, 90) + \", p95 \" + percentile(TOTAL, 95) + \", p99 \" + percentile(TOTAL, 99) + \" ms\");' 'console.log(\"media \" + average(TOTAL) + \" ms, la más lenta \" + Math.max(...TOTAL) + \" ms\");' 'console.log(\"primer token: p50 \" + percentile(FIRST, 50) + \", p95 \" + percentile(FIRST, 95) + \" ms\");' 'console.log(\"tiempo límite \" + limit + \" ms corta \" + over(TOTAL, limit) + \" de \" + TOTAL.length);' 'console.log(\"un tiempo límite de 2000 ms cortaría \" + over(TOTAL, 2000) + \" de \" + TOTAL.length);' >> latency4.js"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Ejecuta el informe

Comando
docker exec -w /home/node/project agent node latency4.js

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Estas duraciones están grabadas

Nada aquí hace lenta una llamada a propósito. Las veinte duraciones están grabadas y son inventadas, así que todos los estudiantes obtienen los mismos números. Un sistema real las lee de sus trazas, como en la primera lección.

El Run no llama a ningún modelo: no necesita ayudante y no tiene nada que sustituir.

Salida del Run

LíneaQué muestra
respuesta completa: p50 900, p90 2300, p95 4200, p99 7800 msLa forma de la respuesta completa
media 1493 ms, la más lenta 7800 msLa media queda entre los dos grupos
primer token: p50 230, p95 500 msEl flujo enseña un primer token mucho antes
tiempo límite 5100 ms corta 1 de 20p95 más un 20 por ciento, redondeado a 100
un tiempo límite de 2000 ms cortaría 3 de 20Una suposición corta respuestas buenas

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Sobre este laboratorio y su código: Laboratorio de agente de programación con IA: usa opencode para explicar y corregir código, y comprueba su trabajo

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.