Chiosa
ES
SYSTEMS · learning path

Medir el cuello de botella antes de trasladar trabajo del servicio

8 min3 papersbeginner
Actualizado
(a) Building KV caches for every segment, (b) deferring computation under temporal dependencies, and (c) adaptive precomputation in StreamAhead.
(a) Building KV caches for every segment, (b) deferring computation under temporal dependencies, and (c) adaptive precomputation in StreamAhead.Fig. 1 · StreamAhead adjusts video processing before questions arrive · Haoyang Fan et al. · CC BY 4.0

Un atajo en el servicio puede adelantar trabajo a antes de una pregunta, trasladarlo a otro procesador o guardarlo en una caché. Cada cambio afecta una demora o un límite de capacidad distintos. Un resultado guardado puede evitar cálculos, pero aun así requiere tiempo para recuperarlo.

El primer paso útil es definir el objetivo del servicio y medir el costo que el cambio desplaza bajo la carga de trabajo prevista. Estos estudios ilustran esa decisión con video en continuo, tokenización para llamadas repetidas al modelo y recuperación remota de estados guardados del modelo.

Qué comprenderás

  • ¿Cómo puede un servicio de video decidir cuánto trabajo completar antes de que llegue una pregunta?

  • ¿Qué permite establecer un resultado sobre la tasa de solicitudes del frontend cuando los trabajadores del modelo son simulados?

  • ¿Qué costos hay que incluir al comparar la carga de estados guardados del modelo con su recálculo?

El costo sigue al trabajo

Imaginemos un servicio que debe observar un video continuo y responder una pregunta sobre él en cuanto llega. Procesar cada fotograma en profundidad por adelantado puede dejar resultados útiles listos para responder, pero ese trabajo también compite con el video que sigue llegando.

Si el procesamiento se retrasa, los fotogramas más recientes pueden no estar disponibles. La pregunta práctica, por tanto, abarca dos demoras a la vez: si el servicio sigue el ritmo de los fotogramas entrantes y cuánto espera la pregunta hasta recibir el primer texto de respuesta.

Una llamada repetida al modelo plantea una versión distinta del problema. Un asistente puede volver a enviar una conversación larga después de añadir un turno nuevo breve.

Una caché de prefijos puede reutilizar cálculos anteriores del modelo, pero el frontend aún debe convertir el texto entrante en identificadores de tokens —las piezas numeradas que lee el modelo— antes de consultar esa caché.

Trasladar este procesamiento de texto a una GPU apunta a la capacidad del frontend para aceptar solicitudes, aunque los cálculos del modelo guardados en caché ya estén disponibles.

Una tercera opción consiste en guardar resultados anteriores del modelo en un almacén remoto y cargarlos cuando se repite una instrucción. Estos resultados guardados, llamados caché de clave-valor, solo evitan recalcular si recuperarlos cuesta menos que repetir el trabajo para obtener el resultado que se está midiendo.

Los tres casos plantean la misma pregunta operativa: al trasladar trabajo en el tiempo, entre procesadores o al almacenamiento, ¿dónde aparece el nuevo costo y qué objetivo del servicio permite saber si el cambio ayudó?

Cómo continúa la lección

  • Preparar el video con el tiempo disponible

  • Medir cuántas solicitudes acepta el frontend

  • Comparar la caché remota con recalcular

  • Probar el objetivo con la carga prevista