Créer une instance Confidential VM avec GPU

Pour utiliser des GPU avec une Confidential VM, vous devez créer une instance de Confidential VM à l'aide du modèle de provisionnement Spot ou à démarrage flexible basé sur le type de machine a3-highgpu-1g et utiliser Intel TDX. Une fois l'instance de VM créée, vous activez le mode d'informatique confidentielle sur le GPU associé.

Avant de créer une instance de Confidential VM avec GPU, assurez-vous que votre projet dispose d'un quota de Google Cloud GPU suffisant.

Exigence de quota de GPU

Vous devez disposer d'un quota suffisant pour les types de quotas suivants afin de créer une instance de Confidential VM avec GPU :

  • Quota préemptif pour les modèles de GPU que vous souhaitez créer dans chaque région.

  • Quota global pour le nombre total de GPU de tous types dans toutes les régions.

Pour demander une augmentation de ces quotas de GPU, consultez Demander un quota préemptif et Demander un quota global.

Demander un quota préemptif

Pour demander une augmentation du quota régional de GPU NVIDIA H100 préemptifs, procédez comme suit :

  1. Dans la Google Cloud console, accédez à la page Quotas.

    Accéder à la section "Quotas"

  2. Dans le champ Filtre, saisissez PREEMPTIBLE_NVIDIA_H100_GPUS, puis appuyez sur la touche Entrée ou Retour.

  3. Dans la colonne Dimensions du tableau, recherchez la ligne correspondant à la région dont vous souhaitez augmenter le quota.

  4. Sur cette ligne, cliquez sur Autres actions, puis sur cliquez sur Modifier le quota.

  5. Dans le volet Modifications du quota, saisissez le nombre de GPU souhaité dans le champ Nouvelle valeur.

  6. Cliquez sur Envoyer la requête.

Demander un quota global

Pour demander une augmentation du quota global, procédez comme suit :

  1. Dans la Google Cloud console, accédez à la page Quotas.

    Accéder à la section "Quotas"

  2. Dans le champ Filtre, saisissez GPUS_ALL_REGIONS, puis appuyez sur la touche Entrée ou Retour.

  3. Dans la ligne résultante, cliquez sur Autres actions, puis cliquez sur Modifier le quota.

  4. Dans le volet Modifications du quota, saisissez le nombre de GPU souhaité dans le champ Nouvelle valeur.

  5. Cliquez sur Envoyer la requête.

Que se passe-t-il après une demande de quota ?

Si votre demande de quota est acceptée, vous recevez un e-mail d'approbation. Attendez 15 minutes après avoir reçu l'e-mail, puis actualisez la page Quotas pour vérifier si le quota a été mis à jour. Si le quota n'a toujours pas été mis à jour après 15 minutes, contactez Cloud Customer Care.

Si votre demande de quota est refusée, vous recevrez peut-être un e-mail expliquant les prochaines étapes à suivre. Pour demander à nouveau un quota plus élevé, suivez les instructions de l'e-mail.

Créer une instance de Confidential VM avec GPU

Pour créer une instance de VM à l'aide du modèle Spot ou à démarrage flexible, procédez comme suit :

Modèle Spot

gcloud

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

  gcloud compute instances create INSTANCE_NAME \
      --provisioning-model=SPOT \
      --confidential-compute-type=TDX \
      --machine-type=a3-highgpu-1g \
      --maintenance-policy=TERMINATE \
      --zone=ZONE_NAME \
      --image-project=IMAGE_PROJECT \
      --image-family=IMAGE_FAMILY_NAME \
      --boot-disk-size=30G

Indiquez les valeurs suivantes :

  • INSTANCE_NAME : nom de la nouvelle instance de VM.

  • IMAGE_PROJECT: projet contenant l'image de système d'exploitation compatible. Nous vous recommandons d'utiliser le projet d'image ubuntu-os-cloud pour les images Ubuntu. Vous pouvez également utiliser le projet d'image confidential-vm-images pour les images Container-Optimized OS.

  • IMAGE_FAMILY_NAME : famille de l'image système compatible avec Confidential VM. Lorsque vous utilisez le projet d'image ubuntu-os-cloud, nous vous recommandons d'utiliser la famille d'images ubuntu-2404-lts. Pour les images Container-Optimized OS du projet confidential-vm-images, utilisez la famille d'images cos-tdx-113-lts.

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

REST

Pour créer une instance de VM Spot, envoyez la requête POST suivante avec le contenu de corps approprié.

Méthode HTTP et URL :

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

Corps JSON de la requête :

  {
    "name": "INSTANCE_NAME",
    "confidentialInstanceConfig": {
      "confidentialInstanceType": "TDX"
    },
    "machineType": "zones/ZONE_NAME/machineTypes/a3-highgpu-1g",
    "scheduling": {
      "onHostMaintenance": "TERMINATE",
      "provisioningModel": "SPOT"
    },
    "disks": [
      {
        "autoDelete": true,
        "boot": true,
        "index": 0,
        "initializeParams": {
          "diskSizeGb": "30",
          "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY_NAME"
        },
        "kind": "compute#attachedDisk",
        "mode": "READ_WRITE",
        "type": "PERSISTENT"
      }
    ],
    "networkInterfaces": [
      {
        "accessConfigs": [
          {
            "name": "external-nat",
            "type": "ONE_TO_ONE_NAT",
            "kind": "compute#accessConfig",
            "networkTier": "PREMIUM"
          }
        ],
        "kind": "compute#networkInterface",
        "name": "nic0",
        "network": "projects/PROJECT_ID/global/networks/default"
      }
    ]
  }

Indiquez les valeurs suivantes :

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

  • IMAGE_PROJECT: projet contenant l'image de système d'exploitation compatible. Nous vous recommandons d'utiliser le projet d'image ubuntu-os-cloud pour les images Ubuntu. Vous pouvez également utiliser le projet d'image confidential-vm-images pour les images Container-Optimized OS.

  • IMAGE_FAMILY_NAME : famille de l'image système compatible avec Confidential VM. Lorsque vous utilisez le projet d'image ubuntu-os-cloud, nous vous recommandons d'utiliser la famille d'images ubuntu-2404-lts. Pour les images Container-Optimized OS du projet confidential-vm-images, utilisez la famille d'images cos-tdx-113-lts.

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

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

Modèle à démarrage flexible

Pour utiliser le modèle à démarrage flexible, vous devez d'abord créer un modèle d'instance, puis créer un groupe d'instances géré (MIG) à l'aide de ce modèle. Vous pouvez ensuite ajouter des instances de VM avec GPU au MIG à l'aide de requêtes 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 d'instances de VM avec GPU. Pour en savoir plus, consultez À propos des requêtes de redimensionnement d'un MIG.

Avant de commencer

Consultez les prérequis pour créer un MIG et les limites relatives à la création d'une requête de redimensionnement dans un MIG.

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éez un modèle d'instance.

    gcloud

    gcloud beta compute instance-templates create INSTANCE_TEMPLATE_NAME \
        --provisioning-model=FLEX_START \
        --confidential-compute-type=TDX \
        --machine-type=a3-highgpu-1g \
        --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
    

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

    Indiquez les valeurs suivantes :

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

    • IMAGE_PROJECT: projet contenant l'image de système d'exploitation compatible. Nous vous recommandons d'utiliser le projet d'image ubuntu-os-cloud pour les images Ubuntu. Vous pouvez également utiliser le projet d'image confidential-vm-images pour les images Container-Optimized OS.

    • IMAGE_FAMILY_NAME : famille de l'image système compatible avec Confidential VM. Lorsque vous utilisez le projet d'image ubuntu-os-cloud, nous vous recommandons d'utiliser la famille d'images ubuntu-2404-lts. Pour les images Container-Optimized OS du projet confidential-vm-images, utilisez la famille d'images cos-tdx-113-lts.

    • RUN_DURATION: durée pendant laquelle vous souhaitez que les instances de VM demandées s'exécutent. Vous devez mettre en forme la valeur sous la forme du nombre de jours, d'heures, de minutes ou de secondes, suivi respectivement de d, h, m et s. Par exemple, spécifiez 30m pour 30 minutes ou 1d2h3m4s pour un jour, deux heures, trois minutes et quatre secondes. La valeur doit être comprise entre 10 minutes et sept jours.

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

    REST

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

    Méthode HTTP et URL :

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

    Corps JSON de la requête :

    {
      "name": "INSTANCE_TEMPLATE_NAME",
      "properties": {
        "confidentialInstanceConfig": {
          "confidentialInstanceType": "TDX"
        },
        "machineType": "a3-highgpu-1g",
        "scheduling": {
          "instanceTerminationAction": "DELETE",
          "maxRunDuration": {
            "seconds": RUN_DURATION
          },
          "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 éventuellement 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 : facultatif. ID du projet dans lequel créer la VM.

    • ZONE_NAME : zone compatible dans laquelle créer le MIG.

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

    • IMAGE_PROJECT: projet contenant l'image de système d'exploitation compatible. Nous vous recommandons d'utiliser le projet d'image ubuntu-os-cloud pour les images Ubuntu. Vous pouvez également utiliser le projet d'image confidential-vm-images pour les images Container-Optimized OS.

    • IMAGE_FAMILY_NAME : famille de l'image système compatible avec Confidential VM. Lorsque vous utilisez le projet d'image ubuntu-os-cloud, nous vous recommandons d'utiliser la famille d'images ubuntu-2404-lts. Pour les images Container-Optimized OS du projet confidential-vm-images, utilisez la famille d'images cos-tdx-113-lts.

    • RUN_DURATION: 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, ce qui correspond à une plage comprise entre 10 minutes et sept jours.

  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 une liste d'instances de VM.

    • PROJECT_ID : facultatif. ID du projet à partir duquel obtenir une liste d'instances de VM.

    REST

    Pour répertorier toutes les instances, envoyez la requête GET suivante.

    Méthode HTTP et URL :

    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.

    Méthode HTTP et URL :

    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 une liste d'instances de VM.

    • PROJECT_ID: ID du projet à partir duquel obtenir une liste d'instances de VM.

Activer le mode d'informatique confidentielle sur le GPU

  1. Connectez-vous à une instance de VM dans le 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 du pilote nvidia-driver-575-open.

  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 de persistance pour établir une connexion sécurisée SPDM (Security Protocol and Data Model) entre le GPU et le pilote 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 du mode LKCA et de persistance.

    sudo reboot
    
  7. (Facultatif) Installez les exemples CUDA suivants.

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

Étape suivante