cloud-run-gpu-image-update-quota-bypass

Par divinevideo · divine-mobile

Corrige les échecs de déploiement Cloud Run sur GPU causés par des erreurs de quota. À utiliser quand : (1) `gcloud run deploy` échoue avec "You do not have quota for using GPUs with zonal redundancy" ET "You do not have quota for using GPUs without zonal redundancy", (2) Le service existe déjà et fonctionne avec un GPU, (3) Vous avez seulement besoin de mettre à jour l'image du conteneur, sans modifier la configuration GPU. Utilise `gcloud run services update --image` à la place de `gcloud run deploy` pour contourner la revalidation du quota sur les services GPU existants.

npx skills add https://github.com/divinevideo/divine-mobile --skill cloud-run-gpu-image-update-quota-bypass

Mise à jour d'image Cloud Run GPU - Contournement de quota

Problème

Lors du déploiement d'images de conteneurs mises à jour vers un service Cloud Run existant avec GPU (par exemple NVIDIA L4), gcloud run deploy échoue avec des erreurs de quota même si le service s'exécute déjà avec un GPU. La vérification des quotas bloque à la fois les configurations de redondance zonale et non-zonale, rendant impossible le déploiement du code mis à jour.

Contexte / Conditions de déclenchement

  • gcloud run deploy retourne :
    metadata.annotations[run.googleapis.com/maxScale]: You do not have quota for
    using GPUs with zonal redundancy.

    Suivi de :

    metadata.annotations[run.googleapis.com/maxScale]: You do not have quota for
    using GPUs without zonal redundancy.
  • Le service GPU existe déjà et dispose d'une révision en cours d'exécution
  • Vous essayez de déployer une image de conteneur mise à jour, pas de modifier la configuration du GPU
  • Le script de déploiement utilise gcloud run deploy avec les flags --gpu

Solution

Au lieu d'utiliser gcloud run deploy (qui revalide tous les quotas de ressources), utilisez gcloud run services update qui met à jour uniquement les champs spécifiés sur le service existant :

# Au lieu de ceci (échoue avec erreur de quota) :
gcloud run deploy divine-transcoder \
  --image gcr.io/PROJECT/divine-transcoder \
  --region us-central1 \
  --gpu 1 --gpu-type nvidia-l4 \
  --cpu 4 --memory 16Gi \
  ...

# Utilisez ceci (met à jour l'image sur le service existant) :
gcloud run services update divine-transcoder \
  --region us-central1 \
  --image gcr.io/PROJECT/divine-transcoder:latest

Différences clés :

  • gcloud run deploy crée un nouveau service ou remplace la configuration complète, déclenchant des vérifications de quotas
  • gcloud run services update --image met à jour uniquement l'image de conteneur sur le service existant, préservant toute la configuration GPU/CPU/mémoire existante sans revalider les quotas

Vérification

# Vérifier que la nouvelle révision est active
gcloud run revisions list --service SERVICE_NAME --region REGION --limit=3

# Vérifier que le service traite le trafic
gcloud run services describe SERVICE_NAME --region REGION --format='value(status.url)'

Exemple

# Construire et pousser l'image mise à jour
docker build --platform linux/amd64 -t gcr.io/my-project/divine-transcoder .
docker push gcr.io/my-project/divine-transcoder

# Mettre à jour uniquement l'image (contourne la revalidation du quota GPU)
gcloud run services update divine-transcoder \
  --region us-central1 \
  --image gcr.io/my-project/divine-transcoder:latest

# Résultat :
# Deploying...
# Creating Revision...done
# Routing traffic...done
# Service [divine-transcoder] revision [divine-transcoder-00010-vf4] has been deployed

Notes

  • Cela ne fonctionne que pour les services existants qui ont déjà un GPU configuré
  • Si vous avez besoin de modifier le type de GPU, le CPU, la mémoire ou d'autres paramètres, vous devrez demander un quota supplémentaire via https://g.co/cloudrun/gpu-quota
  • Les premiers déploiements GPU dans une région obtiennent un quota automatique de 3 GPUs (non-zonal)
  • Les augmentations de quota pour la redondance non-zonale sont accordées plus rapidement que pour la redondance zonale
  • Si les scripts de déploiement utilisent gcloud run deploy, envisagez d'ajouter un fallback vers gcloud run services update --image quand des erreurs de quota sont détectées

Références

Skills similaires