We are at re:Invent 2026Book my merch
Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Ne perdez plus vos GPU pendant les maintenances sur Google Cloud

Sécurisez vos capacités avec les réservations GCP

Cette page est également disponible en English, Deutsch, Español, Italiano, 日本語 et Português.

Oct 15, 20267 min read
Joshua Fox

About Joshua Fox

Senior Cloud Architect II

Joshua Fox has been a software architect in innovative technology companies for 20 years. Now, he advises tech startups and growth companies on architecture and cost optimization for Google Cloud Platform and Amazon Web Services; also publishing articles, and speaking to cloud engineers.

He has a PhD from Harvard University and a BA in math from Brandeis.

My personal page

La demande mondiale de GPU est astronomique. Obtenir des ressources NVIDIA L4, A100 ou H100 sur Google Cloud Platform (GCP) est souvent perçu comme une belle victoire pour votre équipe d'ingénierie. Pourtant, vous pouvez perdre ces capacités lors d'une maintenance du matériel sous-jacent, ou lorsque vous arrêtez manuellement votre instance pour effectuer des tâches de routine.

L'arrêt de votre VM libère vos ressources, qu'il s'agisse d'un événement de maintenance planifié par Google Cloud ou d'un arrêt déclenché par l'utilisateur pour mettre à jour un driver, renouveler une image ou modifier les scopes de l'instance. Votre GPU retourne alors dans le pool public, laissant vos entraînements ML critiques ou vos workloads d'inférence en plan. Voici comment verrouiller vos GPU et vous assurer qu'ils survivent aux mises à jour d'infrastructure.

Le problème : le modèle de maintenance des GPU sur GCP

L'une des meilleures fonctionnalités de GCP est la Live Migration, qui déplace de manière transparente les VM en cours d'exécution vers des hôtes sains lors des maintenances d'infrastructure, avec une interruption minimale. Cependant, la Live Migration n'est pas prise en charge pour les VM équipées de GPU.

Le GPU étant physiquement rattaché à l'hôte via PCIe, GCP ne peut pas migrer l'état de la mémoire GPU sur le réseau. Par conséquent, Compute Engine applique la politique de maintenance d'hôte TERMINATE (onHostMaintenance) aux VM équipées de GPU.

Lorsque Google doit corriger ou remplacer le matériel physique qui héberge votre instance :

  1. Compute Engine envoie un préavis pour les événements d'hôte planifiés — généralement une heure (les maintenances d'urgence peuvent laisser moins de temps).
  2. La VM reçoit un signal d'arrêt ACPI et est arrêtée de force.
  3. Si votre VM est configurée avec automaticRestart: true (valeur par défaut), GCP tente automatiquement de la redémarrer sur un autre hôte sain.

Attention au stockage : les données des disques SSD locaux sont éphémères et peuvent être perdues lors d'une terminaison, d'un arrêt manuel ou d'une reprise infructueuse après un événement d'hôte. Stockez les données durables sur Persistent Disk, Hyperdisk ou Cloud Storage, et réservez le SSD local aux caches et aux données temporaires.

Les risques liés aux maintenances déclenchées par l'utilisateur

Au-delà des événements d'hôte planifiés, de nombreuses tâches d'administration courantes exigent un arrêt/démarrage complet de la VM plutôt qu'un simple redémarrage. Par exemple :

  • La mise à jour des drivers NVIDIA ou des toolkits CUDA nécessitant un état hors ligne.
  • La modification d'attributs essentiels de l'instance (changement de comptes de service ou de scopes d'accès, par exemple).
  • Le passage à une nouvelle image machine ou l'application progressive de patchs OS sur un cluster.

Exécuter un simple gcloud compute instances stop rend immédiatement votre matériel au pool de capacité partagé.

Le risque : la loterie des capacités

Lorsque GCP tente de redémarrer votre VM arrêtée (ou lorsque vous lancez un démarrage manuel), elle retourne dans le pool de ressources de la zone et demande un nouveau GPU.

Les GPU étant en situation de pénurie quasi permanente, un démarrage ultérieur peut échouer si aucune capacité n'est disponible. Au lieu de redémarrer, votre VM renverra une erreur ZONE_RESOURCE_POOL_EXHAUSTED ou ZONE_RESOURCE_POOL_EXHAUSTED_WITH_DETAILS.

Votre VM restera à l'état TERMINATED. Vous avez officiellement perdu votre GPU, et vous devrez faire la queue comme tout le monde — en tentant de démarrer l'instance encore et encore jusqu'à ce que des capacités se libèrent. Disposer d'un quota de projet suffisant ne vous suffira pas : ce n'est pas la même chose que la disponibilité de capacités physiques dans une zone donnée. Le quota est une limite maximale imposée par Google, tandis que la capacité dépend de l'occupation des ressources existantes par les autres utilisateurs.

La solution : des réservations zonales avec correspondance matérielle exacte

La solution qui empêche votre GPU de retourner dans le pool public lors d'un redémarrage, ce sont les réservations Compute Engine.

Une réservation dans GCP offre une véritable garantie de capacité. Lorsque votre VM est arrêtée pour maintenance, elle libère le matériel physique qu'elle occupait, mais votre réservation de capacité récupère immédiatement la place libérée et conserve l'allocation pour votre projet. Lorsque Compute Engine redémarre automatiquement la VM ou que vous la relancez manuellement, celle-ci consomme simplement votre réservation dédiée.

Les réservations GCP sont très spécifiques :

Dans ce scénario, la réservation sert à conserver vos ressources existantes. Si vous n'utilisez pas encore le GPU, la création de la réservation peut échouer ; ce n'est qu'une fois la ressource disponible que la réservation sera créée avec succès.

Cloud bill shouldn't be a mystery

One platform for AI and Cloud optimization.

Restrictions importantes et cas particuliers

Si les réservations constituent la défense standard contre la perte de capacités, vous devez tenir compte de certaines règles architecturales propres à GCP :

  • Configurations GPU restreintes : en raison de contraintes d'approvisionnement extrêmes, certaines configurations GPU récentes ou très demandées ne peuvent pas être réservées via les réservations de capacité à la demande standard. Par exemple, les configurations A4X Max, A3 Ultra et A3 High comptant moins de huit GPU font actuellement l'objet de restrictions. Vérifiez toujours l'éligibilité à la réservation dans la documentation GCP.
  • VM Spot et CUD : les réservations protègent les workloads de VM standard. Elles ne protègent pas les VM Spot, qui ne peuvent pas consommer de réservations et sont préemptibles par nature.
  • CUD : les remises sur engagement d'utilisation (Committed Use Discounts) influent sur la tarification ; elles ne réservent pas de capacité en elles-mêmes. Notez que les CUD sont facturées pour les VM, mais aussi pour les réservations inactives.
  • Intégration GKE : les réservations Compute Engine peuvent protéger les capacités GPU utilisées par Google Kubernetes Engine (GKE). Dans GKE Standard, configurez le pool de nœuds avec une affinité de réservation. Dans GKE Autopilot, vous devez sélectionner explicitement une réservation ou configurer une ComputeClass personnalisée prise en charge.

Comment mettre en œuvre des réservations GPU pour vos maintenances

L'approche la plus sûre pour éviter toute dérive de configuration consiste à définir la VM une seule fois dans un modèle d'instance et à créer la réservation à partir de ce modèle. Par défaut, les réservations sont définies sur "Consume automatically" (consommation automatique). Toute VM créée dans votre projet qui correspond exactement aux spécifications de la réservation la consommera automatiquement.

1. Créez la réservation

Si vous effectuez une maintenance progressive sur un cluster (comme l'application de patchs OS nœud par nœud), inutile de réserver des capacités pour l'ensemble du parc. Dimensionnez votre réservation sur le nombre exact d'instances que vous prévoyez d'arrêter simultanément. Par exemple, si vous drainez et mettez à jour deux nœuds à la fois, définissez --vm-count sur 2 pour récupérer ces instances précises lors de leur redémarrage.

Vous pouvez provisionner la réservation à partir d'un modèle d'instance afin de garantir une correspondance exacte en ligne de commande :

Terminal window
gcloud compute reservations create gpu-maintenance-reservation \
--project=my-project-id \
--source-instance-template=projects/my-project-id/global/instanceTemplates/my-gpu-template \
--vm-count=1 \
--zone=us-central1-c

Vous pouvez également définir la réservation directement :

Terminal window
gcloud compute reservations create reservation-v100 \
--project=joshua-playground \
--zone=us-east1-c \
--machine-type=n1-standard-1 \
--accelerator=count=1,type=nvidia-tesla-v100 \
--vm-count=1 \
--require-specific-reservation=false

Et bien entendu, tout cela est également possible depuis la console Google Cloud.

Écran de création de réservation dans la console Google Cloud

2. Déployez votre VM et vérifiez la consommation

Comme --require-specific-reservation est défini sur false, vous n'avez pas besoin de modifier vos scripts de déploiement de VM. Tant que vous lancez une instance correspondant exactement dans la même zone, GCP placera automatiquement la VM dans vos capacités réservées.

Pour confirmer que le nombre attendu d'instances consomme bien les emplacements réservés, consultez les métriques de réservation dans la console Google Cloud. Vous pouvez afficher les réservations en cours dans Compute Engine > Réservations, ou consulter l'historique d'utilisation dans Google Cloud Monitoring, à l'aide des métriques compute.googleapis.com/reservation/used et compute.googleapis.com/reservation/reserved.

3. Supprimez votre réservation

Contrairement aux VM standard, les réservations de capacité doivent être explicitement supprimées lorsque vous n'en avez plus besoin. Si vous retirez définitivement votre workload et supprimez la VM, mais oubliez de supprimer la réservation, vous continuerez à payer la capacité GPU vide au plein tarif à la demande ; et les CUD seront facturées.

Une fois la réservation devenue inutile, supprimez-la en ligne de commande :

Terminal window
gcloud compute reservations delete gpu-maintenance-reservation \
--project=my-project-id \
--zone=us-central1-c \
--quiet

L'aspect financier

Les réservations dans GCP n'entraînent pas de surcoût, mais vous payez les ressources réservées, qu'elles soient attachées à une VM en cours d'exécution ou inutilisées. Comme vous payez déjà la VM GPU active, l'adosser à une réservation est neutre sur le plan financier. Vous ne payez des coûts d'inactivité que pendant les quelques minutes où la VM redémarre lors d'une maintenance, ce qui en fait une assurance peu coûteuse contre la perte de votre matériel.

Pour vérifier précisément combien vous avez payé pour la capacité réservée pendant que vos instances étaient arrêtées, vous pouvez utiliser DoiT Cloud Analytics. Filtrez vos rapports sur le SKU compute.googleapis.com/reservation pour auditer le coût exact de la capacité garantie pendant votre période d'indisponibilité.

En utilisant les réservations GCP, la disponibilité du matériel cesse d'être une loterie pour devenir une garantie prévisible. Comme les réservations ne coûtent rien de plus que votre compute sous-jacent, ne pas protéger vos instances GPU critiques par une réservation est un risque inutile. Provisionnez exactement les capacités dont vous avez besoin dans votre zone cible, déployez à partir d'un modèle d'instance correspondant, et assurez-vous que les redémarrages de routine ou les maintenances inévitables de Google ne laissent jamais vos workloads en plan.