Compatibilidad con GPU para servicios

Esta página describe la configuración de la GPU para sus servicios de Cloud Run. Las GPU funcionan bien para cargas de trabajo de inferencia de IA, como modelos de lenguaje grandes (LLM) u otros casos de uso que no son de IA y que requieren mucha computación, como la transcodificación de vídeo y la renderización 3D. Google proporciona GPU NVIDIA RTX PRO 6000 Blackwell con 96 GB de memoria de GPU (VRAM) y GPU NVIDIA L4 con 24 GB de memoria de GPU (VRAM), que es independiente de la memoria de la instancia.

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 Cloud Run que se haya configurado para usar la GPU pueden reducir su escala a cero para ahorrar costes cuando no estén en uso.

Las instancias de Cloud Run con una GPU NVIDIA RTX PRO 6000 Blackwell o 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.

Tipos de GPU compatibles

Cloud Run admite dos tipos de GPUs:

  • GPU NVIDIA RTX PRO 6000 Blackwell con la versión actual del controlador NVIDIA: 580.xx (13.0). Para la GPU NVIDIA RTX PRO 6000 Blackwell, debe utilizar un mínimo de 20 GB de CPU y 80 GB de memoria.
  • GPU L4 con la versión actual del controlador NVIDIA: 580.xx (13.0). En el caso de las GPU L4, debes usar un mínimo de 4 CPU y 16 GiB de memoria.

Regiones admitidas

Las siguientes regiones son compatibles con la GPU NVIDIA RTX PRO 6000 Blackwell:

La GPU L4 admite las siguientes regiones:

  • asia-southeast1 (Singapur)
  • asia-south1 (Bombay) . Esta región solo está disponible por invitación. Si te interesa esta región, comunícate con tu equipo de Cuentas de Google.
  • europe-west1 (Bélgica) ícono de hoja Bajo nivel de CO2
  • europe-west4 (Países Bajos) ícono de hoja Bajo nivel de CO2
  • us-central1 (Iowa) ícono de hoja Bajo nivel de CO2 . Es posible que el ajuste de recursos adicional en esta región requiera una solicitud de aumento de cuota. Si te interesa esta región, comunícate con tu equipo de Cuentas de Google.
  • us-east4 (Norte de Virginia) . Es posible que el ajuste de recursos adicional en esta región requiera una solicitud de aumento de cuota. Si te interesa esta región, comunícate con tu equipo de Cuentas de Google.

Impacto en los precios

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

  • No se aplican tarifas por solicitud. Debes usar la facturación basada en instancias para usar la función de GPU. Las instancias mínimas se cobran a la tarifa completa, incluso cuando están inactivas.
  • Existe una diferencia en el costo entre la redundancia zonal de GPU y la redundancia no zonal. Consulta los precios de Cloud Run para obtener detalles sobre los precios de las GPU.
  • Cuando implementas un servicio o función de Cloud Run desde el código fuente con GPU habilitadas, Cloud Run utiliza el tipo de máquina e2-highcpu-8, en lugar del tipo de máquina predeterminado e2-standard-2 para compilar tu código fuente. El tipo de máquina más grande proporciona una mayor compatibilidad con la CPU y un mayor ancho de banda de red, lo que genera tiempos de compilación más rápidos.
  • Son las configuraciones de CPU y memoria de tu recurso.
  • La GPU se factura por la duración completa del ciclo de vida de la instancia.

Opciones de redundancia zonal de GPU

De forma predeterminada, Cloud Run implementa tu servicio en varias zonas dentro de una región. Esta arquitectura proporciona resiliencia inherente: si una zona experimenta una interrupción, Cloud Run enruta automáticamente el tráfico fuera de la zona afectada hacia las zonas en buen estado dentro de la misma región.

Al trabajar con recursos de GPU, tenga en cuenta que estos recursos tienen limitaciones de capacidad específicas. Durante una interrupción zonal, el mecanismo de conmutación por error estándar para las cargas de trabajo de GPU se basa en que haya suficiente capacidad de GPU sin usar disponible en las zonas restantes en buen estado. Debido a la naturaleza limitada de las GPUs, es posible que esta capacidad no siempre esté disponible.

Para aumentar la disponibilidad de tus servicios acelerados por GPU durante las interrupciones zonales, puedes configurar la redundancia zonal específicamente para las GPU:

  • Redundancia zonal activada (predeterminada): Cloud Run reserva capacidad de GPU para tu servicio en varias zonas. Esto aumenta significativamente la probabilidad de que tu servicio pueda controlar correctamente el tráfico redireccionado desde una zona afectada, lo que ofrece una mayor confiabilidad durante las fallas zonales con un costo adicional por segundo de GPU.

  • Redundancia zonal desactivada: Cloud Run intenta realizar la conmutación por error para las cargas de trabajo de GPU según el criterio del mejor esfuerzo. El tráfico se enruta a otras zonas solo si hay suficiente capacidad de GPU disponible en ese momento. Esta opción no garantiza la capacidad reservada para situaciones de conmutación por error, pero genera un costo más bajo por segundo de GPU.

ANS

El ANS de Cloud Run con GPU depende de si el servicio usa la opción de redundancia zonal o no zonal. Consulta la página del ANS para obtener más detalles.

Solicita un aumento de la cuota

La cuota para la GPU de Cloud Run nvidia-rtx-pro-6000 se otorga en miliGPUs. Los proyectos que utilicen nvidia-rtx-pro-6000 GPU en una región por primera vez recibirán automáticamente una cuota de 3000 milliGPU (redundancia zonal desactivada) cuando se cree la primera implementación. Esto equivale a 3 GPU. Los proyectos que utilizan por primera vez las GPU de Cloud Run nvidia-l4 en una región reciben automáticamente una cuota de 3 GPU (redundancia zonal desactivada) cuando se crea la primera implementación.

Si necesita GPU adicionales para Cloud Run, debe solicitar un aumento de cuota para su servicio de Cloud Run. Usa los vínculos que se proporcionan en los siguientes botones para solicitar la cuota que necesitas.

Se necesita una cuota Enlace de cuota
GPU NVIDIA RTX PRO 6000 Blackwell con redundancia zonal desactivada (precio más bajo) Solicitar cuota de GPU sin redundancia zonal
GPU NVIDIA RTX PRO 6000 Blackwell con redundancia zonal activada (precio más alto) Solicitar cuota de GPU con redundancia zonal
GPU L4 con redundancia zonal desactivada (precio más bajo) Solicitar cuota de GPU sin redundancia zonal
GPU L4 con redundancia zonal activada (precio más alto) Solicitar cuota de GPU con redundancia zonal

Si deseas obtener más información para solicitar aumentos de cuota, consulta Cómo aumentar la cuota.

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. Accede a tu cuenta de Google Cloud . Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify 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.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. Habilitar la API de Cloud Run

    Roles necesarios para habilitar las APIs

    Para habilitar APIs, necesitas el permiso serviceusage.services.enable. Si creaste el proyecto, es probable que ya tengas este permiso a través del rol de propietario (roles/owner). De lo contrario, puedes obtener este permiso a través del rol de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin). Obtén más información para otorgar roles.

    Habilitar la API

  7. Solicita la cuota requerida.
  8. Consulte Mejores prácticas: Inferencia de IA en Cloud Run con GPU para obtener recomendaciones sobre cómo crear su imagen de 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 necesarios para configurar e implementar los servicios de Cloud Run, pídale a su administrador que le otorgue los siguientes roles de IAM en los servicios:

  • Desarrollador de Cloud Run (roles/run.developer) - el servicio Cloud Run
  • Usuario de la cuenta de servicio (roles/iam.serviceAccountUser): Es la identidad del servicio.

Si está implementando un servicio o una función desde el código fuente, también debe tener roles adicionales otorgados en su proyecto y cuenta de servicio de Cloud Build.

Para obtener una lista de los roles y los permisos de IAM asociados con Cloud Run, consulta los roles de IAM de Cloud Run y los permisos de IAM de Cloud Run. Si su servicio Cloud Run interactúa conGoogle Cloud API, como las bibliotecas de cliente de Cloud, consulte la guía de configuración de identidad de servicio. Para obtener más información sobre cómo otorgar roles, consulta los permisos de implementación y cómo administrar 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 Google Cloud , Google Cloud CLI o YAML para configurar la GPU.

Console

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

    Ir a Cloud Run

  2. Seleccione Servicios en el menú de navegación de Cloud Run y ​​haga clic en Implementar contenedor para configurar un nuevo servicio. Si está configurando un servicio existente, haga clic en el servicio.

  3. Si está configurando un nuevo servicio, complete la página de configuración inicial del servicio y, a continuación, haga clic en Contenedores, Redes, Seguridad para expandir la página de configuración del servicio.

  4. Haz clic en la pestaña Contenedores.

  5. 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.

  6. Marque la casilla GPU y, a continuación, seleccione Tipo de GPU y Número de GPU en los menús correspondientes.

  7. De forma predeterminada, la redundancia zonal está activada para los servicios nuevos. Al seleccionar la casilla de verificación GPU se muestran las opciones de redundancia de GPU.

    1. Para desactivar la redundancia zonal, selecciona Sin redundancia zonal.
    2. Para activar la redundancia zonal, selecciona Redundancia zonal.
  8. Haz clic en Crear para un servicio nuevo. Haz clic en Ver diferencias y volver a implementar y, luego, en Implementar cambios para un servicio existente.

gcloud

Para crear un servicio con la GPU habilitada, usa el comando gcloud run deploy:

  • Para implementar un contenedor, haz lo siguiente:

      gcloud run deploy SERVICE \
          --image IMAGE_URL \
          --gpu 1

    Reemplaza lo siguiente:

    • SERVICE: El nombre de tu servicio de Cloud Run.
    • IMAGE_URL: Una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL sigue el formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • Para implementar a partir del código fuente:

      gcloud run deploy SERVICE \
          --source . \
          --gpu 1

Para actualizar la configuración de la GPU de un servicio, usa el comando gcloud run services update. Por ejemplo, para actualizar un servicio existente que especifica una imagen de contenedor:

  gcloud run services update SERVICE \
      --image IMAGE_URL \
      --cpu CPU \
      --memory MEMORY \
      --no-cpu-throttling \
      --gpu GPU_NUMBER \
     --gpu-type GPU_TYPE \
      --max-instances MAX_INSTANCE
      --GPU_ZONAL_REDUNDANCY
    

Reemplaza lo siguiente:

  • SERVICE: El nombre de tu servicio de Cloud Run.
  • IMAGE_URL: Una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL sigue el formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • CPU: Es la cantidad de CPU. Para la GPU NVIDIA RTX PRO 6000 Blackwell, debes especificar al menos 20 CPU. Para la GPU L4, debe especificar al menos 4 CPU.
  • MEMORY: la cantidad de memoria. En el caso de la GPU NVIDIA RTX PRO 6000 Blackwell, debes especificar al menos 80Gi (80 GiB). Para la GPU L4, debes especificar al menos 16Gi (16 GiB).
  • GPU_NUMBER: El valor 1 (uno). Si no se especifica, pero hay un GPU_TYPE presente, el valor predeterminado es 1.
  • GPU_TYPE es el tipo de GPU. GPU NVIDIA RTX PRO 6000 Blackwell, ingresa nvidia-rtx-pro-6000. Para la GPU L4, ingresa el valor nvidia-l4 (nvidia-L4 con "L" minúscula, no el valor numérico catorce).
  • MAX_INSTANCE: Es la cantidad máxima de instancias. Esta cantidad no puede exceder la cuota de GPU asignada a tu proyecto.
  • GPU_ZONAL_REDUNDANCY: no-gpu-zonal-redundancy para desactivar la redundancia zonal, o gpu-zonal-redundancy para activar la redundancia zonal.

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
    spec:
      template:
        metadata:
          annotations:
            autoscaling.knative.dev/maxScale: 'MAX_INSTANCE'
            run.googleapis.com/cpu-throttling: 'false'
            run.googleapis.com/gpu-zonal-redundancy-disabled: 'GPU_ZONAL_REDUNDANCY'
        spec:
          containers:
          - image: IMAGE_URL
            ports:
            - containerPort: CONTAINER_PORT
              name: http1
            resources:
              limits:
                cpu: 'CPU'
                memory: 'MEMORY'
                nvidia.com/gpu: '1'
            # 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: El nombre de tu servicio de Cloud Run.
    • IMAGE_URL: Una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL sigue el formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • CONTAINER_PORT: el puerto del contenedor configurado para su servicio.
    • CPU: Es la cantidad de CPU. En el caso de la GPU NVIDIA RTX PRO 6000 Blackwell, debes especificar al menos 20 CPU. Para la GPU L4, debes especificar al menos 4 CPU.
    • MEMORY: la cantidad de memoria. En el caso de la GPU NVIDIA RTX PRO 6000 Blackwell, debes especificar al menos 80Gi (80 GiB). Para la GPU L4, debes especificar al menos 16Gi (16 GiB).
    • GPU_TYPE es el tipo de GPU. GPU NVIDIA RTX PRO 6000 Blackwell, ingresa nvidia-rtx-pro-6000. Para la GPU L4, ingresa el valor nvidia-l4 (nvidia-L4 con "L" minúscula, no el valor numérico catorce).
    • MAX_INSTANCE: Es la cantidad máxima de instancias. Este número no puede exceder la cuota de GPU asignada para su proyecto.
    • GPU_ZONAL_REDUNDANCY: false para activar la redundancia zonal de la GPU o true para desactivarla
  3. Crea o actualiza el servicio con el siguiente comando:

    gcloud run services replace service.yaml

    El comando gcloud run services replace usa de forma predeterminada el archivo service.yaml si está presente.

Terraform

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

Agrega lo siguiente a un recurso google_cloud_run_v2_service en tu configuración de Terraform:

resource "google_cloud_run_v2_service" "default" {
  provider = google-beta
  name     = "SERVICE"
  location = "europe-west1"

  template {
    gpu_zonal_redundancy_disabled = "GPU_ZONAL_REDUNDANCY"
    containers {
      image = "IMAGE_URL"
      resources {
        limits = {
          "cpu" = "CPU"
          "memory" = "MEMORY"
          "nvidia.com/gpu" = "1"
        }
      }
    }
    node_selector {
      accelerator = "GPU_TYPE"
    }
  }
}

Reemplaza lo siguiente:

  • SERVICE: El nombre de tu servicio de Cloud Run.
  • GPU_ZONAL_REDUNDANCY: false para activar la redundancia zonal de la GPU o true para desactivarla
  • IMAGE_URL: Una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL sigue el formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • CPU: Es la cantidad de CPU. Para la GPU NVIDIA RTX PRO 6000 Blackwell, debes especificar al menos 20 CPU. Para la GPU L4, debe especificar al menos 4 CPU.
  • MEMORY: la cantidad de memoria. En el caso de la GPU NVIDIA RTX PRO 6000 Blackwell, debes especificar al menos 80Gi (80 GiB). Para la GPU L4, debes especificar al menos 16Gi (16 GiB).
  • GPU_TYPE es el tipo de GPU. Para la GPU NVIDIA RTX PRO 6000 Blackwell, ingresa nvidia-rtx-pro-6000. Para la GPU L4, ingresa el valor nvidia-l4 (nvidia-L4 con "L" minúscula, no el valor numérico catorce).

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 la página Servicios de 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 Contenedores para ver la configuración.

gcloud

  1. Usa el siguiente comando:

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

Quitar GPU

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

Console

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

    Ir a Cloud Run

  2. Selecciona Servicios en el menú de navegación de Cloud Run y haz clic en Implementar contenedor para configurar un servicio nuevo. Si quieres configurar un servicio existente, haz clic en él.

  3. Si está configurando un nuevo servicio, complete la página de configuración inicial del servicio y, a continuación, haga clic en Contenedores, Redes, Seguridad para expandir la página de configuración del servicio.

  4. Haz clic en la pestaña Contenedores.

  5. Anula la selección de la casilla de verificación GPU.

  6. Haz clic en Crear para un servicio nuevo. Haz clic en Ver diferencias y volver a implementar y, luego, en Implementar cambios para un servicio existente.

gcloud

Para eliminar la GPU, establezca el número de GPU en 0 usando el comando gcloud run services update:

  gcloud 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: GPU_TYPE.

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

    gcloud run services replace service.yaml

    El comando gcloud run services replace usa de forma predeterminada el archivo service.yaml si está presente.

Bibliotecas de controladores

Por defecto, todas las bibliotecas de controladores de GPU NVIDIA RTX PRO 6000 Blackwell y NVIDIA L4 se montan en /usr/local/nvidia/lib64. Cloud Run agrega automáticamente esta ruta a la variable de entorno LD_LIBRARY_PATH (es decir, ${LD_LIBRARY_PATH}:/usr/local/nvidia/lib64) del contenedor con la GPU. Esto permite que el vinculador dinámico encuentre las bibliotecas de controladores de NVIDIA. El vinculador busca y resuelve rutas de acceso en el orden en que las enumeras en la variable de entorno LD_LIBRARY_PATH. Todos los valores que especifiques en esta variable tendrán prioridad sobre la ruta de acceso predeterminada de las bibliotecas del controlador de Cloud Run /usr/local/nvidia/lib64.

Si desea utilizar una versión de CUDA superior a 13.0, la forma más sencilla es depender de una imagen base de NVIDIA más reciente con paquetes de compatibilidad con versiones futuras ya instalados. Otra opción es instalar manualmente los paquetes de compatibilidad con versiones futuras de NVIDIA y agregarlos a LD_LIBRARY_PATH. Consulta la matriz de compatibilidad de NVIDIA para determinar qué versiones de CUDA son compatibles con la versión del controlador NVIDIA proporcionada.

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

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

¿Qué sigue?

Consulta Ejecuta la inferencia de IA en Cloud Run con GPUs para ver instructivos.