En esta página, se describe la configuración de GPU para tus trabajos de Cloud Run. Las GPUs funcionan bien para cargas de trabajo de IA, como el entrenamiento de modelos de lenguaje grandes (LLM) con tus frameworks preferidos, la realización de inferencias por lotes o sin conexión en LLM y el manejo de otras tareas con gran demanda de procesamiento, como el procesamiento de videos y la renderización de gráficos como trabajos en segundo plano. Google proporciona 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 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
asia-southeast1
(Singapur)asia-south1
(Bombay) . Esta región solo está disponible con invitación. Comunícate con tu equipo de Cuentas de Google si te interesa esta región.europe-west1
(Bélgica)Bajo nivel de CO2
europe-west4
(Países Bajos)Bajo nivel de CO2
us-central1
(Iowa)Bajo nivel de CO2
us-east4
(Virginia del Norte)
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.216.03 (CUDA 12.2)
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:
- Las GPU para trabajos siguen los precios sin redundancia zonal (en versión preliminar).
- 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.
Redundancia no zonal de GPU
Los trabajos de Cloud Run proporcionan compatibilidad con redundancia no zonal (en versión preliminar) para las instancias habilitadas para GPU. Cuando se habilita la redundancia no zonal, Cloud Run intenta realizar la conmutación por error para los trabajos habilitados para GPU según el criterio del mejor esfuerzo. Cloud Run enruta las ejecuciones de trabajos a otras zonas solo si hay capacidad de GPU suficiente 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.
Solicita un aumento de la cuota
Si tu proyecto no tiene cuota de GPU, implementa un servicio de Cloud Run para recibir automáticamente una concesión de 3 cuotas de GPU de nvidia-l4
(redundancia zonal desactivada) para esa región. Ten en cuenta que esta concesión automática de cuota está sujeta a disponibilidad según tu capacidad de CPU y memoria. Cuando borras el servicio que no usas, la cuota asignada no cambia.
Si necesitas más GPUs de Cloud Run para trabajos, solicita un aumento de cuota.
La cantidad máxima de instancias de trabajos de GPU (tareas) que se pueden ejecutar en paralelo está limitada por las siguientes cuotas:
Es la cuota de instancias de GPU de trabajos sin redundancia zonal. De forma predeterminada, esta cuota se establece en
5
.
El valor de paralelismo debe ser inferior a la cuota de GPU sin redundancia zonal o a la cuota de instancias de GPU de los trabajos sin redundancia zonal, según la cuota más restrictiva.
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.
- Consulta Prácticas recomendadas: Trabajos de Cloud Run con GPUs para optimizar el rendimiento cuando uses trabajos de Cloud Run con GPU.
Roles obligatorios
Para obtener los permisos que necesitas para configurar los trabajos de Cloud Run, pídele a tu administrador que te otorgue los siguientes roles de IAM en los trabajos:
-
Desarrollador de Cloud Run (
roles/run.developer
): El trabajo de Cloud Run -
Usuario de la cuenta de servicio (
roles/iam.serviceAccountUser
): Es la identidad del servicio.
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 tu trabajo de Cloud Run interactúa con las APIs deGoogle Cloud , como las bibliotecas cliente de Cloud, consulta la guía de configuración de identidades del servicio. Para obtener más información sobre cómo otorgar roles, consulta permisos de implementación y administra el acceso.
Configura un trabajo de Cloud Run con GPU
Puedes usar la Google Cloud consola, Google Cloud CLI o YAML para configurar la GPU.
gcloud
Para crear un trabajo con la GPU habilitada, usa el comando gcloud beta run jobs create:
gcloud beta run jobs create JOB_NAME --image=IMAGE --gpu=1
Reemplaza lo siguiente:
- JOB_NAME por el nombre del trabajo de Cloud Run.
- IMAGE_URL por una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/job:latest
.
Para actualizar la configuración de la GPU de un trabajo, usa el comando gcloud beta run jobs update:
gcloud beta run jobs update JOB_NAME \ --image IMAGE_URL \ --cpu CPU \ --memory MEMORY \ --gpu GPU_NUMBER \ --gpu-type GPU_TYPE \ --parallelism PARALLELISM
Reemplaza lo siguiente:
- JOB_NAME por el nombre del trabajo de Cloud Run.
- IMAGE_URL por una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/job:latest
. - CPU con un mínimo de
4
CPU para tu trabajo. El valor recomendado es8
. - MEMORY con un mínimo de
16Gi
(16 GiB). El valor recomendado es32Gi
. - GPU_NUMBER con el valor
1
(uno). Si no se especifica, pero hay un GPU_TYPE presente, el valor predeterminado es1
. - GPU_TYPE por el tipo de GPU. Si no se especifica, pero hay un GPU_NUMBER, el valor predeterminado es
nvidia-l4
(nvidiaL
4 con "L" minúscula, no el valor numérico catorce). - PARALLELISM con un valor entero inferior al valor más bajo de los límites de cuota aplicables que asignaste a tu proyecto.
YAML
Si creas un trabajo nuevo, omite este paso. Si actualizas un trabajo existente, descarga su configuración de YAML:
gcloud run jobs describe JOB_NAME --format export > job.yaml
Actualiza los atributos
nvidia.com/gpu
,annotations: run.googleapis.com/launch-stage
para la etapa de lanzamiento ynodeSelector:
:
run.googleapis.com/acceleratorapiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB_NAME labels: cloud.googleapis.com/location: REGION annotations: run.googleapis.com/launch-stage: BETA spec: template: spec: template: spec: containers: - image: IMAGE_URL limits: cpu: 'CPU' memory: 'MEMORY' nvidia.com/gpu: 'GPU_NUMBER' nodeSelector: run.googleapis.com/accelerator: GPU_TYPE
Reemplaza lo siguiente:
- JOB_NAME por el nombre del trabajo de Cloud Run.
- IMAGE_URL por una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/job:latest
- 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).
Crea o actualiza el servicio con el siguiente comando:
gcloud run jobs replace job.yaml
Visualiza la configuración de GPU
Para ver la configuración actual de la GPU de tu trabajo de Cloud Run, sigue estos pasos:
gcloud
Usa el siguiente comando:
gcloud run jobs describe JOB_NAME
Busca la configuración de GPU en la configuración mostrada.
Cómo quitar la GPU
Puedes quitar la GPU con Google Cloud CLI o YAML.
gcloud
Para quitar la GPU, establece la cantidad de GPUs en 0
con el comando gcloud beta run jobs update:
gcloud beta run jobs update JOB_NAME --gpu 0
Reemplaza JOB_NAME por el nombre de tu trabajo de Cloud Run.
YAML
Si creas un trabajo nuevo, omite este paso. Si actualizas un trabajo existente, descarga su configuración de YAML:
gcloud run jobs describe JOB_NAME --format export > job.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 jobs replace job.yaml
Bibliotecas
De forma predeterminada, se activan todas las bibliotecas de controladores de NIVIDIA L4 en /usr/local/nvidia/lib64
. Cloud Run agrega automáticamente esta ruta de acceso 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
. 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 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 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 (535.216.03).
Acerca de las GPUs y el paralelismo
Si ejecutas tareas paralelas en la ejecución de un trabajo, determina y establece el valor de paralelismo en un valor inferior al valor más bajo de los límites de cuota aplicables que asignaste a tu proyecto.
De forma predeterminada, la cuota de instancias de trabajos de GPU se establece en 5
para las tareas que se ejecutan en paralelo. Para solicitar un aumento de la cuota, consulta Cómo aumentar la cuota. Las tareas de GPU se inician lo más rápido posible y alcanzan un máximo que varía según la cuota de GPU que asignaste al proyecto y la región seleccionada. Las implementaciones de Cloud Run fallan si estableces el paralelismo en un valor superior al límite de la cuota de GPU.
Para calcular la cuota de GPU que usa tu trabajo por ejecución, multiplica la cantidad de GPUs por tarea del trabajo por el valor de paralelismo. Por ejemplo, si tienes una cuota de GPU de 10 y
implementas tu trabajo de Cloud Run con --gpu=1
, --parallelism=10
, tu
trabajo consumirá toda la cuota de GPU de 10. Como alternativa, si realizas la implementación con --gpu=1
, --parallelism=20
, las implementaciones fallarán.
Para obtener más información, consulta Prácticas recomendadas: Trabajos de Cloud Run con GPUs.