Créer une instance Confidential VM avec GPU

Pour utiliser des GPU avec des instances de VM confidentielles, vous devez créer une instance de VM à l'aide d'un type de machine et d'un modèle de provisionnement d'instance compatibles. Après avoir créé l'instance de VM, vous devez activer le mode d'informatique confidentielle sur le GPU associé.

Les instances Confidential VM avec GPU NVIDIA sont disponibles sur les types de machines suivants :

  • Type de machine A3 High : GPU NVIDIA H100 avec Intel TDX. Compatible avec les modèles de provisionnement ponctuel et à démarrage flexible.

  • Type de machine G4 (preview) : NVIDIA RTX PRO 6000 avec AMD SEV. Compatible avec les modèles de provisionnement standards (à la demande), spot et à démarrage flexible, ainsi qu'avec les réservations.

Avant de créer une instance de VM confidentielle avec GPU, assurez-vous de disposer d'un quota de GPU suffisant. Pour en savoir plus, consultez Exigences concernant le quota de GPU.

Créer une instance Confidential VM avec GPU

Pour créer une instance Confidential VM avec un GPU associé, utilisez l'un des modèles de provisionnement suivants :

Modèle standard (à la demande) ou spot

gcloud

Pour créer une instance de VM standard (à la demande) ou Spot optimisée pour les accélérateurs avec gcloud CLI, utilisez la sous-commande instances create avec l'option --provisioning-model.

gcloud compute instances create INSTANCE_NAME \
    --provisioning-model=PROVISIONING_MODEL \
    --confidential-compute-type=CONFIDENTIAL_COMPUTING_TECHNOLOGY \
    --machine-type=MACHINE_TYPE_NAME \
    --maintenance-policy=TERMINATE \
    --zone=ZONE_NAME \
    --image-project=IMAGE_PROJECT \
    --image-family=IMAGE_FAMILY_NAME \
    --boot-disk-size=30G

Pour activer le démarrage sécurisé, vous pouvez utiliser l'indicateur --shielded-secure-boot pour les démarrages d'instances de VM.

Indiquez les valeurs suivantes :

  • INSTANCE_NAME : nom de la nouvelle instance de VM.

  • PROVISIONING_MODEL : modèle de provisionnement accepté par le type de machine. Choisissez l'une des options suivantes :

    • Type de machine A3 High : SPOT pour les instances de VM Spot.

    • Type de machine G4 (aperçu) : STANDARD pour les instances de VM standards (à la demande) ou SPOT pour les instances de VM Spot. Si aucune valeur n'est spécifiée, la valeur par défaut est STANDARD.

  • CONFIDENTIAL_COMPUTING_TECHNOLOGY : type de technologie d'informatique confidentielle à utiliser. Choisissez l'une des options suivantes :

    • Type de machine A3 High (a3-highgpu-1g) : TDX

    • Type de machine G4 (g4-standard-48) : SEV

  • MACHINE_TYPE_NAME : type de machine de la VM. Choisissez l'une des options suivantes :

    • a3-highgpu-1g

    • g4-standard-48 (preview)

  • ZONE_NAME : zone compatible dans laquelle créer la VM.

  • IMAGE_PROJECT : projet contenant l'image du système d'exploitation compatible. Choisissez l'une des options suivantes :

    • Type de machine A3 High : ubuntu-os-cloud pour les images Ubuntu ou confidential-vm-images pour les images Container-Optimized OS.

    • Type de machine G4 (preview) : ubuntu-os-cloud pour les images Ubuntu ou cos-cloud pour les images Container-Optimized OS.

  • IMAGE_FAMILY_NAME : famille de l'image du système d'exploitation compatible avec Confidential VM. Choisissez la famille d'images en fonction de votre type de machine :

    • Type de machine A3 High :

      • ubuntu-2204-lts pour les projets d'images Ubuntu.

      • cos-tdx-113-lts pour les projets d'images Container-Optimized OS.

    • Type de machine G4 (preview) :

      • ubuntu-2404-lts-amd64 pour les projets d'images Ubuntu.

      • cos-125-lts pour les projets d'images Container-Optimized OS.

REST

Pour créer une instance de VM standard (à la demande) ou Spot, envoyez la requête POST suivante avec le contenu de corps approprié.

Utilisez la méthode HTTP et l'URL suivantes :

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

Utilisez le corps JSON de la requête suivant :

{
  "name": "INSTANCE_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE_NAME",
  "confidentialInstanceConfig": {
    "confidentialInstanceType": "CONFIDENTIAL_COMPUTING_TECHNOLOGY"
  },
  "scheduling": {
    "onHostMaintenance": "TERMINATE",
    "automaticRestart": true,
    "provisioningModel": "PROVISIONING_MODEL"
  },
  "disks": [
    {
      "boot": true,
      "autoDelete": true,
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY",
        "diskSizeGb": "30"
      }
    }
  ],
  "networkInterfaces": [
    {
      "network": "global/networks/default"
    }
  ]
}

Indiquez les valeurs suivantes :

  • PROJECT_ID : facultatif. ID du projet dans lequel créer la VM.

  • ZONE : zone compatible dans laquelle créer la VM.

  • INSTANCE_NAME : nom de la nouvelle instance de VM.

  • MACHINE_TYPE_NAME : type de machine de la VM. Sélectionnez l'une des options suivantes :

    • a3-highgpu-1g

    • g4-standard-48 (preview)

  • CONFIDENTIAL_COMPUTING_TECHNOLOGY : type de technologie d'informatique confidentielle à utiliser. Choisissez l'une des options suivantes :

    • Type de machine A3 High (a3-highgpu-1g) : TDX

    • Type de machine G4 (g4-standard-48) : SEV

  • PROVISIONING_MODEL : modèle de provisionnement accepté par la série de machines. Choisissez l'une des options suivantes :

    • Type de machine A3 High : SPOT pour les instances de VM Spot.

    • Type de machine G4 (aperçu) : STANDARD pour les instances de VM standards (à la demande) ou SPOT pour les instances de VM Spot. Si aucune valeur n'est spécifiée, la valeur par défaut est STANDARD.

  • IMAGE_PROJECT : projet contenant l'image du système d'exploitation compatible. Choisissez l'une des options suivantes :

    • Type de machine A3 High : ubuntu-os-cloud pour les images Ubuntu ou confidential-vm-images pour les images Container-Optimized OS.

    • Type de machine G4 (preview) : ubuntu-os-cloud pour les images Ubuntu ou cos-cloud pour les images Container-Optimized OS.

  • IMAGE_FAMILY : famille de l'image du système d'exploitation compatible avec Confidential VM. Choisissez la famille d'images en fonction de votre type de machine :

    • Type de machine A3 High :

      • ubuntu-2204-lts pour les projets d'images Ubuntu.

      • cos-tdx-113-lts pour les projets d'images Container-Optimized OS.

    • Type de machine G4 (preview) :

      • ubuntu-2404-lts-amd64 pour les projets d'images Ubuntu.

      • cos-125-lts pour les projets d'images Container-Optimized OS.

Modèle de démarrage flexible

Pour utiliser le modèle à démarrage flexible, commencez par créer un modèle d'instance, puis utilisez-le pour créer un groupe d'instances géré (MIG). Vous pouvez ensuite ajouter des instances de VM avec GPU au MIG à l'aide de demandes de redimensionnement.

L'utilisation d'une requête de redimensionnement de MIG avec le modèle de provisionnement à démarrage flexible améliore l'obtention des instances de VM avec GPU. Pour en savoir plus, consultez À propos des requêtes de redimensionnement dans un MIG.

Avant de commencer

Créer un MIG avec des instances de VM avec GPU

Pour créer un modèle d'instance, puis l'utiliser pour créer un MIG, procédez comme suit.

  1. Créer un modèle d'instance.

    gcloud

    gcloud beta compute instance-templates create INSTANCE_TEMPLATE_NAME \
        --provisioning-model=FLEX_START \
        --confidential-compute-type=CONFIDENTIAL_COMPUTING_TECHNOLOGY \
        --machine-type=MACHINE_TYPE_NAME \
        --maintenance-policy=TERMINATE \
        --image-project=IMAGE_PROJECT \
        --image-family=IMAGE_FAMILY_NAME \
        --reservation-affinity=none \
        --boot-disk-size=30G \
        --instance-termination-action=DELETE \
        --max-run-duration=RUN_DURATION \
        --project=PROJECT_ID
    

    Indiquez les valeurs suivantes :

    • INSTANCE_TEMPLATE_NAME : nom du nouveau modèle d'instance de VM.

    • CONFIDENTIAL_COMPUTING_TECHNOLOGY : type de technologie d'informatique confidentielle à utiliser. Choisissez l'une des options suivantes :

      • Type de machine A3 High (a3-highgpu-1g) : TDX

      • Type de machine G4 (g4-standard-48) : SEV

    • MACHINE_TYPE_NAME : type de machine de la VM. Choisissez l'une des options suivantes :

      • a3-highgpu-1g

      • g4-standard-48 (preview)

    • IMAGE_PROJECT : projet contenant l'image du système d'exploitation compatible. Choisissez l'une des options suivantes :

      • Type de machine A3 High : ubuntu-os-cloud pour les images Ubuntu ou confidential-vm-images pour les images Container-Optimized OS.

      • Type de machine G4 (preview) : ubuntu-os-cloud pour les images Ubuntu ou cos-cloud pour les images Container-Optimized OS.

    • IMAGE_FAMILY_NAME : famille de l'image du système d'exploitation compatible avec les Confidential VM à utiliser. Choisissez la famille d'images en fonction de votre type de machine :

      • Type de machine A3 High :

        • ubuntu-2204-lts pour les projets d'images Ubuntu.

        • cos-tdx-113-lts pour les projets d'images Container-Optimized OS.

      • Type de machine G4 (preview) :

        • ubuntu-2404-lts-amd64 pour les projets d'images Ubuntu.

        • cos-125-lts pour les projets d'images Container-Optimized OS.

    • RUN_DURATION : durée d'exécution des instances de VM demandées. Vous devez formater la valeur en nombre de jours, d'heures, de minutes ou de secondes, suivis respectivement de d, h, m et s. Exemple : 6d8h44m.

    • PROJECT_ID : ID du projet dans lequel créer la VM.

    REST

    Pour créer un modèle d'instance Confidential VM, envoyez la requête POST suivante avec le contenu de corps approprié.

    Utilisez la méthode HTTP et l'URL suivantes :

    POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceTemplates
    

    Utilisez le corps JSON de la requête suivant :

    {
      "name": "INSTANCE_TEMPLATE_NAME",
      "properties": {
        "confidentialInstanceConfig": {
          "confidentialInstanceType": "CONFIDENTIAL_COMPUTING_TECHNOLOGY"
        },
        "machineType": "MACHINE_TYPE_NAME",
        "scheduling": {
          "instanceTerminationAction": "DELETE",
          "maxRunDuration": {
            "seconds": "RUN_DURATION_IN_SECONDS"
          },
          "automaticRestart": true,
          "onHostMaintenance": "TERMINATE",
          "provisioningModel": "FLEX_START",
          "preemptible": false
        },
        "disks": [
          {
            "autoDelete": true,
            "index": 0,
            "boot": true,
            "kind": "compute#attachedDisk",
            "mode": "READ_WRITE",
            "initializeParams": {
              "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY_NAME",
              "diskSizeGb": "30"
            },
            "type": "PERSISTENT"
          }
        ],
        "networkInterfaces": [
          {
            "accessConfigs": [
              {
                "kind": "compute#accessConfig",
                "name": "external-nat",
                "networkTier": "PREMIUM",
                "type": "ONE_TO_ONE_NAT"
              }
            ],
            "kind": "compute#networkInterface",
            "name": "nic0",
            "network": "projects/PROJECT_ID/global/networks/default"
          }
        ],
        "reservationAffinity": {
          "consumeReservationType": "NO_RESERVATION"
        },
        "canIpForward": false
      }
    }
    

    Pour activer le démarrage sécurisé, vous pouvez inclure l'objet suivant pour les démarrages d'instances de VM.

    "shieldedInstanceConfig": {
      "enableIntegrityMonitoring": true,
      "enableSecureBoot": true,
      "enableVtpm": true
    }
    

    Indiquez les valeurs suivantes :

    • PROJECT_ID : ID du projet dans lequel créer le modèle.

    • REGION : région dans laquelle créer le modèle.

    • INSTANCE_TEMPLATE_NAME : nom du nouveau modèle d'instance de VM.

    • CONFIDENTIAL_COMPUTING_TECHNOLOGY : type de technologie d'informatique confidentielle à utiliser. Choisissez l'une des options suivantes :

      • Type de machine A3 High (a3-highgpu-1g) : TDX

      • Type de machine G4 (g4-standard-48) : SEV

    • MACHINE_TYPE_NAME : type de machine de la VM. Choisissez l'une des options suivantes :

      • a3-highgpu-1g

      • g4-standard-48 (preview)

    • RUN_DURATION_IN_SECONDS : durée, en secondes, pendant laquelle vous souhaitez que les instances de VM demandées s'exécutent. La valeur doit être comprise entre 600 et 604800 secondes.

    • IMAGE_PROJECT : projet contenant l'image du système d'exploitation compatible. Choisissez l'une des options suivantes :

      • Type de machine A3 High : ubuntu-os-cloud pour les images Ubuntu ou confidential-vm-images pour les images Container-Optimized OS.

      • Type de machine G4 (preview) : ubuntu-os-cloud pour les images Ubuntu ou cos-cloud pour les images Container-Optimized OS.

    • IMAGE_FAMILY_NAME : famille de l'image du système d'exploitation compatible avec les Confidential VM à utiliser. Choisissez la famille d'images en fonction de votre type de machine :

      • Type de machine A3 High :

        • ubuntu-2204-lts pour les projets d'images Ubuntu.

        • cos-tdx-113-lts pour les projets d'images Container-Optimized OS.

      • Type de machine G4 (preview) :

        • ubuntu-2404-lts-amd64 pour les projets d'images Ubuntu.

        • cos-125-lts pour les projets d'images Container-Optimized OS.

  2. Créez un MIG et une requête de redimensionnement pour ajouter toutes les instances de VM avec GPU à la fois.

  3. Répertoriez les instances présentes dans le MIG.

    gcloud

    gcloud compute instance-groups managed list-instances INSTANCE_GROUP_NAME \
        --zone=ZONE_NAME \
        --project=PROJECT_ID
    

    Indiquez les valeurs suivantes :

    • INSTANCE_GROUP_NAME : nom du MIG.

    • ZONE_NAME : zone compatible à partir de laquelle obtenir la liste des instances de VM.

    • PROJECT_ID : facultatif. ID du projet à partir duquel obtenir la liste des instances de VM.

    REST

    Pour lister tous les modèles, envoyez la requête GET suivante.

    Utilisez la méthode HTTP et l'URL suivantes :

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates
    

    Pour limiter la liste des instances à une zone spécifique, envoyez la requête GET suivante.

    Utilisez la méthode HTTP et l'URL suivantes :

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/ZONE_NAME/instanceTemplates
    

    Indiquez les valeurs suivantes :

    • ZONE_NAME : zone compatible à partir de laquelle obtenir la liste des instances de VM.

    • PROJECT_ID : ID du projet pour lequel vous souhaitez obtenir une liste d'instances de VM.

Utiliser des réservations avec des instances Confidential VM

Vous pouvez utiliser des réservations pour vous assurer de disposer de la capacité nécessaire pour vos instances de Confidential VM uniquement avec le type de machine G4 (preview).

Pour utiliser une réservation pour votre instance de Confidential VM :

  1. Créez une réservation standard dans la zone compatible. Vous pouvez contrôler la façon dont les instances utilisent cette réservation à l'aide de l'option --require-specific-reservation lors de la création de la réservation.

  2. Créez une instance Confidential VM pour utiliser la réservation. Lorsque vous créez l'instance de VM, incluez l'indicateur --confidential-compute-type=SEV pour en faire une instance de Confidential VM. La façon dont cette instance consomme la réservation dépend des paramètres d'affinité de la réservation.

Les exemples suivants montrent comment utiliser des réservations avec des instances Confidential VM. La méthode de consommation de la réservation dépend de la façon dont elle a été créée :

  • Consommation automatique : si une réservation est créée sans l'indicateur --require-specific-reservation, vous pouvez créer une instance de VM confidentielle G4 avec des propriétés correspondantes (telles que le type de machine ou la zone) pour utiliser automatiquement la réservation.

  • Consommation spécifique : si une réservation est créée avec l'indicateur --require-specific-reservation, vous devez cibler la réservation à l'aide des indicateurs --reservation-affinity=specific et --reservation=RESERVATION_NAME lorsque vous créez l'instance :

    gcloud compute instances create INSTANCE_NAME \
        --project=PROJECT_ID \
        --zone=ZONE_NAME \
        --machine-type=g4-standard-48 \
        --confidential-compute-type=SEV \
        --image-project=ubuntu-os-cloud \
        --image-family=ubuntu-2404-lts-amd64 \
        --reservation-affinity=specific \
        --reservation=RESERVATION_NAME
    

    Indiquez les valeurs suivantes :

    • INSTANCE_NAME : nom de la nouvelle instance de VM.

    • PROJECT_ID : facultatif. ID du projet dans lequel créer la VM.

    • ZONE_NAME : zone compatible dans laquelle créer la VM.

    • RESERVATION_NAME : nom de la réservation.

Pour savoir comment les instances de VM consomment les réservations et comment fonctionne l'affinité, consultez Utiliser des réservations.

Activer le mode d'informatique confidentielle sur le GPU

  1. Connectez-vous à une instance de VM du MIG à l'aide de la commande gcloud compute ssh.

    gcloud compute ssh
    
  2. Mettez à jour la liste des packages et installez les outils et bibliothèques nécessaires.

    sudo apt-get update --yes
    sudo apt-get install linux-headers-$(uname -r)
    sudo apt install -y build-essential libxml2 libncurses5-dev pkg-config libvulkan1 gcc-12
    
  3. Installez les pilotes de GPU appropriés sur l'instance de VM. Pour les instances de VM sur lesquelles le démarrage sécurisé est activé, consultez Installer des pilotes de GPU (VM avec démarrage sécurisé). Nous vous recommandons d'utiliser la version 580 ou ultérieure des pilotes de module de noyau ouvert NVIDIA.

  4. Pour configurer une communication sécurisée entre le GPU et le pilote GPU, activez l'API Linux Kernel Crypto (LKCA).

    echo "install nvidia /sbin/modprobe ecdsa_generic; /sbin/modprobe ecdh; /sbin/modprobe --ignore-install nvidia" | sudo tee /etc/modprobe.d/nvidia-lkca.conf
    sudo update-initramfs -u
    
  5. Activez le mode persistant pour établir une connexion SPDM (Security Protocol and Data Model) sécurisée entre le GPU et le pilote de GPU.

    sudo test -f /usr/lib/systemd/system/nvidia-persistenced.service && sudo sed -i "s/no-persistence-mode/uvm-persistence-mode/g" /usr/lib/systemd/system/nvidia-persistenced.service
    sudo systemctl daemon-reload
    
  6. Redémarrez l'instance de VM pour appliquer les configurations LKCA et du mode persistant.

    sudo reboot
    
  7. Connectez-vous à une instance de VM du MIG à l'aide de la commande gcloud compute ssh.

    gcloud compute ssh
    
  8. (Facultatif) Installez les exemples CUDA compatibles avec la version du pilote dont vous avez besoin.

    wget -O cuda-samples.tar.gz https://github.com/NVIDIA/cuda-samples/archive/refs/tags/v12.9.tar.gz
    tar xzvf cuda-samples.tar.gz
    

Tarifs

Pendant la version preview, les frais supplémentaires pour les instances de VM confidentielles sur le type de machine G4 ne sont pas facturés. Ces frais incluent le supplément pour l'informatique confidentielle et les frais de licence NVIDIA. Les frais standards pour les ressources Compute Engine sous-jacentes, telles que le type de machine G4, le GPU et le stockage, s'appliquent toujours. Ces frais supplémentaires pour l'informatique confidentielle s'appliqueront après la fin de la période d'aperçu, lors de la disponibilité générale. Pour en savoir plus sur les tarifs, consultez Tarifs des Confidential VM.

Étapes suivantes