À propos de la flexibilité des instances pour les VM créées de manière groupée

Lorsque vous créez des machines virtuelles (VM) de manière groupée dans une région à l'aide de Compute Engine, si votre application n'est pas limitée à un seul type de machine, vous pouvez augmenter le taux de réussite du provisionnement du nombre de VM requis en configurant la flexibilité des instances. La flexibilité des instances vous permet de spécifier un ou plusieurs types de machines adaptés à votre charge de travail. Compute Engine provisionne ensuite les VM à l'aide d'un ou de plusieurs de ces types de machines, en fonction de la capacité et des quotas disponibles. Une seule requête d'insertion groupée peut créer des VM de plusieurs types de machines différents.

La flexibilité des instances vous aide à maximiser la disponibilité des ressources lors des pics de demande, à améliorer le rapport prix/performances et à adopter en toute sécurité le matériel le plus récent. Pour en savoir plus, consultez Optimiser le provisionnement du calcul.

Ce document décrit le fonctionnement de la flexibilité des instances pour les VM créées de manière groupée, y compris les remplacements de propriétés d'instance pour la plate-forme CPU minimale et les disques, ainsi que les limites. Pour en savoir plus sur la configuration de la flexibilité des instances, consultez Créer des VM de manière groupée avec la flexibilité des instances.

Utiliser la flexibilité des instances

Pour configurer la flexibilité des instances, vous listez les types de machines appropriés en définissant une ou plusieurs sélections d'instances dans votre requête d'insertion groupée régionale. Par exemple, dans une requête REST, vous incluez l'objet instanceFlexibilityPolicy, dans lequel vous définissez un ou plusieurs objets instanceSelections, chacun contenant une liste de types de machines.

Vous pouvez également spécifier des types de machines qui s'exécutent sur différentes plates-formes de processeur ou qui ont des exigences de disque différentes. Pour utiliser des types de machines avec des exigences matérielles différentes, utilisez une sélection d'instances pour remplacer les propriétés correspondantes des propriétés d'instance de la requête (instanceProperties). Pour en savoir plus, consultez Remplacements de propriétés d'instance dans les sélections d'instances.

Lorsque Compute Engine reçoit la requête, il valide d'abord les types de machines et leur compatibilité zonale, en excluant les entrées non valides. Si au moins une configuration valide existe, l'opération se poursuit.

Compute Engine tente ensuite de provisionner des VM en fonction du matériel, du quota et des réservations disponibles. Si vous configurez des rangs pour vos sélections d'instances, il donne la priorité aux sélections ayant un rang inférieur. Dans chaque rang, Compute Engine prend en compte les réservations inutilisées et les conseils sur les VM Spot pour sélectionner les types de machines présentant une probabilité de préemption plus faible.

Remplacements de propriétés d'instance dans les sélections d'instances

Lorsque vous effectuez une sélection d'instances, vous pouvez spécifier des propriétés d'instance supplémentaires, telles que la plate-forme CPU minimale (minCpuPlatform) et les disques (disks), pour remplacer ou ajouter des propriétés que vous définissez dans les propriétés d'instance de la requête (instanceProperties). Lorsque Compute Engine choisit un type de machine dans une sélection d'instances pour créer des VM, il utilise les propriétés d'instance que vous spécifiez dans cette sélection. Si vous ne spécifiez aucun remplacement pour une sélection d'instances, Compute Engine utilise les propriétés correspondantes de instanceProperties pour les VM qu'il crée à partir de cette sélection.

Le remplacement des propriétés d'instance au niveau de la sélection d'instance vous offre plus de contrôle et de flexibilité lorsque vous utilisez différentes configurations matérielles dans une seule requête d'insertion groupée.

Remplacements de la plate-forme de processeur minimale

Vous pouvez spécifier une plate-forme de processeur minimale (minCpuPlatform) pour les VM que Compute Engine crée à partir des types de machines d'une sélection d'instances. Ce remplacement vous permet de combiner différents types de machines et d'appliquer de manière sélective des plates-formes de processeur minimales. Chaque type de machine d'une sélection d'instances doit être compatible avec la plate-forme de processeur minimale effective, qu'elle soit spécifiée dans la sélection ou héritée de instanceProperties.

Vous pouvez également définir le champ minCpuPlatform sur AUTOMATIC. Ce paramètre remplace la valeur minCpuPlatform dans instanceProperties et permet à Compute Engine d'utiliser n'importe quelle plate-forme de processeur compatible pour les types de machines de la sélection d'instances.

Pour combiner des types de machines où une seule série est compatible avec une plate-forme de processeur spécifique, placez-les dans des sélections d'instances distinctes. Par exemple, les types de machines C4 sont compatibles avec la plate-forme Intel Emerald Rapids, tandis que les types de machines C3 sont compatibles avec la plate-forme Intel Sapphire Rapids. Pour combiner des instances C4 et C3 dans une requête d'insertion groupée et exiger que les instances C3 s'exécutent sur Intel Sapphire Rapids, configurez deux sélections d'instances comme suit :

  • Sélection C3 : définissez le champ minCpuPlatform sur Intel Sapphire Rapids.
  • Sélection C4 : laissez le champ minCpuPlatform non défini ou définissez-le sur AUTOMATIC.

Vous pouvez définir une préférence égale pour les deux types de machines en attribuant le même rang aux deux sélections d'instances.

Remplacements de disques

Vous pouvez spécifier une configuration de disque personnalisée dans une sélection d'instances pour remplacer le disque de démarrage ou les disques supplémentaires spécifiés dans instanceProperties, ou pour associer des disques supplémentaires. Ce remplacement vous permet de personnaliser les tailles de disque de démarrage, les images de démarrage ou les volumes Hyperdisk associés pour chaque série de machines de votre requête. Par exemple, vous pouvez remplacer la taille du disque de démarrage ou associer un disque de données supplémentaire lorsque Compute Engine sélectionne un type de machine plus grand, tout en conservant une préférence égale en attribuant le même rang aux sélections d'instances.

Si un disque d'une sélection d'instances possède un deviceName qui correspond à un disque de instanceProperties, Compute Engine remplace la configuration de ce disque. Si le deviceName ne correspond à aucun disque dans instanceProperties, Compute Engine l'associe en tant que disque supplémentaire. Vous devez vous assurer que la configuration de disque effective est compatible avec tous les types de machines de la sélection d'instances.

Le schéma suivant montre comment Compute Engine fusionne les configurations de disque de instanceProperties et d'une sélection d'instances :

Diagramme montrant que les disques d'une sélection d'instances remplacent les disques dont les noms d'appareil correspondent dans les propriétés de l'instance et sont associés en tant que disques supplémentaires lorsque les noms d'appareil ne correspondent pas. Pour savoir comment spécifier des remplacements de configuration minimale de plate-forme de processeur et de disque lorsque vous créez des VM de manière groupée, consultez Créer des VM avec plusieurs types de machines, une configuration minimale de plate-forme de processeur et des remplacements de disque.

Pour en savoir plus sur les limites liées à l'utilisation des remplacements de sélection d'instances, consultez la section Limites de ce document.

Exemple : Remplacements de la plate-forme de processeur minimale et du disque

Vous pouvez utiliser des remplacements dans une règle de flexibilité des instances pour provisionner des VM sur des séries de machines nécessitant des plates-formes de processeur, des images de démarrage ou des types de disques différents.

Prenons l'exemple d'une requête d'insertion groupée avec la configuration de base instanceProperties suivante, qui définit un disque de démarrage hyperdisk-balanced par défaut :
"instanceProperties": {
  "disks": [
    {
      "autoDelete": true,
      "deviceName": "boot-disk",
      "boot": true,
      "initializeParams": {
        "sourceImage": "projects/debian-cloud/global/images/family/debian-12",
        "diskSizeGb": "50",
        "diskType": "hyperdisk-balanced"
      }
    }
  ],
  "networkInterfaces": [{}]
}

La configuration instanceFlexibilityPolicy suivante dans la même requête remplace la configuration instanceProperties de base en spécifiant la plate-forme de CPU minimale et les configurations de disque sur deux sélections d'instances :

"instanceFlexibilityPolicy": {
  "instanceSelections": {
    "first-preference": {
      "rank": 1,
      "machineTypes": ["c4-standard-4"],
      "minCpuPlatform": "Intel Emerald Rapids",
      "disks": [
        {
          "autoDelete": true,
          "deviceName": "boot-disk",
          "boot": true,
          "initializeParams": {
            "sourceImage": "projects/debian-cloud/global/images/family/debian-12",
            "diskSizeGb": "50",
            "diskType": "hyperdisk-balanced"
          }
        }
      ]
    },
    "second-preference": {
      "rank": 2,
      "machineTypes": ["c3-standard-4"],
      "minCpuPlatform": "Intel Sapphire Rapids",
      "disks": [
        {
          "autoDelete": true,
          "deviceName": "boot-disk",
          "boot": true,
          "initializeParams": {
            "sourceImage": "projects/debian-cloud/global/images/family/debian-12",
            "diskSizeGb": "100",
            "diskType": "hyperdisk-balanced"
          }
        },
        {
          "autoDelete": true,
          "deviceName": "data-disk",
          "boot": false,
          "initializeParams": {
            "diskSizeGb": "100",
            "diskType": "hyperdisk-balanced"
          }
        }
      ]
    }
  }
}

Dans cet exemple, Compute Engine applique les remplacements suivants en fonction de la sélection d'instances qu'il utilise pour créer des VM :

  • Première préférence (first-preference) : pour les VM c4-standard-4, la sélection définit minCpuPlatform sur Intel Emerald Rapids et utilise un disque de démarrage hyperdisk-balanced de 50 Go.
  • Deuxième préférence (second-preference) : pour les VM c3-standard-4, la sélection définit minCpuPlatform sur Intel Sapphire Rapids, remplace boot-disk pour utiliser un disque hyperdisk-balanced de 100 Go et associe un disque hyperdisk-balanced supplémentaire de 100 Go nommé data-disk.

Sélection de zones lorsqu'une forme de distribution cible est définie

Lorsque vous utilisez la flexibilité des instances avec une requête bulkInsert régionale, vous pouvez spécifier une forme de distribution cible pour contrôler la répartition des VM entre les zones de la région. Compute Engine sélectionne les zones pour provisionner les VM en fonction de cette forme, comme suit :

  • ANY_SINGLE_ZONE : Compute Engine sélectionne une seule zone disposant de la plus grande capacité pour les types de machines ayant une préférence plus élevée.
  • BALANCED : Compute Engine répartit les VM aussi équitablement que possible entre les zones disposant de ressources disponibles. Dans chaque zone, Compute Engine donne la priorité aux types de machines ayant une préférence plus élevée.
  • ANY : Compute Engine sélectionne les zones disposant de ressources disponibles. Si des rangs sont configurés, Compute Engine donne la priorité aux zones pour provisionner des VM avec des types de machines ayant une préférence plus élevée.

Pour en savoir plus, consultez Créer des VM de manière groupée dans une région.

Provisionnement minimal de VM et flexibilité des instances

Si vous définissez une valeur pour le nombre minimal de VM requis (minCount) dans la requête bulkInsert, l'API tente de créer au moins ce nombre de VM. Si Compute Engine ne peut pas provisionner le nombre minimal de VM requis (minCount), l'opération entière échoue et Compute Engine ne crée aucune VM. Lorsque vous utilisez minCount avec la flexibilité des instances, Compute Engine provisionne en priorité les VM en fonction de leur disponibilité plutôt que de leur rang, comme suit :

  • Compute Engine provisionne en priorité le nombre maximal de VM, jusqu'à count, même si cela implique d'utiliser des machines moins privilégiées. Par exemple, si votre requête spécifie un minimum d'une VM requise (minCount=1) et un maximum de 10 VM (count=10), et si Compute Engine dispose de la capacité nécessaire pour provisionner une VM de préférence supérieure ou six VM de préférence inférieure, Compute Engine provisionne les six VM de préférence inférieure.
  • Si Compute Engine peut provisionner le même nombre maximal de VM jusqu'à count en utilisant différentes sélections d'instances, il donne la priorité à la sélection ayant la préférence la plus élevée. Par exemple, si votre requête spécifie un minimum d'une VM requise (minCount=1) et un maximum de 10 VM (count=10), et si Compute Engine peut provisionner six VM en utilisant une sélection d'instances de préférence supérieure ou inférieure, Compute Engine provisionne les six VM à partir de la sélection de préférence supérieure.

Pour en savoir plus, consultez la propriété minCount dans bulkInsert.

Scénarios de validation et d'erreur d'insertion groupée

Compute Engine effectue une validation initiale des types de machines et de leur compatibilité zonale, en excluant les entrées non valides. S'il reste au moins une configuration valide après cette vérification initiale, Compute Engine procède à la création de la VM.

Toutefois, certaines validations de votre configuration ne peuvent avoir lieu qu'après que Compute Engine a sélectionné les zones et les types de machines à utiliser pour le provisionnement, en fonction de votre règle de flexibilité des instances et de la capacité disponible. Si, au cours de cette étape de validation ultérieure, la combinaison de type de machine et de zone spécifique choisie pour le provisionnement s'avère non valide, l'intégralité de la requête d'insertion groupée échoue avec des erreurs de validation. Cet échec peut se produire même si d'autres configurations de instanceFlexibilityPolicy étaient initialement valides.

Limites

Les limites suivantes s'appliquent lorsque vous utilisez la flexibilité des instances pour la création groupée de VM :

  • Vous ne pouvez spécifier la flexibilité des instances que pour les requêtes bulkInsert régionales. Vous ne pouvez pas l'utiliser avec les requêtes zonales.
  • La flexibilité des instances n'est pas compatible avec les VM à démarrage flexible et les réservations futures.
  • Vous ne pouvez pas utiliser la flexibilité des instances avec les fonctionnalités d'AI Hypercomputer, ni avec les GPU A3 Ultra, A4 et plus récents.
  • Vous pouvez spécifier jusqu'à 10 types de machines différents sur un maximum de 10 sélections d'instances différentes.
  • Lorsque vous remplacez minCpuPlatform ou disks dans une sélection d'instances, les limites suivantes s'appliquent également :

Étapes suivantes