El procesamiento por lotes de IA en casa mejora el rendimiento total al combinar trabajos compatibles, pero cada solicitud puede esperar más o compartir iteraciones más lentas con otros usuarios.
Una solicitud individual puede entrar de inmediato en un acelerador inactivo, mientras que un servidor familiar suele recibir chats simultáneos, solicitudes sobre documentos, peticiones de voz y trabajos en segundo plano. El entorno de ejecución puede retener brevemente una solicitud para formar un lote, añadir nuevas secuencias entre iteraciones de decodificación o dividir los prefills largos en fragmentos más pequeños. Estas decisiones mantienen una mayor parte del acelerador ocupada, pero también modifican el tiempo hasta el primer token, el intervalo entre tokens y la equidad. Las secciones siguientes explican dónde ayuda el procesamiento por lotes y cuándo las mejoras de rendimiento dejan de mejorar la experiencia interactiva.
El procesamiento por lotes convierte la capacidad disponible del acelerador en trabajo compartido
Es posible que una solicitud no utilice de forma eficiente todos los carriles de ejecución en paralelo, especialmente durante operaciones matriciales pequeñas o con secuencias cortas. Combinar varias solicitudes crea operaciones tensoriales más grandes que pueden aprovechar mejor el acelerador.
Orca introdujo la programación a nivel de iteración, que permite que las solicitudes se incorporen y abandonen entre iteraciones de generación, en lugar de obligar a que un lote fijo permanezca unido hasta que termine cada secuencia.
La mejora se mide en tokens o solicitudes completados por unidad de tiempo. No garantiza que ningún usuario reciba un token antes.
Una ventana de procesamiento por lotes añade tiempo de espera antes de que comience el cálculo
Un entorno de ejecución que espera más solicitudes puede crear un lote más grande y eficiente, pero la primera solicitud asume ese tiempo de espera incluso cuando el acelerador estaba disponible.
La compensación entre rendimiento y latencia se hace visible cuando los lotes más grandes mejoran la eficiencia del dispositivo, pero prolongan el tiempo de espera o de iteración.
La IA doméstica interactiva suele necesitar una ventana de procesamiento por lotes corta o adaptable. Las incrustaciones en segundo plano pueden tolerar más espera porque su objetivo es completar trabajo, no responder de forma conversacional.
Los prefills largos pueden bloquear el trabajo corto de decodificación
El procesamiento de una solicitud realiza un prefill grande e intensivo en cálculo, mientras que las conversaciones activas regresan repetidamente para ejecutar pasos de decodificación limitados por la memoria. Mezclarlos en un mismo lote puede hacer que una pequeña decodificación interactiva espere detrás de una solicitud de documento larga.
DistServe aísla la interferencia entre prefill y decodificación porque ambas fases tienen características diferentes de recursos y latencia.
El prefill fragmentado es una solución intermedia: divide una solicitud larga para que las solicitudes de decodificación puedan ejecutarse entre fragmentos, pero el documento necesita más rondas de programación para terminar.
La mejor configuración depende de si el servidor prioriza un único trabajo de análisis largo o a varios usuarios que ya reciben respuestas transmitidas.
Las longitudes de secuencia mixtas desequilibran cada lote
Las solicitudes difieren en la longitud de las instrucciones, la longitud de la salida, las condiciones de finalización y las funciones del modelo. Algunas terminan rápidamente, mientras que otras permanecen activas, por lo que la composición del lote cambia continuamente.
vLLM utiliza procesamiento por lotes continuo con una caché KV paginada para admitir nuevas solicitudes a medida que hay capacidad disponible, en lugar de esperar a un límite fijo del lote.
Incluso con una gestión eficiente de la memoria, una respuesta muy larga consume ranuras de decodificación y caché KV durante muchas iteraciones. Por eso, el tamaño del lote debe expresarse mediante presupuestos de tokens y memoria, no solo mediante el número de solicitudes.
Los lotes más grandes pueden reducir la tasa de tokens por usuario
Los tokens totales por segundo pueden aumentar mientras cada usuario recibe una menor proporción de las iteraciones de decodificación. Un panel que muestre un mayor rendimiento agregado puede coexistir con una transmisión visible más lenta.
La guía de ZimaSpace sobre la concurrencia familiar explica por qué las pruebas comparativas con un solo usuario no predicen la latencia de varias conversaciones simultáneas.
Mide el tiempo hasta el primer token, el tiempo entre tokens y el tiempo de finalización de cada solicitud junto con el rendimiento agregado. De lo contrario, el procesamiento por lotes puede optimizarse para una métrica que los usuarios nunca experimentan directamente.
Establece políticas de procesamiento por lotes diferentes para el trabajo interactivo y en segundo plano
Reserva ventanas de espera cortas, una concurrencia limitada y mayor prioridad para la voz y el chat. Permite lotes más grandes y menor prioridad para las incrustaciones, la indexación, los resúmenes y las transformaciones sin conexión.
La investigación sobre el servicio equitativo de LLM utiliza la equidad consciente de los tokens, de modo que la entrada o salida larga de una solicitud no ocupe indefinidamente una proporción desproporcionada.
Realiza las pruebas con una carga familiar representativa, no solo con el tamaño máximo del lote. La configuración útil es la que ofrece el mayor rendimiento sin dejar de cumplir los objetivos de tiempo hasta el primer token y latencia de transmisión de la ruta interactiva.
Cuando un acelerador no puede satisfacer ambas clases, separar los trabajadores o las programaciones puede ser más sencillo que utilizar una única política universal de procesamiento por lotes.
Preguntas frecuentes
¿El procesamiento por lotes siempre aumenta la latencia?
No. Un procesamiento por lotes eficiente puede acortar el tiempo total necesario para vaciar la cola y evitar la sobrecarga, pero esperar a formar un lote y compartir iteraciones más largas puede aumentar la latencia de una solicitud individual.
¿El tamaño del lote es el número de usuarios?
No exactamente. Los entornos de ejecución pueden asignar recursos según las secuencias activas, los tokens, los bloques KV o el trabajo total, y un usuario puede generar varias solicitudes simultáneas.
¿Se deben procesar las solicitudes de voz en lotes junto con las incrustaciones?
Por lo general, no con la misma política de latencia. La voz es interactiva, mientras que los trabajos de incrustación pueden esperar y utilizar lotes más grandes durante la capacidad disponible.
Centro de Tecnología e IA
Más para leer

¿Por qué las predicciones del hogar inteligente son menos precisas después de los cambios estacionales en la rutina?
Las rutinas estacionales cambian la relación entre el tiempo, los sensores, la ocupación y las acciones deseadas, lo que vuelve obsoleto un modelo entrenado...

¿Por qué un NVR doméstico no registra eventos breves cuando el seguimiento de objetos está activado?
El seguimiento necesita suficientes detecciones para iniciar y confirmar una trayectoria, por lo que un objeto que aparece brevemente puede desaparecer antes de que...

¿Por qué cambian las etiquetas de las fotos generadas por IA después de actualizar el modelo?
Una actualización del modelo cambia la representación y la clasificación utilizadas para asignar etiquetas, por lo que la misma foto puede cruzar diferentes límites...

