Configurer des GPU pour les tâches Cloud Run

Cette page décrit la configuration des GPU pour vos jobs Cloud Run. Les GPU fonctionnent bien pour les charges de travail d'IA telles que l'entraînement de grands modèles de langage (LLM) à l'aide de vos frameworks préférés, l'exécution d'inférences par lot ou hors connexion sur les LLM, et la gestion d'autres tâches gourmandes en ressources de calcul comme le traitement vidéo et le rendu graphique en tant que tâches en arrière-plan. Google fournit des GPU NVIDIA L4 avec 24 Go de mémoire GPU (VRAM), qui est séparée de la mémoire de l'instance.

La fonctionnalité GPU sur Cloud Run est entièrement gérée, sans nécessiter de pilotes ni de bibliothèques supplémentaires. La fonctionnalité GPU offre une disponibilité à la demande sans réservation, comme le fonctionnement des CPU à la demande et de la mémoire à la demande dans Cloud Run.

Les instances Cloud Run avec un GPU L4 associé et des pilotes préinstallés démarrent en cinq secondes environ. Les processus s'exécutant dans votre conteneur peuvent alors commencer à utiliser le GPU.

Vous pouvez configurer un GPU par instance Cloud Run. Si vous utilisez des conteneurs side-car, notez que le GPU ne peut être associé qu'à un seul conteneur.

Régions où le service est disponible

Types de GPU compatibles

Vous pouvez utiliser un GPU L4 par instance Cloud Run. Un GPU L4 dispose des pilotes préinstallés suivants :

  • Version actuelle du pilote NVIDIA : 535.216.03 (CUDA 12.2)

Impact sur les tarifs

Pour en savoir plus sur les tarifs des GPU, consultez Tarifs de Cloud Run. Notez les exigences et considérations suivantes :

  • Les GPU pour les jobs suivent les tarifs sans redondance zonale (en preview).
  • Vous devez utiliser au moins quatre processeurs et 16 Gio de mémoire.
  • Le GPU est facturé pendant toute la durée de vie de l'instance.

Redondance non zonale des GPU

Les jobs Cloud Run offrent une compatibilité avec la redondance non zonale (en preview) pour les instances compatibles avec les GPU. Lorsque la redondance non zonale est activée, Cloud Run tente le basculement pour les jobs compatibles avec les GPU dans la mesure du possible. Cloud Run n'achemine les exécutions de jobs vers d'autres zones que si la capacité de GPU est suffisante à ce moment-là. Cette option ne garantit pas la capacité réservée pour les scénarios de basculement, mais entraîne un coût par seconde et par GPU plus faible.

Demander une augmentation du quota

Si votre projet ne dispose pas de quota de GPU, déployez un service Cloud Run pour recevoir automatiquement un quota de trois nvidia-l4 GPU (redondance zonale désactivée) pour cette région. Notez que cette attribution automatique de quota est soumise à disponibilité en fonction de votre capacité de processeur et de mémoire. Lorsque vous supprimez votre service inutilisé, le quota alloué reste inchangé.

Si vous avez besoin de GPU Cloud Run supplémentaires pour les jobs, demandez une augmentation de quota.

Le nombre maximal d'instances de tâches de GPU pouvant s'exécuter en parallèle est limité par les quotas suivants :

La valeur de parallélisme doit être inférieure au quota de GPU sans redondance zonale ou au quota d'instances de GPU des jobs sans redondance zonale, selon le quota le plus restrictif.

Avant de commencer

La liste suivante décrit les exigences et les limites liées à l'utilisation des GPU dans 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. Consultez Bonnes pratiques : jobs Cloud Run avec des GPU pour optimiser les performances lorsque vous utilisez des jobs Cloud Run avec des GPU.

Rôles requis

Pour obtenir les autorisations nécessaires pour configurer des jobs Cloud Run, demandez à votre administrateur de vous accorder les rôles IAM suivants sur les jobs :

  • Développeur Cloud Run (roles/run.developer) : le job Cloud Run
  • Utilisateur du compte de service (roles/iam.serviceAccountUser) : l'identité du service

Pour obtenir la liste des rôles et des autorisations IAM associés à Cloud Run, consultez les sections Rôles IAM Cloud Run et Autorisations IAM Cloud Run. Si votre job Cloud Run communique avec des APIGoogle Cloud , telles que des bibliothèques clientes Cloud, consultez le guide de configuration de l'identité du service. Pour en savoir plus sur l'attribution de rôles, consultez les pages Autorisations de déploiement et Gérer les accès.

Configurer un job Cloud Run avec un GPU

Vous pouvez utiliser la console Google Cloud , Google Cloud CLI ou YAML pour configurer le GPU.

gcloud

Pour créer un job avec la fonctionnalité GPU activée, utilisez la commande gcloud beta run jobs create :

gcloud beta run jobs create JOB_NAME --image=IMAGE --gpu=1

Remplacez :

  • JOB_NAME par le nom de votre tâche Cloud Run
  • IMAGE_URL par une référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/job:latest.

Pour mettre à jour la configuration GPU d'un job, utilisez la commande 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

Remplacez :

  • JOB_NAME par le nom de votre tâche Cloud Run
  • IMAGE_URL par une référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/job:latest.
  • CPU avec un minimum de 4 processeurs pour votre job. La valeur recommandée est 8.
  • MEMORY avec un minimum de 16Gi (16 Gio). La valeur recommandée est 32Gi.
  • GPU_NUMBER par la valeur 1 (un). Si cette valeur n'est pas spécifiée, mais qu'un paramètre GPU_TYPE est présent, la valeur par défaut est 1.
  • GPU_TYPE par le type de GPU. Si cette valeur n'est pas spécifiée, mais qu'un paramètre GPU_NUMBER est présent, la valeur par défaut est nvidia-l4 (nvidia L 4 L minuscule, et non la valeur numérique quatorze).
  • PARALLELISM avec une valeur entière inférieure à la valeur la plus basse des limites de quota applicables que vous avez attribuées à votre projet.

YAML

  1. Si vous créez un job, ignorez cette étape. Si vous mettez à jour un job existant, téléchargez sa configuration YAML :

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Mettez à jour l'attribut nvidia.com/gpu, annotations: run.googleapis.com/launch-stage pour la phase de lancement et nodeSelector:
    run.googleapis.com/accelerator
     :

    apiVersion: 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

    Remplacez :

    • JOB_NAME par le nom de votre tâche Cloud Run
    • IMAGE_URL par une référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/job:latest
    • CPU par le nombre de processeurs. Vous devez spécifier au moins 4 processeurs.
    • MEMORY par la quantité de mémoire. Vous devez spécifier au moins 16Gi (16 Gio).
    • GPU_NUMBER par la valeur 1 (un), car nous n'acceptons qu'un seul GPU par instance Cloud Run.
    • GPU_TYPE par la valeur nvidia-l4 (nvidia-L4 L minuscule, et non la valeur numérique 14).
  3. Créez ou mettez à jour le job à l'aide de la commande suivante :

    gcloud run jobs replace job.yaml

Afficher les paramètres du GPU

Pour afficher les paramètres actuels de GPU de votre job Cloud Run :

gcloud

  1. Exécutez la commande suivante :

    gcloud run jobs describe JOB_NAME
  2. Recherchez le paramètre de GPU dans la configuration renvoyée.

Supprimer un GPU

Vous pouvez supprimer un GPU à l'aide de Google Cloud CLI ou de YAML.

gcloud

Pour supprimer le GPU, définissez le nombre de GPU sur 0 à l'aide de la commande gcloud beta run jobs update :

  gcloud beta run jobs update JOB_NAME --gpu 0
  

Remplacez JOB_NAME par le nom de votre job Cloud Run.

YAML

  1. Si vous créez un job, ignorez cette étape. Si vous mettez à jour un job existant, téléchargez sa configuration YAML :

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Supprimez les lignes nvidia.com/gpu: et nodeSelector: run.googleapis.com/accelerator: nvidia-l4.

  3. Créez ou mettez à jour le job à l'aide de la commande suivante :

    gcloud run jobs replace job.yaml

Bibliothèques

Par défaut, toutes les bibliothèques de pilotes NVIDIA L4 sont installées sous /usr/local/nvidia/lib64. Cloud Run ajoute automatiquement ce chemin d'accès à la variable d'environnement LD_LIBRARY_PATH (c'est-à-dire ${LD_LIBRARY_PATH}:/usr/local/nvidia/lib64) du conteneur avec le GPU. Cela permet à l'éditeur de lien dynamique de trouver les bibliothèques de pilotes NVIDIA. L'éditeur de liens recherche et résout les chemins d'accès dans l'ordre dans lequel vous les listez dans la variable d'environnement LD_LIBRARY_PATH. Toutes les valeurs que vous spécifiez dans cette variable sont prioritaires par rapport au chemin d'accès par défaut aux bibliothèques de pilotes Cloud Run /usr/local/nvidia/lib64.

Si vous souhaitez utiliser une version de CUDA supérieure à 12.2, la méthode la plus simple consiste à dépendre d'une image de base NVIDIA plus récente avec les packages de compatibilité ascendante déjà installés. Vous pouvez également installer manuellement les packages de compatibilité ascendante NVIDIA et les ajouter à LD_LIBRARY_PATH. Consultez la matrice de compatibilité de NVIDIA pour déterminer quelles versions de CUDA sont compatibles de manière ascendante avec la version du pilote NVIDIA fournie (535.216.03).

À propos des GPU et du parallélisme

Si vous exécutez des tâches parallèles dans une exécution de job, déterminez et définissez la valeur parallelism sur une valeur inférieure à la valeur la plus basse des limites de quota applicables que vous avez allouées à votre projet. Par défaut, le quota d'instances de tâches GPU est défini sur 5 pour les tâches qui s'exécutent en parallèle. Pour demander une augmentation de quota, consultez Augmenter le quota. Les tâches de GPU démarrent le plus rapidement possible et atteignent un maximum qui varie en fonction du quota de GPU que vous avez alloué au projet et à la région sélectionnés. Les déploiements Cloud Run échouent si vous définissez le parallélisme sur une valeur supérieure à la limite du quota de GPU.

Pour calculer le quota de GPU utilisé par votre job par exécution, multipliez le nombre de GPU par tâche de job par la valeur de parallélisme. Par exemple, si votre quota de GPU est de 10 et que vous déployez votre job Cloud Run avec --gpu=1, --parallelism=10, votre job consomme la totalité du quota de 10 GPU. Si vous effectuez le déploiement avec --gpu=1, --parallelism=20, les déploiements échouent.

Pour en savoir plus, consultez Bonnes pratiques : jobs Cloud Run avec GPU.