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
us-central1
(Iowa) Bajo nivel de CO2asia-southeast1
(Singapur)
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:
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Run API.
- 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. - 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.
- Asegúrate de que tu servicio de Cloud Run tenga la siguiente configuración:
- La CPU debe estar configurada en La CPU siempre está asignada. Ten en cuenta que los servicios de CPU siempre asignados aún pueden reducir la escala verticalmente a cero.
- Configura un mínimo de 4 CPU para tu servicio, con 8 CPU recomendadas.
- Configura un mínimo de 16 GiB de memoria, con 32 GiB recomendados.
- Determina y establece una simultaneidad máxima óptima para el uso de GPU.
- La cantidad máxima de instancias debe establecerse en un número inferior a la cuota por proyecto y por región permitida para la GPU. Consulta Acerca de las GPUs y las instancias máximas.
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:
-
Desarrollador de Cloud Run (
roles/run.developer
) en el servicio de Cloud Run -
Usuario de la cuenta de servicio (
roles/iam.serviceAccountUser
) en la identidad del servicio
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
En la consola de Google Cloud ve a Cloud Run:
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.
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.
Haz clic en la pestaña Contenedor.
- 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.
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 formatoLOCATION-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
(nvidiaL
4 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
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
Actualiza los atributos
nvidia.com/gpu:
ynodeSelector:
:
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 formatoLOCATION-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-L
4 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.
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
En la consola de Google Cloud ve a Cloud Run:
Haz clic en el servicio que te interesa para abrir la página Detalles del servicio.
Haz clic en la pestaña Revisiones.
En el panel de detalles a la derecha, la configuración de GPU aparece en la pestaña Contenedor.
gcloud
Usa el siguiente comando:
gcloud run services describe SERVICE
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
En la consola de Google Cloud ve a Cloud Run:
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.
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.
Haz clic en la pestaña Contenedor.
- Desmarca la casilla de verificación GPU.
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
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
Borra las líneas
nvidia.com/gpu:
ynodeSelector: run.googleapis.com/accelerator: nvidia-l4
.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:
- La configuración Cantidad máxima de instancias limita la cantidad de instancias por servicio. No se puede establecer un valor superior a la cuota por proyecto y por región para GPU.
- Es la cuota de GPUs permitida por proyecto y por región. Esto limita la cantidad de instancias entre servicios de la misma región.