Analizar el rendimiento y los costes de la inferencia de modelos con GKE Inference Quickstart

En esta página se describe cómo puedes usar la guía de inicio rápido de inferencia de GKE para simplificar el despliegue de cargas de trabajo de inferencia de IA y aprendizaje automático en Google Kubernetes Engine (GKE). Inference Quickstart es una utilidad que te permite especificar tus requisitos empresariales de inferencia y obtener configuraciones de Kubernetes optimizadas basadas en las prácticas recomendadas y en las comparativas de Google para modelos, servidores de modelos, aceleradores (GPUs y TPUs), escalado y almacenamiento. De esta forma, no tendrás que dedicar tiempo a ajustar y probar las configuraciones manualmente.

Esta página está dirigida a ingenieros de aprendizaje automático (ML), administradores y operadores de plataformas, y especialistas en datos e IA que quieran saber cómo gestionar y optimizar GKE de forma eficiente para la inferencia de IA/ML. Para obtener más información sobre los roles habituales y las tareas de ejemplo a las que hacemos referencia en el contenido de Google Cloud , consulta Roles y tareas de usuario habituales de GKE.

Para obtener más información sobre los conceptos y la terminología del servicio de modelos, así como sobre cómo las funciones de IA generativa de GKE pueden mejorar y respaldar el rendimiento del servicio de modelos, consulta el artículo Acerca de la inferencia de modelos en GKE.

Antes de leer esta página, asegúrate de que conoces Kubernetes, GKE y el servicio de modelos.

Guía de inicio rápido para usar la inferencia

Inicio rápido de inferencia te permite analizar el rendimiento y la rentabilidad de tus cargas de trabajo de inferencia, así como tomar decisiones basadas en datos sobre la asignación de recursos y las estrategias de implementación de modelos.

Estos son los pasos generales para usar Inicio rápido de inferencia:

  1. Analizar el rendimiento y el coste: explora las configuraciones disponibles y fíltralas en función de tus requisitos de rendimiento y coste mediante el comando gcloud container ai profiles list. Para ver el conjunto completo de datos de comparativas de una configuración específica, usa el comando gcloud container ai profiles benchmarks list. Este comando te permite identificar el hardware más rentable para tus requisitos de rendimiento específicos.

  2. Implementar manifiestos: después del análisis, puedes generar un manifiesto de Kubernetes optimizado e implementarlo. También puedes habilitar optimizaciones para el almacenamiento y el escalado automático. Puedes implementar desde la Google Cloud consola o mediante el comando kubectl apply. Antes de implementar, debes asegurarte de que tienes suficiente cuota de acelerador para las GPUs o TPUs seleccionadas en tu proyecto de Google Cloud .

  3. (Opcional) Ejecuta tus propias comparativas: las configuraciones y los datos de rendimiento proporcionados se basan en comparativas que usan el conjunto de datos de ShareGPT. El rendimiento de tus cargas de trabajo puede variar con respecto a esta base. Para medir el rendimiento de tu modelo en diferentes condiciones, puedes usar la herramienta de referencia de inferencia experimental.

Ventajas

La guía de inicio rápido de la inferencia te ayuda a ahorrar tiempo y recursos proporcionándote configuraciones optimizadas. Estas optimizaciones mejoran el rendimiento y reducen los costes de infraestructura de las siguientes formas:

  • Recibirás prácticas recomendadas detalladas y personalizadas para configurar el acelerador (GPU y TPU), el servidor de modelos y las configuraciones de escalado. GKE actualiza periódicamente Inference Quickstart con las correcciones, las imágenes y las métricas de rendimiento más recientes.
  • Puedes especificar los requisitos de latencia y de rendimiento de tu carga de trabajo mediante la interfaz de usuario de la consolaGoogle Cloud o una interfaz de línea de comandos, y obtener prácticas recomendadas detalladas y personalizadas como manifiestos de implementación de Kubernetes.

Cómo funciona

La guía de inicio rápido de inferencia proporciona prácticas recomendadas personalizadas basadas en las exhaustivas comparativas internas de Google sobre el rendimiento de una sola réplica para combinaciones de modelos, servidores de modelos y topologías de aceleradores. Estos gráficos de comparativas muestran la latencia frente al rendimiento, incluidas las métricas de tamaño de la cola y de la caché de clave-valor, que representan las curvas de rendimiento de cada combinación.

Cómo se generan las prácticas recomendadas personalizadas

Medimos la latencia en tiempo normalizado por token de salida (NTPOT) y tiempo hasta el primer token (TTFT) en milisegundos, así como el rendimiento en tokens de salida por segundo, saturando los aceleradores. Para obtener más información sobre estas métricas de rendimiento, consulta el artículo Acerca de la inferencia de modelos en GKE.

El siguiente perfil de latencia de ejemplo muestra el punto de inflexión en el que el rendimiento se estabiliza (verde), el punto posterior al de inflexión en el que la latencia empeora (rojo) y la zona ideal (azul) para obtener un rendimiento óptimo con la latencia objetivo. La guía de inicio rápido de la inferencia proporciona datos de rendimiento y configuraciones para esta zona ideal.

Perfil de latencia con un marcador verde que indica menos de 2000 tokens de salida por segundo y un marcador rojo que indica más de 2000 tokens de salida por segundo

En función de los requisitos de latencia de una aplicación de inferencia, Inicio rápido de inferencia identifica las combinaciones adecuadas y determina el punto de funcionamiento óptimo en la curva de latencia-rendimiento. Este punto define el umbral de la herramienta de adaptación dinámica horizontal de pods (HPA), con un búfer para tener en cuenta la latencia de escalado. El umbral general también indica el número inicial de réplicas necesarias, aunque el HPA ajusta este número de forma dinámica en función de la carga de trabajo.

Cálculo de costes

Para calcular el coste, la guía de inicio rápido de Inferencias usa una relación de coste de salida a entrada configurable. Por ejemplo, si esta proporción es 4, se supone que cada token de salida cuesta cuatro veces más que un token de entrada. Para calcular las métricas de coste por token, se usan las siguientes ecuaciones:

\[ \$/\text{output token} = \frac{\text{GPU \$/s}}{(\frac{1}{\text{output-to-input-cost-ratio}} \cdot \text{input tokens/s} + \text{output tokens/s})} \]

donde

\[ \$/\text{input token} = \frac{\text{\$/output token}}{\text{output-to-input-cost-ratio}} \]

Comparativas

Las configuraciones y los datos de rendimiento proporcionados se basan en comparativas que usan el conjunto de datos ShareGPT para enviar tráfico con la siguiente distribución de entradas y salidas.

Tokens de entrada Tokens de salida
Mín. Mediana Media P90 P99 Máx. Mín. Mediana Media P90 P99 Máx.
4 108 226 635 887 1024 1 132 195 488 778 1024

Antes de empezar

Antes de empezar, asegúrate de que has realizado las siguientes tareas:

  • Habilita la API de Google Kubernetes Engine.
  • Habilitar la API de Google Kubernetes Engine
  • Si quieres usar Google Cloud CLI para esta tarea, instálala y, a continuación, inicialízala. Si ya has instalado la gcloud CLI, obtén la versión más reciente ejecutando gcloud components update.

Prepararse para usar la interfaz de usuario de IA/ML de GKE

Si usas la Google Cloud consola, también debes crear un clúster de Autopilot si aún no lo has hecho en tu proyecto. Sigue las instrucciones que se indican en Crear un clúster de Autopilot.

Prepararse para usar la interfaz de línea de comandos

Si usas la CLI de gcloud para ejecutar Inicio rápido de inferencia, también debes ejecutar estos comandos adicionales:

  1. Habilita la API gkerecommender.googleapis.com:

    gcloud services enable gkerecommender.googleapis.com
    
  2. Define el proyecto de cuota de facturación que usas para las llamadas a la API:

    gcloud config set billing/quota_project PROJECT_ID
    
  3. Comprueba que tu versión de la herramienta de línea de comandos gcloud sea al menos la 536.0.1. De lo contrario, ejecuta lo siguiente:

    gcloud components update
    

Limitaciones

Ten en cuenta las siguientes limitaciones antes de empezar a usar la guía de inicio rápido de Inference:

  • Google Cloud El modelo de implementación de la consola solo admite la implementación en clústeres de Autopilot.
  • La guía de inicio rápido de inferencia no proporciona perfiles para todos los modelos admitidos por un servidor de modelos determinado.
  • Si no defines la variable de entorno HF_HOME cuando usas un manifiesto generado para un modelo grande (90 GiB o más) de Hugging Face, debes usar un clúster con discos de arranque más grandes que los predeterminados o modificar el manifiesto para definir HF_HOME como /dev/shm/hf_cache. De esta forma, se usará la RAM para la caché en lugar del disco de arranque del nodo. Para obtener más información, consulta la sección Solución de problemas.
  • La carga de modelos desde Cloud Storage solo se admite en clústeres con el controlador CSI de FUSE de Cloud Storage y la federación de Workload Identity para GKE habilitados. Ambos están habilitados de forma predeterminada en los clústeres Autopilot. Para obtener más información, consulta el artículo Configurar el controlador de CSI de FUSE de Cloud Storage para GKE.

Analizar y ver configuraciones optimizadas para la inferencia de modelos

En esta sección se describe cómo consultar y analizar las recomendaciones de configuración mediante la CLI de Google Cloud.

Usa el comando gcloud container ai profiles para explorar y analizar perfiles optimizados (combinaciones de modelo, servidor de modelos, versión del servidor de modelos y aceleradores):

Modelos

Para explorar y seleccionar un modelo, usa la opción models.

  gcloud container ai profiles models list

Perfiles

Usa el comando list para consultar los perfiles generados y filtrarlos en función de tus requisitos de rendimiento y coste. Por ejemplo:

gcloud container ai profiles list \
    --model=openai/gpt-oss-20b \
    --pricing-model=on-demand \
    --target-ttft-milliseconds=300

El resultado muestra los perfiles admitidos con métricas de rendimiento, como el rendimiento, la latencia y el coste por millón de tokens en el punto de inflexión. El resultado será similar al siguiente:

  Instance Type Accelerator      Cost/M Input Tokens Cost/M Output Tokens Output Tokens/s NTPOT(ms) TTFT(ms) Model Server Model Server Version Model
  a3-highgpu-1g nvidia-h100-80gb 0.009               0.035                13335           67        297      vllm         gptoss               openai/gpt-oss-20b

Los valores representan el rendimiento observado en el punto en el que el rendimiento deja de aumentar y la latencia empieza a aumentar drásticamente (es decir, el punto de inflexión o de saturación) de un perfil determinado con este tipo de acelerador. Para obtener más información sobre estas métricas de rendimiento, consulte el artículo Acerca de la inferencia de modelos en GKE.

Para ver la lista completa de las marcas que puedes definir, consulta la documentación del comando list.

Toda la información sobre precios solo está disponible en dólares estadounidenses y se aplica de forma predeterminada a la región us-east5, excepto en las configuraciones que usan máquinas A3, que se aplican de forma predeterminada a la región us-central1.

Comparativas

Para obtener todos los datos de comparativas de un perfil específico, usa el comando benchmarks list.

Por ejemplo:

gcloud container ai profiles benchmarks list \
    --model=deepseek-ai/DeepSeek-R1-Distill-Qwen-7B \
    --model-server=vllm \
    --pricing-model=on-demand

El resultado contiene una lista de métricas de rendimiento de las comparativas realizadas a diferentes frecuencias de solicitudes.

El comando muestra el resultado en formato CSV. Para almacenar el resultado en un archivo, usa la redirección de salida. Por ejemplo: gcloud container ai profiles benchmarks list > profiles.csv.

Para ver la lista completa de las marcas que puedes definir, consulta la documentación del comando benchmarks list.

Después de elegir un modelo, un servidor de modelos, una versión del servidor de modelos y un acelerador, puedes crear un manifiesto de implementación.

Implementar configuraciones recomendadas

En esta sección se describe cómo generar y desplegar recomendaciones de configuración mediante la consola Google Cloud o la línea de comandos.

Consola

  1. En la consola de Google Cloud , ve a la página de IA/ML de GKE.

    Abre la página de IA y aprendizaje automático de GKE

  2. Haz clic en Desplegar modelos.
  3. Selecciona el modelo que quieras implementar. Los modelos compatibles con Inicio rápido de inferencia se muestran con la etiqueta Optimizado.

    • Si has seleccionado un modelo base, se abrirá una página de modelo. Haz clic en Desplegar. Puedes modificar la configuración antes de la implementación real.
    • Se te pedirá que crees un clúster de Autopilot si no hay ninguno en tu proyecto. Sigue las instrucciones que se indican en Crear un clúster de Autopilot. Después de crear el clúster, vuelve a la página de IA/ML de GKE en la Google Cloud consola para seleccionar un modelo.

    La página de implementación del modelo se rellena automáticamente con el modelo que has seleccionado, así como con el servidor de modelos y el acelerador recomendados. También puedes configurar ajustes como la latencia máxima y la fuente del modelo.

  4. (Opcional) Para ver el manifiesto con la configuración recomendada, haz clic en Ver YAML.

  5. Para desplegar el manifiesto con la configuración recomendada, haz clic en Desplegar. La operación de implementación puede tardar varios minutos en completarse.

Para ver tu despliegue, ve a la página Kubernetes Engine > Cargas de trabajo.

gcloud

  1. Prepárate para cargar modelos desde tu registro de modelos: la guía de inicio rápido de inferencia admite la carga de modelos desde Hugging Face o Cloud Storage.

    Hugging Face

    Si aún no tienes uno, genera un token de acceso de Hugging Face y un secreto de Kubernetes correspondiente.

    Para crear un secreto de Kubernetes que contenga el token de Hugging Face, ejecuta el siguiente comando:

    kubectl create secret generic hf-secret \
        --from-literal=hf_api_token=HUGGING_FACE_TOKEN \
        --namespace=NAMESPACE
    

    Sustituye los siguientes valores:

    • HUGGING_FACE_TOKEN: el token de Hugging Face que has creado antes.
    • NAMESPACE: el espacio de nombres de Kubernetes en el que quieras implementar tu servidor de modelos.

    Es posible que algunos modelos también requieran que aceptes y firmes su contrato de licencia de consentimiento.

    Cloud Storage

    Puedes cargar modelos compatibles desde Cloud Storage con una configuración optimizada de Cloud Storage FUSE. Para ello, primero debes cargar el modelo de Hugging Face en tu segmento de Cloud Storage.

    Puedes desplegar este trabajo de Kubernetes para transferir el modelo y cambiar MODEL_ID al modelo compatible con la guía de inicio rápido de inferencia.

  2. Generar manifiestos: tienes estas opciones para generar manifiestos:

    • Configuración básica: genera los manifiestos estándar de Kubernetes Deployment, Service y PodMonitoring para desplegar un servidor de inferencia de una sola réplica.
    • (Opcional) Configuración optimizada para el almacenamiento: genera un manifiesto con una configuración optimizada de Cloud Storage FUSE para cargar modelos desde un segmento de Cloud Storage. Para habilitar esta configuración, usa la marca --model-bucket-uri. Una configuración optimizada de Cloud Storage FUSE puede mejorar el tiempo de inicio de los pods de LLM en más de 7 veces.
    • (Opcional) Configuración optimizada para el autoescalado: genera un manifiesto con un HPA para ajustar automáticamente el número de réplicas del servidor de modelos en función del tráfico. Para habilitar esta configuración, especifica un objetivo de latencia con marcas como --target-ntpot-milliseconds.

    Configuración base

    En el terminal, usa la opción manifests para generar manifiestos de Deployment, Service y PodMonitoring:

    gcloud container ai profiles manifests create
    

    Usa los parámetros obligatorios --model, --model-server y --accelerator-type para personalizar tu manifiesto.

    También puedes definir estos parámetros:

    • --target-ntpot-milliseconds: define este parámetro para especificar el umbral de HPA. Este parámetro le permite definir un umbral de escalado para mantener la latencia del percentil 50 del tiempo normalizado por token de salida (NTPOT), que se mide en el percentil 50, por debajo del valor especificado. Elige un valor superior a la latencia mínima de tu acelerador. El HPA se configura para obtener el máximo rendimiento si especificas un valor de NTPOT superior a la latencia máxima de tu acelerador. Por ejemplo:

      gcloud container ai profiles manifests create \
          --model=google/gemma-2-27b-it \
          --model-server=vllm \
          --model-server-version=v0.7.2 \
          --accelerator-type=nvidia-l4 \
          --target-ntpot-milliseconds=200
      
    • --target-ttft-milliseconds: filtra los perfiles que superan el objetivo de latencia TTFT.

    • --output-path: si se especifica, la salida se guarda en la ruta proporcionada en lugar de imprimirse en la terminal, de modo que puedes editarla antes de implementarla. Por ejemplo, puedes usarlo con la opción --output=manifest si quieres guardar tu manifiesto en un archivo YAML. Por ejemplo:

      gcloud container ai profiles manifests create \
          --model deepseek-ai/DeepSeek-R1-Distill-Qwen-7B \
          --model-server vllm \
          --accelerator-type=nvidia-tesla-a100 \
          --output=manifest \
          --output-path  /tmp/manifests.yaml
      

    Para ver la lista completa de las marcas que puedes definir, consulta la documentación del comando manifests create.

    Optimizado para el almacenamiento

    Puedes mejorar el tiempo de inicio de los pods cargando modelos desde Cloud Storage con una configuración optimizada de Cloud Storage FUSE. Para cargar datos desde Cloud Storage, se necesitan las versiones 1.29.6-gke.1254000, 1.30.2-gke.1394000 o posteriores de GKE.

    Para ello, siga estos pasos:

    1. Carga el modelo del repositorio de Hugging Face en tu depósito de Cloud Storage.
    2. Define la marca --model-bucket-uri al generar el archivo de manifiesto. De esta forma, el modelo se configura para que se cargue desde un segmento de Cloud Storage mediante el controlador CSI de Cloud Storage FUSE. El URI debe apuntar a la ruta que contiene el archivo config.json y los pesos del modelo. Puede especificar una ruta a un directorio del segmento añadiéndola al URI del segmento.

      Por ejemplo:

      gcloud container ai profiles manifests create \
          --model=google/gemma-2-27b-it \
          --model-server=vllm \
          --accelerator-type=nvidia-l4 \
          --model-bucket-uri=gs://BUCKET_NAME \
          --output-path=manifests.yaml
      

      Sustituye BUCKET_NAME por el nombre del segmento de Cloud Storage.

    3. Antes de aplicar el manifiesto, debes ejecutar el comando gcloud storage buckets add-iam-policy-binding que se encuentra en los comentarios del manifiesto. Este comando es necesario para conceder a la cuenta de servicio de GKE permiso para acceder al segmento de Cloud Storage mediante Workload Identity Federation for GKE.

      Si tienes previsto escalar tu implementación a más de una réplica, debes elegir una de las siguientes opciones para evitar errores de escritura simultánea en la ruta de caché de XLA (VLLM_XLA_CACHE_PATH):

      • Opción 1 (recomendada): primero, escala la implementación a 1 réplica. Espera a que el pod esté listo, lo que le permite escribir en la caché de XLA. A continuación, aumenta el número de réplicas que quieras. Las réplicas posteriores leerán de la caché rellenada sin conflictos de escritura.
      • Opción 2: Eliminar por completo la variable de entorno VLLM_XLA_CACHE_PATH del manifiesto. Este enfoque es más sencillo, pero inhabilita el almacenamiento en caché de todas las réplicas.

      En los tipos de acelerador de TPU, esta ruta de caché se usa para almacenar la caché de compilación de XLA, que acelera la preparación de los modelos para las implementaciones repetidas.

    Para obtener más consejos sobre cómo mejorar el rendimiento, consulta Optimizar el controlador de CSI de Cloud Storage FUSE para mejorar el rendimiento de GKE.

    Optimizada para el autoescalado

    Puedes configurar el autoescalador de pods horizontal (HPA) para que ajuste automáticamente el número de réplicas del servidor de modelos en función de la carga. De esta forma, los servidores de modelos pueden gestionar de forma eficiente cargas variables aumentando o reduciendo la escala según sea necesario. La configuración de HPA sigue las prácticas recomendadas de escalado automático de las guías de GPUs y TPUs.

    Para incluir configuraciones de HPA al generar manifiestos, usa una o ambas marcas: --target-ntpot-milliseconds y --target-ttft-milliseconds. Estos parámetros definen un umbral de escalado para que el HPA mantenga la latencia del percentil 50 de NTPOT o TTFT por debajo del valor especificado. Si solo defines una de estas marcas, solo se tendrá en cuenta esa métrica para el escalado.

    Elige un valor superior a la latencia mínima de tu acelerador. El HPA se configura para obtener el máximo rendimiento si especificas un valor superior a la latencia máxima de tu acelerador.

    Por ejemplo:

    gcloud container ai profiles manifests create \
        --model=google/gemma-2-27b-it \
        --accelerator-type=nvidia-l4 \
        --target-ntpot-milliseconds=250
    
  3. Crea un clúster: puedes servir tu modelo en clústeres de Autopilot o estándar de GKE. Te recomendamos que uses un clúster de Autopilot para disfrutar de una experiencia de Kubernetes totalmente gestionada. Para elegir el modo de funcionamiento de GKE que mejor se adapte a tus cargas de trabajo, consulta Elegir un modo de funcionamiento de GKE.

    Si no tienes ningún clúster, sigue estos pasos:

    Autopilot

    Sigue estas instrucciones para crear un clúster de Autopilot. GKE se encarga de aprovisionar los nodos con capacidad de GPU o TPU en función de los manifiestos de implementación, siempre que tengas la cuota necesaria en tu proyecto.

    Estándar

    1. Crea un clúster de zona o regional.
    2. Crea un grupo de nodos con los aceleradores adecuados. Sigue estos pasos en función del tipo de acelerador que hayas elegido:

  4. (Opcional, pero recomendado) Habilita las funciones de observabilidad: en la sección de comentarios del manifiesto generado, se proporcionan comandos adicionales para habilitar las funciones de observabilidad sugeridas. Al habilitar estas funciones, obtendrás más estadísticas que te ayudarán a monitorizar el rendimiento y el estado de las cargas de trabajo y la infraestructura subyacente.

    A continuación, se muestra un ejemplo de un comando para habilitar las funciones de observabilidad:

    gcloud container clusters update $CLUSTER_NAME \
        --project=$PROJECT_ID \
        --location=$LOCATION \
        --enable-managed-prometheus \
        --logging=SYSTEM,WORKLOAD  \
        --monitoring=SYSTEM,DEPLOYMENT,HPA,POD,DCGM \
        --auto-monitoring-scope=ALL
    

    Para obtener más información, consulta Monitorizar las cargas de trabajo de inferencia.

  5. (Solo HPA) Implementa un adaptador de métricas: si se han generado recursos de HPA en los manifiestos de implementación, es necesario un adaptador de métricas, como el adaptador de métricas personalizadas de Stackdriver. El adaptador de métricas permite que el HPA acceda a las métricas del servidor de modelos que usan la API de métricas externas de kube. Para implementar el adaptador, consulta la documentación del adaptador en GitHub.

  6. Despliega los manifiestos: ejecuta el comando kubectl apply e introduce el archivo YAML de tus manifiestos. Por ejemplo:

    kubectl apply -f ./manifests.yaml
    

Probar los endpoints de implementación

Si has implementado el manifiesto, el servicio implementado se expone en el siguiente endpoint:

http://model-model_server-service:8000/

El servidor de modelos, como vLLM, suele escuchar en el puerto 8000.

Para probar la implementación, debes configurar la redirección de puertos. Ejecuta el siguiente comando en un terminal independiente:

kubectl port-forward service/model-model_server-service 8000:8000

Para ver ejemplos de cómo crear y enviar una solicitud a tu endpoint, consulta la documentación de vLLM.

Control de versiones del archivo de manifiesto

Inference Quickstart proporciona los archivos de manifiesto más recientes que se han validado en versiones recientes del clúster de GKE. El manifiesto devuelto para un perfil puede cambiar con el tiempo, de modo que recibas una configuración optimizada en el momento del despliegue. Si necesitas un manifiesto estable, guárdalo y almacénalo por separado.

El manifiesto incluye comentarios y una anotación recommender.ai.gke.io/version con el siguiente formato:

# Generated on DATE using:
# GKE cluster CLUSTER_VERSION
# GPU_DRIVER_VERSION GPU driver for node version NODE_VERSION
# Model server MODEL_SERVER MODEL_SERVER_VERSION

La anotación anterior tiene los siguientes valores:

  • DATE: la fecha en la que se generó el manifiesto.
  • CLUSTER_VERSION: la versión del clúster de GKE que se usa para la validación.
  • NODE_VERSION: la versión del nodo de GKE que se usa para la validación.
  • GPU_DRIVER_VERSION: (solo GPU) versión del controlador de la GPU utilizada para la validación.
  • MODEL_SERVER: el servidor de modelos usado en el manifiesto.
  • MODEL_SERVER_VERSION: la versión del servidor de modelos que se usa en el manifiesto.

Monitorizar las cargas de trabajo de inferencia

Para monitorizar las cargas de trabajo de inferencia implementadas, ve al Explorador de métricas de la Google Cloud consola.

Habilitar la monitorización automática

GKE incluye una función de monitorización automática que forma parte de las funciones de observabilidad más amplias. Esta función analiza el clúster en busca de cargas de trabajo que se ejecuten en servidores de modelos compatibles e implementa los recursos de PodMonitoring que permiten que estas métricas de carga de trabajo se vean en Cloud Monitoring. Para obtener más información sobre cómo habilitar y configurar la monitorización automática, consulta Configurar la monitorización automática de aplicaciones para cargas de trabajo.

Después de habilitar la función, GKE instala paneles precompilados para monitorizar aplicaciones de cargas de trabajo compatibles.

Si implementas desde la página de IA/ML de GKE en la Google Cloud consola, los recursos de PodMonitoring y HPA se crearán automáticamente con la configuración de targetNtpot.

Solución de problemas

  • Si define una latencia demasiado baja, es posible que Inicio rápido de inferencia no genere ninguna recomendación. Para solucionar este problema, seleccione una latencia objetivo entre la latencia mínima y la máxima observadas en los aceleradores seleccionados.
  • La guía de inicio rápido de Inferencias existe independientemente de los componentes de GKE, por lo que la versión de tu clúster no es directamente relevante para usar el servicio. Sin embargo, te recomendamos que uses un clúster nuevo o actualizado para evitar discrepancias en el rendimiento.
  • Si recibes un error PERMISSION_DENIED para los comandos gkerecommender.googleapis.com que indica que falta un proyecto de cuota, debes configurarlo manualmente. Ejecuta gcloud config set billing/quota_project PROJECT_ID para solucionarlo.

Se ha expulsado el pod debido a que el almacenamiento efímero es insuficiente

Cuando implementas un modelo grande (90 GiB o más) de Hugging Face, es posible que tu pod se expulse y aparezca un mensaje de error similar a este:

Fails because inference server consumes too much ephemeral storage, and gets evicted low resources:  Warning  Evicted              3m24s                   kubelet                                The node was low on resource: ephemeral-storage. Threshold quantity: 10120387530, available: 303108Ki. Container inference-server was using 92343412Ki, request is 0, has larger consumption of ephemeral-storage..,

Este error se produce porque el modelo se almacena en caché en el disco de arranque del nodo, que es un tipo de almacenamiento efímero. El disco de arranque se usa para el almacenamiento efímero cuando el manifiesto de la implementación no asigna a la variable de entorno HF_HOME un directorio de la RAM del nodo.

  • De forma predeterminada, los nodos de GKE tienen un disco de arranque de 100 GiB.
  • GKE reserva el 10% del disco de arranque para la sobrecarga del sistema, lo que deja 90 GiB para tus cargas de trabajo.
  • Si el tamaño del modelo es de 90 GiB o más y se ejecuta en un disco de arranque de tamaño predeterminado, kubelet expulsa el pod para liberar almacenamiento efímero.

Para solucionar este problema, elige una de las siguientes opciones:

  • Usar la RAM para almacenar en caché el modelo: en el manifiesto de tu implementación, asigna el valor /dev/shm/hf_cache a la variable de entorno HF_HOME. De esta forma, se usa la RAM del nodo para almacenar en caché el modelo en lugar del disco de arranque.
  • Aumenta el tamaño del disco de arranque:

El pod entra en un bucle de fallos al cargar modelos de Cloud Storage

Después de implementar un manifiesto que se haya generado con la marca --model-bucket-uri, es posible que la implementación se quede bloqueada y que el pod entre en el estado CrashLoopBackOff. Si compruebas los registros del contenedor inference-server, puede que se muestre un error engañoso, como huggingface_hub.errors.HFValidationError. Por ejemplo:

huggingface_hub.errors.HFValidationError: Repo id must use alphanumeric chars or '-', '_', '.', '--' and '..' are forbidden, '-' and '.' cannot start or end the name, max length is 96: '/data'.

Este error suele producirse cuando la ruta de Cloud Storage proporcionada en la marca --model-bucket-uri es incorrecta. El servidor de inferencia, como vLLM, no encuentra los archivos de modelo necesarios (como config.json) en la ruta montada. Si no encuentra los archivos locales, el servidor asume que la ruta es un ID de repositorio de Hugging Face Hub. Como la ruta no es un ID de repositorio válido, el servidor falla con un error de validación y entra en un bucle de fallos.

Para solucionar este problema, compruebe que la ruta que ha proporcionado a la marca --model-bucket-uri apunta al directorio exacto de su contenedor de Cloud Storage que contiene el archivo config.json del modelo y todos los pesos del modelo asociados.

Siguientes pasos