GPU (servicios)

En esta página, se describe la configuración de GPU para tu servicio de Cloud Run. Las GPUs funcionan bien para cargas de trabajo de inferencia de IA, como los modelos de lenguaje grandes (LLM) u otros casos de uso que no son de IA con gran demanda de procesamiento, como la transcodificación de videos y la renderización en 3D. Google proporciona GPU NVIDIA L4 con 24 GB de memoria de GPU (VRAM), que es independiente de la memoria de la instancia.

Para usar la función de GPU, debes solicitar una cuota de Total Nvidia L4 GPU allocation, per project per region. Para obtener más información, consulta Antes de comenzar.

La GPU en Cloud Run está completamente administrada, sin necesidad de controladores ni bibliotecas adicionales. La función de GPU ofrece disponibilidad a pedido sin necesidad de reservas, similar a la forma en que funcionan la CPU y la memoria a pedido en Cloud Run. Las instancias de un servicio de Cloud Run que se configuró para usar GPU pueden reducir la escala verticalmente a cero para ahorrar costos cuando no están en uso.

Las instancias de Cloud Run con una GPU L4 conectada con controladores preinstalados comienzan en aproximadamente 5 segundos, momento en los que los procesos que se ejecutan en tu contenedor pueden comenzar a usar la GPU.

Puedes configurar una GPU por instancia de Cloud Run. Si usas contenedores secundarios, ten en cuenta que la GPU solo se puede conectar a un contenedor.

Regiones admitidas

Impacto en los precios

Consulta los precios de Cloud Run para obtener detalles sobre los precios de las GPU. Ten en cuenta las siguientes consideraciones importantes:

  • No se aplican tarifas por solicitud. Debido a que debes usar CPU always allocated para usar la función de GPU, las instancias mínimas se cobran a la tarifa completa, incluso cuando están inactivas.
  • Debes usar un mínimo de 4 CPU y 16 GiB de memoria.
  • La GPU se factura por la duración completa del ciclo de vida de la instancia.

Tipos de GPU compatibles

Puedes usar una GPU L4 por instancia de Cloud Run. Una GPU L4 tiene los siguientes controladores preinstalados:

  • La versión actual del controlador NVIDIA: 535.129.03 (CUDA 12.2)

Antes de comenzar

En la siguiente lista, se describen los requisitos y las limitaciones que se aplican cuando se usan GPUs en Cloud Run:

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Enable the Cloud Run API.

    Enable the API

  7. Para usar la función de GPUs, debes solicitar un aumento de cuota para una región compatible. La cuota necesaria es Total Nvidia L4 GPU allocation, per project per region, que se encuentra en la API de Cloud Run Admin.

    Ve a la página Cuotas y límites del sistema

  8. Consulta Prácticas recomendadas: Inferencia de IA en Cloud Run con GPUs para obtener recomendaciones sobre cómo compilar la imagen de tu contenedor y cargar modelos grandes.
  9. Asegúrate de que tu servicio de Cloud Run tenga la siguiente configuración:

Roles obligatorios

Para obtener los permisos que necesitas para configurar y, luego, implementar los servicios de Cloud Run, pídele a tu administrador que te otorgue los siguientes roles de IAM:

Para obtener una lista de los roles y los permisos de IAM asociados con Cloud Run, consulta Roles de IAM de Cloud Run y Permisos de IAM de Cloud Run. Si tu servicio de Cloud Run interactúa con las APIs de Google Cloud, como las bibliotecas cliente de Cloud, consulta la guía de configuración de identidades del servicio. Para obtener más información acerca de cómo otorgar roles, consulta Permisos de implementación y Administra el acceso.

Configura un servicio de Cloud Run con GPU

Cualquier cambio en la configuración conlleva la creación de una revisión nueva. Las revisiones posteriores también adoptarán esta configuración de manera automática, a menos que realices actualizaciones explícitas para cambiarla.

Puedes usar la consola de Google Cloud, Google Cloud CLI o YAML para configurar la GPU.

Console

  1. En la consola de Google Cloud ve a Cloud Run:

    Ir a Cloud Run

  2. Haz clic en Implementar contenedor y selecciona Servicio para configurar un servicio nuevo. Si quieres configurar un servicio existente, haz clic en el servicio y, luego, en implementar y editar la nueva revisión.

  3. Si configuras un servicio nuevo, completa la página de configuración del servicio inicial como desees y haz clic en Contenedores, volúmenes, Herramientas de redes y seguridad para expandir la página de configuración del servicio.

  4. Haz clic en la pestaña Contenedor.

    imagen

    • Configura la CPU, la memoria, la simultaneidad, el entorno de ejecución y el sondeo de inicio según las recomendaciones que se indican en Antes de comenzar.
    • Marca la casilla de verificación de GPU y, luego, selecciona el tipo de GPU en el menú Tipo de GPU y la cantidad de GPU en el menú Cantidad de GPU.
  5. Haz clic en Crear o Implementar.

gcloud

Para establecer o actualizar la configuración de la GPU de un servicio, usa el comando gcloud beta run services update:

  gcloud beta run deploy SERVICE \
    --image IMAGE_URL \
    --project PROJECT_ID \
    --region REGION \
    --port PORT \
    --cpu CPU \
    --memory MEMORY \
    --no-cpu-throttling \
    --gpu GPU_NUMBER \
    --gpu-type GPU_TYPE \
    --max-instances MAX_INSTANCE

Reemplaza lo siguiente:

  • SERVICE por el nombre del servicio de Cloud Run
  • PROJECT_ID por el ID del proyecto en el que realizas la implementación.
  • REGION por la región en la que realizas la implementación. Debes especificar una región que admita GPU.
  • PORT por el puerto al que se envían las solicitudes. Ten en cuenta que el puerto predeterminado es 8080
  • IMAGE_URL por una referencia a la imagen del contenedor, como us-docker.pkg.dev/cloudrun/container/hello:latest Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL tiene el formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • CPU por la cantidad de CPU. Debes especificar al menos 4 CPU.
  • MEMORY por la cantidad de memoria. Debes especificar al menos 16Gi (16 GiB).
  • GPU_NUMBER con el valor 1 (uno).
  • GPU_TYPE por el tipo de GPU. Debes usar nvidia-l4 (nvidia L4 con "L" minúscula, no el valor numérico catorce).
  • MAX_INSTANCE por la cantidad máxima de instancias. Esta cantidad no puede exceder la cuota de GPU asignada a tu proyecto.

YAML

  1. Si creas un servicio nuevo, omite este paso. Si actualizas un servicio existente, descarga su configuración de YAML:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Actualiza los atributos nvidia.com/gpu: y nodeSelector:
    run.googleapis.com/accelerator:
    :

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
      annotations:
        run.googleapis.com/launch-stage: BETA
    spec:
      template:
        metadata:
          annotations:
            autoscaling.knative.dev/maxScale: 'MAX_INSTANCE'
            run.googleapis.com/cpu-throttling: 'false'
        spec:
          containers:
          - image: IMAGE_URL
            ports:
            - containerPort: CONTAINER_PORT
              name: http1
            resources:
              limits:
                cpu: 'CPU'
                memory: 'MEMORY'
                nvidia.com/gpu: 'GPU_NUMBER'
            # Optional: use a longer startup probe to allow long starting containers
            startupProbe:
              failureThreshold: 1800
              periodSeconds: 1
              tcpSocket:
                port: CONTAINER_PORT
              timeoutSeconds: 1
          nodeSelector:
            run.googleapis.com/accelerator: GPU_TYPE

    Reemplaza lo siguiente:

    • SERVICE por el nombre del servicio de Cloud Run
    • IMAGE_URL por una referencia a la imagen del contenedor, como us-docker.pkg.dev/cloudrun/container/hello:latest Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL tiene el formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • CONTAINER_PORT por el puerto del contenedor configurado para el servicio.
    • CPU por la cantidad de CPU. Debes especificar al menos 4 CPU.
    • MEMORY por la cantidad de memoria. Debes especificar al menos 16Gi (16 GiB).
    • GPU_NUMBER por el valor 1 (uno) porque solo se admite adjuntar una GPU por instancia de Cloud Run.
    • GPU_TYPE con el valor nvidia-l4 (nvidia-L4 con "L" minúscula, no el valor numérico catorce).
    • MAX_INSTANCE por la cantidad máxima de instancias. Esta cantidad no puede exceder la cuota de GPU asignada a tu proyecto.
  3. Crea o actualiza el servicio con el siguiente comando:

    gcloud run services replace service.yaml

Visualiza la configuración de GPU

Para ver la configuración actual de GPU de tu servicio de Cloud Run, sigue estos pasos:

Console

  1. En la consola de Google Cloud ve a Cloud Run:

    Ir a Cloud Run

  2. Haz clic en el servicio que te interesa para abrir la página Detalles del servicio.

  3. Haz clic en la pestaña Revisiones.

  4. En el panel de detalles a la derecha, la configuración de GPU aparece en la pestaña Contenedor.

gcloud

  1. Usa el siguiente comando:

    gcloud run services describe SERVICE
  2. Busca la configuración de GPU en la configuración mostrada.

Cómo quitar GPU

Puedes quitar GPU con la consola de Google Cloud, Google Cloud CLI o YAML.

Console

  1. En la consola de Google Cloud ve a Cloud Run:

    Ir a Cloud Run

  2. Haz clic en Implementar contenedor y selecciona Servicio para configurar un servicio nuevo. Si quieres configurar un servicio existente, haz clic en el servicio y, luego, en implementar y editar la nueva revisión.

  3. Si configuras un servicio nuevo, completa la página de configuración del servicio inicial como desees y haz clic en Contenedores, volúmenes, Herramientas de redes y seguridad para expandir la página de configuración del servicio.

  4. Haz clic en la pestaña Contenedor.

    imagen

    • Desmarca la casilla de verificación GPU.
  5. Haz clic en Crear o Implementar.

gcloud

Para quitar GPU, establece la cantidad de GPUs en 0 con el comando gcloud beta run services update:

  gcloud beta run services update SERVICE --gpu 0
  

SERVICE por el nombre de tu servicio de Cloud Run.

YAML

  1. Si creas un servicio nuevo, omite este paso. Si actualizas un servicio existente, descarga su configuración de YAML:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Borra las líneas nvidia.com/gpu: y nodeSelector: run.googleapis.com/accelerator: nvidia-l4.

  3. Crea o actualiza el servicio con el siguiente comando:

    gcloud run services replace service.yaml

Bibliotecas

De forma predeterminada, se activan todas las bibliotecas de controladores de NIVIDIA L4 en /usr/local/nvidia/lib64.

Si tu servicio no puede encontrar las bibliotecas proporcionadas, actualiza la ruta de búsqueda del vinculador dinámico. Para ello, agrega la línea ENV LD_LIBRARY_PATH /usr/local/nvidia/lib64:${LD_LIBRARY_PATH} a tu Dockerfile.

Ten en cuenta que también puedes configurar LD_LIBRARY_PATH como una variable de entorno para el servicio de Cloud Run si tienes una imagen existente y no deseas volver a compilarla con un Dockerfile actualizado.

Si quieres usar una versión de CUDA superior a 12.2, la forma más fácil es depender de una imagen base de NVIDIA más reciente con paquetes de retrocompatibilidad ya instalados. Otra opción es instalar manualmente los paquetes de compatibilidad con versiones anteriores de NVIDIA y agregarlos a LD_LIBRARY_PATH. Consulta la matriz de compatibilidad de NVIDIA para determinar qué versiones de CUDA son retrocompatibles con la versión del controlador de NVIDIA proporcionada (535.129.03).

Acerca de las GPUs y la cantidad máxima de instancias

La cantidad de instancias con GPUs está limitada de dos maneras: