Prácticas recomendadas para el ajuste de escala automático de cargas de trabajo de inferencia de modelos de lenguaje grandes (LLM) con GPU en Google Kubernetes Engine (GKE)


En esta guía de prácticas recomendadas, se muestran las métricas disponibles y cómo seleccionar las métricas adecuadas para configurar el Horizontal Pod Autoscaler (HPA) de tus cargas de trabajo de inferencia en GKE. El HPA es una forma eficiente de garantizar que los servidores de modelos escalen de forma adecuada con la carga. Ajustar la configuración del HPA es la forma principal de alinear el costo de hardware aprovisionado con las demandas de tráfico para lograr los objetivos de rendimiento del servidor de inferencia.

Si deseas ver ejemplos de cómo implementar estas prácticas recomendadas, consulta Configura el ajuste de escala automático para cargas de trabajo de LLM en GPU con GKE.

Objetivos

Esta guía está dirigida a clientes de IA generativa, usuarios nuevos o existentes de GKE, ingenieros de AA y, también, ingenieros de LLMOps (DevOps) que estén interesados en optimizar sus cargas de trabajo de LLM con GPU con Kubernetes.

Después de leer esta guía, deberías poder hacer lo siguiente:

  • Comprende las métricas de ajuste de escala automático para la inferencia de LLM.
  • Comprende las compensaciones de alto nivel cuando consideres en qué métricas realizar el ajuste de escala automático.

Descripción general de las métricas de ajuste de escala automático para la inferencia de LLM

Las siguientes métricas están disponibles en GKE:

Métricas del servidor

Los servidores de inferencia de LLM populares, como TGI, vLLM y NVIDIA Triton, emiten métricas de rendimiento específicas de la carga de trabajo. GKE simplifica la recopilación y el ajuste de escala automático de las cargas de trabajo según estas métricas a nivel del servidor. Puedes usar estas métricas para obtener visibilidad de los indicadores de rendimiento, como el tamaño del lote y el tamaño de la cola, y las latencias de decodificación.

En función de estas métricas, puedes dirigir el ajuste de escala automático a los indicadores de rendimiento más relevantes. Estas son algunas de las métricas clave a nivel del servidor para el ajuste de escala automático:

  • Tamaño de la cola: La cantidad de solicitudes pendientes de procesamiento en la cola del servidor. Usa el tamaño de la cola para maximizar la capacidad de procesamiento y minimizar el costo dentro de un determinado umbral de latencia de destino. Para obtener más información, consulta la sección de prácticas recomendadas relacionada.
  • Tamaño del lote: La cantidad de solicitudes que se someten a inferencia. Usa el tamaño del lote para alcanzar umbrales de latencia de destino más bajos que el tamaño de la cola. Para obtener más información, consulta la sección de prácticas recomendadas relacionada.

Estas métricas suelen ser resilientes a las fluctuaciones de rendimiento y tráfico, lo que las convierte en un punto de partida confiable para el ajuste de escala automático en diversas configuraciones de hardware de GPU.

Métricas de GPU

Las GPUs emiten varias métricas de uso y rendimiento, lo que ofrece ajuste de escala automático independiente de la carga de trabajo para cualquier tarea basada en GPU, lo que incluye las cargas de trabajo de inferencia que no tienen métricas personalizadas. Para aprender a configurar la recopilación de DCGM, consulta Configura la recopilación de DCGM.

Las métricas comunes de GPU para GKE incluyen lo siguiente:

Métrica de GPU Uso Limitaciones
Uso de GPU (DCGM_FI_DEV_GPU_UTIL) Mide el ciclo de trabajo, que es la cantidad de tiempo que la GPU está activa. No mide cuánto trabajo se realiza mientras la GPU está activa. Esto dificulta la asignación de las métricas de rendimiento basadas en inferencias, como la latencia y la capacidad de procesamiento, a un umbral de uso de GPU.
Uso de memoria de GPU (DCGM_FI_DEV_FB_USED) Mide cuánta memoria de GPU se usa en un momento determinado. Esto es útil para cargas de trabajo que implementan la asignación dinámica de memoria de GPU. En el caso de las cargas de trabajo que asignan previamente la memoria de GPU o nunca cancelan la asignación de memoria (como las cargas de trabajo que se ejecutan en TGI y vLLM), esta métrica solo funciona para escalar verticalmente y no la reducirá cuando el tráfico disminuya.

Métricas de CPU

En GKE, el HPA está listo para usarse con el ajuste de escala automático basado en la CPU y la memoria. En el caso de las cargas de trabajo que se ejecutan en CPU, las métricas de uso de CPU y memoria suelen ser la métrica de ajuste de escala automático principal.

Para las cargas de trabajo de inferencia que se ejecutan en GPU, no recomendamos el uso de CPU y memoria, como los únicos indicadores de la cantidad de recursos que consume un trabajo, ya que las cargas de trabajo de inferencia dependen principalmente de los recursos de GPU. Por lo tanto, el uso solo de las métricas de CPU para el ajuste de escala automático puede generar un rendimiento y costos deficientes.

Consideraciones para elegir las métricas del ajuste de escala automático

Usa las siguientes consideraciones y prácticas recomendadas para seleccionar la mejor métrica para el ajuste de escala automático en GKE para cumplir con tus objetivos de rendimiento de la carga de trabajo de inferencia.

Práctica recomendada: Usa el tamaño de la cola para maximizar la capacidad de procesamiento y minimizar el costo dentro de un umbral de latencia objetivo determinado

Recomendamos el ajuste de escala automático del tamaño de la cola cuando se optimiza la capacidad de procesamiento y el costo, y cuando los objetivos de latencia se pueden alcanzar con la capacidad de procesamiento máxima del tamaño máximo del lote del servidor de modelos.

El tamaño de la cola se correlaciona directamente con la latencia de la solicitud. Las solicitudes entrantes se ponen en cola en el servidor de modelo antes de que se procesen, y este tiempo de cola se agrega a la latencia general. El tamaño de la cola es un indicador sensible de los aumentos repentinos de carga, ya que el aumento de la carga llena rápidamente la cola.

El ajuste de escala automático basado en el tamaño de la cola minimiza el tiempo de la cola mediante el escalamiento vertical bajo carga y el escalamiento vertical cuando la cola está vacía. Este enfoque es relativamente fácil de implementar y, en gran medida, independiente de las cargas de trabajo, ya que el tamaño de la cola es independiente del tamaño de la solicitud, el modelo o el hardware.

Considera enfocarte en el tamaño de la cola si deseas maximizar la capacidad de procesamiento y respetar la configuración de tu servidor de modelos. El tamaño de la cola hace un seguimiento de las solicitudes pendientes, sin procesar. vLLM y TGI usan el procesamiento por lotes continuo, que maximiza las solicitudes simultáneas y mantiene la cola baja cuando hay espacio por lotes disponible. La cola crece notablemente cuando el espacio del lote es limitado, por lo que debes usar el punto de crecimiento como señal para iniciar el escalamiento vertical. Si combinas el ajuste de escala automático del tamaño de las colas con la capacidad de procesamiento por lotes optimizada, puedes maximizar la capacidad de procesamiento de la solicitud.

Determina el valor de umbral de tamaño de cola óptimo para HPA

Ten en cuenta la tolerancia del HPA, que se establece de forma predeterminada en un rango de no acción de 0.1 alrededor del valor objetivo para disminuir la oscilación.

Para elegir el umbral de tamaño correcto de la cola, comienza con un valor entre 3 y 5 y auméntalo gradualmente hasta que las solicitudes alcancen la latencia preferida. Usa la herramienta de locust-load-inference para realizar pruebas. Para umbrales inferiores a 10, ajusta la configuración de escalamiento vertical del HPA a fin de controlar los aumentos repentinos de tráfico.

También puedes crear un panel personalizado de Cloud Monitoring para visualizar el comportamiento de la métrica.

Limitaciones

El tamaño de la cola no controla directamente las solicitudes simultáneas, por lo que su umbral no puede garantizar una latencia más baja que la que permite el tamaño máximo de lote. Como solución alternativa, puedes reducir de forma manual el tamaño máximo del lote o realizar un ajuste de escala automático en el tamaño del lote.

Práctica recomendada: Usa el tamaño del lote para alcanzar umbrales de latencia objetivo más bajos que el tamaño de la cola

Recomendamos elegir el ajuste de escala automático basado en el tamaño del lote si tienes cargas de trabajo sensibles a la latencia en las que el escalamiento basado en colas no es lo suficientemente rápido para cumplir con tus requisitos.

El tamaño del lote se correlaciona directamente con la capacidad de procesamiento y la latencia de una solicitud entrante. El tamaño del lote es un buen indicador para los aumentos repentinos de carga, ya que un aumento en la carga hace que se agreguen más solicitudes al lote existente, lo que genera un tamaño de lote mayor. En general, cuanto mayor sea el tamaño del lote, mayor será la latencia. El ajuste de escala automático en el tamaño del lote garantiza que tu carga de trabajo escale verticalmente para maximizar la cantidad de solicitudes que se procesan en paralelo a la vez y que se reduce la escala cuando hay menos solicitudes procesadas en paralelo.

Si el tamaño de la cola ya cumple con tus objetivos de latencia, priorízalo para el ajuste de escala automático. Esto maximiza la capacidad de procesamiento y la rentabilidad. Sin embargo, el tamaño del lote es valioso para las cargas de trabajo sensibles a la latencia. Los tamaños del lote más grandes aumentan la capacidad de procesamiento, pero también aumentan la latencia debido a la fase de llenado previo de algunas solicitudes que interrumpe la fase de decodificación de otras en servidores de modelos de procesamiento por lotes continuo. Puedes supervisar los patrones de tamaño del lote y usar el ajuste de escala automático para minimizar las solicitudes simultáneas durante los aumentos repentinos de carga.

Si el servidor de modelos lo permite, te recomendamos personalizar el tamaño máximo del lote como un mecanismo de ajuste adicional. También puedes vincular esto con el ajuste de escala automático basado en colas.

Determina el valor de umbral de tamaño de lote óptimo para HPA

Ten en cuenta la tolerancia del HPA, que es un rango de no acción predeterminado de 0.1 alrededor del valor objetivo para disminuir la oscilación.

Para elegir el umbral de tamaño del lote correcto, aumenta de forma experimental la carga en tu servidor y observa dónde aumenta el tamaño del lote. También te recomendamos usar la herramienta de locust-load-inference para realizar pruebas. Una vez que hayas identificado el tamaño máximo del lote, establece el valor objetivo inicial un poco por debajo de este máximo y disminúyelo hasta que se alcance la latencia preferida.

También puedes crear un panel personalizado de Cloud Monitoring para visualizar el comportamiento de la métrica.

Limitaciones

El ajuste de escala automático en el tamaño del lote, si bien es útil para el control de latencia, tiene limitaciones. Los distintos tamaños de solicitud y restricciones de hardware dificultan la búsqueda del umbral de tamaño de lote adecuado.

Práctica recomendada: Optimiza la configuración del HPA

Recomendamos establecer estas opciones de configuración del HPA:

  • Período de estabilización: Usa esta opción de configuración de HPA para evitar cambios rápidos en el recuento de réplicas debido a métricas fluctuantes. Los valores predeterminados son de 5 minutos para la reducción de escala (lo que evita una reducción de escala prematura) y 0 para escalamiento vertical (lo que garantiza la capacidad de respuesta). Ajusta el valor según la volatilidad de la carga de trabajo y tu capacidad de respuesta preferida.
  • Políticas de escalamiento: Usa esta opción de configuración de HPA para ajustar el comportamiento de escalamiento vertical y horizontal. Puedes configurar el límite de la política de “Pods” para especificar el número absoluto de réplicas modificadas por unidad de tiempo y el límite de la política de “Porcentaje” para especificar mediante el cambio porcentual.

Para obtener más información sobre estas opciones, consulta Ajuste automático de escala horizontal de Pods en la documentación de código abierto de Kubernetes.

¿Qué sigue?