Creare un'istanza Confidential VM con GPU

Per utilizzare GPU con Confidential VM, devi creare un'istanza Confidential VM utilizzando il modello di provisioning spot o avvio flessibile basato sul tipo di macchina a3-highgpu-1g e utilizzare Intel TDX. Dopo aver creato l'istanza VM, devi abilitare la modalità Confidential Computing sulla GPU collegata.

Prima di creare un'istanza Confidential VM con GPU, assicurati di avere una quota di GPU sufficiente allocata al tuo Google Cloud progetto.

Requisito di quota per le GPU

Per creare correttamente un'istanza Confidential VM con GPU, devi disporre di una quota sufficiente nei seguenti tipi di quota:

  • Quota preemptible per i modelli di GPU che vuoi creare in ogni regione.

  • Quota globale per il numero totale di GPU di tutti i tipi in tutte le regioni.

Per richiedere un aumento di queste quote di GPU, consulta Richiedi una quota preemptible e Richiedi una quota globale.

Richiedi una quota preemptible

Per richiedere un aumento della quota di GPU NVIDIA H100 preemptible a livello di regione:

  1. Nella Google Cloud console, vai alla pagina Quote.

    Vai a Quote

  2. Nella casella Filtro, inserisci PREEMPTIBLE_NVIDIA_H100_GPUS, quindi premi il tasto Invio o A capo.

  3. Nella colonna Dimensioni della tabella, individua la riga con la regione di cui vuoi aumentare la quota.

  4. In quella riga, fai clic su Altre azioni e poi su fai clic su Modifica quota.

  5. Nel riquadro Modifiche alla quota, inserisci il numero di GPU che vuoi nella casella Nuovo valore.

  6. Fai clic su Invia richiesta.

Richiedi una quota globale

Per richiedere un aumento della quota globale:

  1. Nella Google Cloud console, vai alla pagina Quote.

    Vai a Quote

  2. Nella casella Filtro, inserisci GPUS_ALL_REGIONS, quindi premi il tasto Invio o A capo.

  3. Nella riga risultante, fai clic su Altre azioni e poi fai clic su Modifica quota.

  4. Nel riquadro Modifiche alla quota, inserisci il numero di GPU che vuoi nella casella Nuovo valore.

  5. Fai clic su Invia richiesta.

Che cosa succede dopo una richiesta di quota

Se la richiesta di quota va a buon fine, riceverai un'email di approvazione. Attendi 15 minuti dopo aver ricevuto l'email, quindi aggiorna la pagina Quote per verificare la quota aggiornata. Se la quota non è ancora stata aggiornata dopo 15 minuti, contatta l'assistenza clienti Google Cloud.

Se la richiesta di quota viene rifiutata, potresti ricevere un'email che spiega i passaggi successivi che puoi intraprendere. Per richiedere nuovamente una quota maggiore, segui le istruzioni riportate nell'email.

Crea un'istanza Confidential VM con GPU

Per creare un'istanza VM utilizzando il modello spot o avvio flessibile:

Modello spot

gcloud

Per creare un'istanza VM spot ottimizzata per l'acceleratore con il gcloud CLI, utilizza il instances create sottocomando con il --provisioning-model flag.

  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

Fornisci i seguenti valori:

  • INSTANCE_NAME: il nome della nuova istanza VM.

  • IMAGE_PROJECT: il progetto contenente l'immagine di sistema supportata. Ti consigliamo di utilizzare il progetto di immagini ubuntu-os-cloud per le immagini Ubuntu. Facoltativamente, puoi utilizzare il progetto di immagini confidential-vm-images per le immagini Container-Optimized OS.

  • IMAGE_FAMILY_NAME: la famiglia dell' immagine di sistema del sistema operativo supportata da Confidential VM. Quando utilizzi il progetto di immagini ubuntu-os-cloud, ti consigliamo di utilizzare la famiglia di immagini ubuntu-2404-lts. Per le immagini Container-Optimized OS del progetto confidential-vm-images, utilizza la famiglia di immagini cos-tdx-113-lts.

  • ZONE_NAME: la zona supportata in cui creare la VM.

REST

Per creare un'istanza VM spot, invia la seguente richiesta POST con il contenuto del corpo appropriato.

Il metodo HTTP e l'URL:

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

Corpo JSON della richiesta:

  {
    "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"
      }
    ]
  }

Fornisci i seguenti valori:

  • INSTANCE_NAME: il nome del nuovo template di istanza VM.

  • IMAGE_PROJECT: il progetto contenente l'immagine di sistema supportata. Ti consigliamo di utilizzare il progetto di immagini ubuntu-os-cloud per le immagini Ubuntu. Facoltativamente, puoi utilizzare il progetto di immagini confidential-vm-images per le immagini Container-Optimized OS.

  • IMAGE_FAMILY_NAME: la famiglia dell' immagine di sistema del sistema operativo supportata da Confidential VM. Quando utilizzi il progetto di immagini ubuntu-os-cloud, ti consigliamo di utilizzare la famiglia di immagini ubuntu-2404-lts. Per le immagini Container-Optimized OS del progetto confidential-vm-images, utilizza la famiglia di immagini cos-tdx-113-lts.

  • PROJECT_ID: (facoltativo) L'ID del progetto in cui creare la VM.

  • ZONE_NAME: la zona supportata in cui creare la VM.

Modello ad avvio flessibile

Per utilizzare il modello di avvio flessibile, devi prima creare un template di istanza, quindi creare un gruppo di istanze gestite (MIG) utilizzando questo template. Puoi quindi aggiungere istanze VM GPU al MIG utilizzando le richieste di ridimensionamento.

L'utilizzo di una richiesta di ridimensionamento del MIG con il modello di provisioning ad avvio flessibile migliora la possibilità di ottenere istanze VM GPU. Per ulteriori informazioni, consulta la pagina Informazioni sulle richieste di ridimensionamento in un MIG.

Prima di iniziare

Consulta i prerequisiti per la creazione di un MIG e le limitazioni per la creazione di una richiesta di ridimensionamento in un MIG.

Crea un MIG con istanze VM GPU

Per creare un template di istanza e poi utilizzarlo per creare un MIG, completa i seguenti passaggi.

  1. Crea un template di istanza.

    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
    

    Per abilitare l'avvio protetto, puoi facoltativamente utilizzare il flag --shielded-secure-boot per gli avvii delle istanze VM.

    Fornisci i seguenti valori:

    • INSTANCE_TEMPLATE_NAME: il nome del nuovo template di istanza VM.

    • IMAGE_PROJECT: il progetto contenente l'immagine di sistema supportata. Ti consigliamo di utilizzare il progetto di immagini ubuntu-os-cloud per le immagini Ubuntu. Facoltativamente, puoi utilizzare il progetto di immagini confidential-vm-images per le immagini Container-Optimized OS.

    • IMAGE_FAMILY_NAME: la famiglia dell' immagine di sistema del sistema operativo supportata da Confidential VM. Quando utilizzi il progetto di immagini ubuntu-os-cloud, ti consigliamo di utilizzare la famiglia di immagini ubuntu-2404-lts. Per le immagini Container-Optimized OS del progetto confidential-vm-images, utilizza la famiglia di immagini cos-tdx-113-lts.

    • RUN_DURATION: la durata per cui vuoi che le istanze VM richieste siano in esecuzione. Devi formattare il valore come numero di giorni, ore, minuti o secondi seguito rispettivamente da d, h, m, e s. Ad esempio, specifica 30m per 30 minuti o 1d2h3m4s per un giorno, due ore, tre minuti e quattro secondi. Il valore deve essere compreso tra 10 minuti e sette giorni.

    • PROJECT_ID: (facoltativo) L'ID del progetto in cui creare la VM.

    REST

    Per creare un template di istanza Confidential VM, invia la seguente richiesta POST con il contenuto del corpo appropriato.

    Il metodo HTTP e l'URL:

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

    Corpo JSON della richiesta:

    {
      "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
      }
    }
    

    Per abilitare l'avvio protetto, puoi facoltativamente includere il seguente oggetto per gli avvii delle istanze VM.

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

    Fornisci i seguenti valori:

    • PROJECT_ID: (facoltativo) L'ID del progetto in cui creare la VM.

    • ZONE_NAME: la zona supportata in cui creare il MIG.

    • INSTANCE_TEMPLATE_NAME: il nome del nuovo template di istanza VM.

    • IMAGE_PROJECT: il progetto contenente l'immagine di sistema supportata. Ti consigliamo di utilizzare il progetto di immagini ubuntu-os-cloud per le immagini Ubuntu. Facoltativamente, puoi utilizzare il progetto di immagini confidential-vm-images per le immagini Container-Optimized OS.

    • IMAGE_FAMILY_NAME: la famiglia dell' immagine di sistema del sistema operativo supportata da Confidential VM. Quando utilizzi il progetto di immagini ubuntu-os-cloud, ti consigliamo di utilizzare la famiglia di immagini ubuntu-2404-lts. Per le immagini Container-Optimized OS del progetto confidential-vm-images, utilizza la famiglia di immagini cos-tdx-113-lts.

    • RUN_DURATION: la durata, in secondi, per cui vuoi che le istanze VM richieste siano in esecuzione. Il valore deve essere compreso tra 600 e 604800 secondi, il che corrisponde a un intervallo compreso tra 10 minuti e sette giorni.

  2. Crea un MIG e una richiesta di ridimensionamento per aggiungere in una sola volta le istanze VM GPU.

  3. Elenca le istanze presenti nel MIG.

    gcloud

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

    Fornisci i seguenti valori:

    • INSTANCE_GROUP_NAME: il nome del MIG.

    • ZONE_NAME: La zona supportata da cui ottenere un elenco di istanze VM.

    • PROJECT_ID: (facoltativo) L'ID del progetto da cui ottenere un elenco di istanze VM.

    REST

    Per elencare tutte le istanze, invia la seguente richiesta GET.

    Il metodo HTTP e l'URL:

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

    Per restringere l'elenco delle istanze a una zona specifica, invia la seguente richiesta GET.

    Il metodo HTTP e l'URL:

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

    Fornisci i seguenti valori:

    • ZONE_NAME: La zona supportata da cui ottenere un elenco di istanze VM.

    • PROJECT_ID: l'ID del progetto da cui ottenere un elenco di istanze VM.

Abilita la modalità Confidential Computing sulla GPU

  1. Connettiti a un'istanza VM nel MIG utilizzando il comando gcloud compute ssh.

    gcloud compute ssh
    
  2. Aggiorna l'elenco dei pacchetti e installa gli strumenti e le librerie necessari.

    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. Installa i driver GPU appropriati sull'istanza VM. Per le istanze VM in cui è abilitato l'avvio protetto, consulta Installare i driver GPU (VM con avvio protetto). Ti consigliamo di utilizzare la versione del driver nvidia-driver-575-open.

  4. Per configurare una comunicazione sicura tra la GPU e il driver GPU, abilita 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. Abilita la modalità di persistenza per stabilire una connessione sicura Security Protocol and Data Model (SPDM) tra la GPU e il driver 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. Riavvia l'istanza VM per applicare le configurazioni LKCA e della modalità di persistenza.

    sudo reboot
    
  7. (Facoltativo) Installa i seguenti esempi CUDA.

    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
    

Passaggi successivi