Confidential VM-Instanz mit GPU erstellen

Wenn Sie GPUs mit Confidential VMs verwenden möchten, müssen Sie eine Confidential VM-Instanz mit dem Bereitstellungsmodell für Spot- oder Flex-Start-VMs auf Grundlage des Maschinentyps a3-highgpu-1g erstellen und Intel TDX verwenden. Nachdem Sie die VM-Instanz erstellt haben, aktivieren Sie den Confidential Computing-Modus auf der angehängten GPU.

So erstellen Sie eine VM-Instanz mit dem Spot- oder Flex-Start-Modell:

Spot-Modell

gcloud

Verwenden Sie zum Erstellen einer beschleunigungsoptimierten Spot-VM-Instanz mit der gcloud CLI den Unterbefehl instances create mit dem Flag --provisioning-model.

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

Geben Sie folgende Werte an:

  • VM_NAME: Der Name der neuen VM-Instanz.

  • IMAGE_PROJECT: Das Projekt, das das unterstützte Betriebssystem-Image enthält. Wir empfehlen, das ubuntu-os-cloud-Image-Projekt für Ubuntu-Images zu verwenden. Optional können Sie das Image-Projekt confidential-vm-images für Container-Optimized OS-Images verwenden.

  • IMAGE_FAMILY_NAME: Die Familie für das von Confidential VMs unterstützte Betriebssystem-Image. Wenn Sie das ubuntu-os-cloud-Image-Projekt verwenden, empfehlen wir die Verwendung der ubuntu-2204-lts-Image-Familie. Verwenden Sie für Container-Optimized OS-Images aus dem Projekt confidential-vm-images die Image-Familie cos-tdx-113-lts.

  • ZONE: Die unterstützte Zone, in der die VM erstellt werden soll.

REST

Senden Sie zum Erstellen einer Spot-VM-Instanz die folgende POST-Anfrage mit dem entsprechenden Inhalt des Anfragetexts.

Die HTTP-Methode und URL:

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

JSON-Text anfordern:

  {
    "name": "VM_NAME",
    "confidentialInstanceConfig": {
      "confidentialInstanceType": "TDX"
    },
    "scheduling": {
      "onHostMaintenance": "TERMINATE",
      "provisioningModel": "SPOT"
    },
    "disks": [
      {
        "type": "PERSISTENT",
        "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"
        }
      }
    ],
    "networkInterfaces": [
      {
        "name": "nic0",
        "network": "projects/PROJECT_ID/global/networks/default",
        "accessConfigs": [
          {
            "name": "external-nat",
            "type": "ONE_TO_ONE_NAT",
            "kind": "compute#accessConfig",
            "networkTier": "PREMIUM"
          }
        ],
        "kind": "compute#networkInterface"
      }
    ],
    "machineType": "zones/ZONE/machineTypes/a3-highgpu-1g",
  }

Geben Sie folgende Werte an:

  • VM_NAME: Der Name der neuen VM-Instanzvorlage.

  • IMAGE_PROJECT: Das Projekt, das das unterstützte Betriebssystem-Image enthält. Wir empfehlen, das ubuntu-os-cloud-Image-Projekt für Ubuntu-Images zu verwenden. Optional können Sie das Image-Projekt confidential-vm-images für Container-Optimized OS-Images verwenden.

  • IMAGE_FAMILY_NAME: Die Familie für das von Confidential VMs unterstützte Betriebssystem-Image. Wenn Sie das ubuntu-os-cloud-Image-Projekt verwenden, empfehlen wir die Verwendung der ubuntu-2204-lts-Image-Familie. Verwenden Sie für Container-Optimized OS-Images aus dem Projekt confidential-vm-images die Image-Familie cos-tdx-113-lts.

  • PROJECT_ID: Optional. Die ID des Projekts, in dem die VM erstellt werden soll.

  • ZONE: Die unterstützte Zone, in der die VM erstellt werden soll.

Flex-Start-Modell

Wenn Sie das Flex-Start-Modell verwenden möchten, erstellen Sie eine Instanzvorlage und dann eine MIG mit dieser Vorlage. Anschließend können Sie der MIG mithilfe von Anfragen zur Größenänderung GPU-VM-Instanzen hinzufügen.

Wenn Sie eine Anfrage zur Größenanpassung für eine MIG mit dem Bereitstellungsmodell „Flex-Start“ verwenden, wird die Verfügbarkeit von GPU-VM-Instanzen verbessert. Weitere Informationen finden Sie unter Anfragen zur Größenänderung in einer MIG.

Hinweise

  • Prüfen Sie Ihr GPU-Kontingent, damit Ihr Kontingent für die angeforderten Ressourcen ausreicht. Wenn Sie eine vertrauliche VM-Instanz mit einer GPU verwenden möchten, fordern Sie ein GPU-Kontingent auf Abruf an. Wenn Sie ein GPU-Kontingent anfordern, müssen Sie ein Kontingent für die GPU-Modelle, die Sie in den einzelnen Regionen erstellen möchten, sowie ein zusätzliches globales Kontingent (GPUs (all regions)) für die Gesamtzahl der GPUs aller Typen in allen Regionen anfordern.
  • Informationen zum Kontingentverbrauch finden Sie unter GPU-VMs und Zuteilungskontingente auf Abruf.
  • Voraussetzungen für das Erstellen einer MIG und Beschränkungen für das Erstellen einer Anfrage zur Größenänderung in einer MIG

MIG mit GPU-VM-Instanzen erstellen

Führen Sie die folgenden Schritte aus, um eine Instanzvorlage zu erstellen und dann anhand der Vorlage eine MIG zu erstellen.

  1. Erstellen Sie eine Instanzvorlage.

    gcloud

    gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
        --machine-type=a3-highgpu-1g \
        --image-project=IMAGE_PROJECT \
        --image-family=IMAGE_FAMILY_NAME \
        --maintenance-policy=TERMINATE \
        --reservation-affinity=none \
        --boot-disk-size=30G \
        --confidential-compute-type=TDX \
        --project=PROJECT_ID
    

    Wenn Sie Secure Boot aktivieren möchten, können Sie optional das Flag --shielded-secure-boot für VM-Instanz-Boots verwenden.

    Geben Sie folgende Werte an:

    • INSTANCE_TEMPLATE_NAME: Der Name der neuen VM-Instanzvorlage.

    • IMAGE_PROJECT: Das Projekt, das das unterstützte Betriebssystem-Image enthält. Wir empfehlen, das ubuntu-os-cloud-Image-Projekt für Ubuntu-Images zu verwenden. Optional können Sie das Image-Projekt confidential-vm-images für Container-Optimized OS-Images verwenden.

    • IMAGE_FAMILY_NAME: Die Familie für das von Confidential VMs unterstützte Betriebssystem-Image. Wenn Sie das ubuntu-os-cloud-Image-Projekt verwenden, empfehlen wir die Verwendung der ubuntu-2204-lts-Image-Familie. Verwenden Sie für Container-Optimized OS-Images aus dem Projekt confidential-vm-images die Image-Familie cos-tdx-113-lts.

    • PROJECT_ID: Optional. Die ID des Projekts, in dem die VM erstellt werden soll.

    REST

    Senden Sie zum Erstellen einer Vorlage für Confidential VM-Instanzen die folgende POST-Anfrage mit dem entsprechenden Inhalt des Anfragetexts.

    Die HTTP-Methode und URL:

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

    JSON-Text anfordern:

    {
      "name": "INSTANCE_TEMPLATE_NAME",
      "properties": {
        "confidentialInstanceConfig": {
          "confidentialInstanceType": "TDX"
        },
        "scheduling": {
          "onHostMaintenance": "TERMINATE",
          "provisioningModel": "STANDARD",
          "automaticRestart": true,
          "preemptible": false
        },
        "disks": [
          {
            "type": "PERSISTENT",
            "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"
            }
          }
        ],
        "networkInterfaces": [
          {
            "name": "nic0",
            "network": "projects/PROJECT_ID/global/networks/default",
            "accessConfigs": [
              {
                "name": "external-nat",
                "type": "ONE_TO_ONE_NAT",
                "kind": "compute#accessConfig",
                "networkTier": "PREMIUM"
              }
            ],
            "kind": "compute#networkInterface"
          }
        ],
        "reservationAffinity": {
          "consumeReservationType": "NO_RESERVATION"
        },
        "canIpForward": false,
        "machineType": "a3-highgpu-1g",
        "metadata": {
          "fingerprint": "3y_uc6s9Qvs=",
          "kind": "compute#metadata"
        }
      }
    }
    

    Wenn Sie Secure Boot aktivieren möchten, können Sie optional das folgende Objekt für VM-Instanz-Boots einfügen.

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

    Geben Sie folgende Werte an:

    • INSTANCE_TEMPLATE_NAME: Der Name der neuen VM-Instanzvorlage.

    • IMAGE_PROJECT: Das Projekt, das das unterstützte Betriebssystem-Image enthält. Wir empfehlen, das ubuntu-os-cloud-Image-Projekt für Ubuntu-Images zu verwenden. Optional können Sie das Image-Projekt confidential-vm-images für Container-Optimized OS-Images verwenden.

    • IMAGE_FAMILY_NAME: Die Familie für das von Confidential VMs unterstützte Betriebssystem-Image. Wenn Sie das ubuntu-os-cloud-Image-Projekt verwenden, empfehlen wir die Verwendung der ubuntu-2204-lts-Image-Familie. Verwenden Sie für Container-Optimized OS-Images aus dem Projekt confidential-vm-images die Image-Familie cos-tdx-113-lts.

    • PROJECT_ID: Optional. Die ID des Projekts, in dem die VM erstellt werden soll.

    • ZONE: Die unterstützte Zone, in der die MIG erstellt werden soll.

  2. Erstellen Sie eine MIG und eine Anfrage zur Größenanpassung, um GPU-VM-Instanzen gleichzeitig hinzuzufügen.

  3. Listen Sie die Instanzen in der MIG auf.

    gcloud

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

    Geben Sie folgende Werte an:

    • INSTANCE_GROUP_NAME: Name der MIG.

    • ZONE: Die unterstützte Zone, aus der eine Liste von VM-Instanzen abgerufen werden soll.

    • PROJECT_ID: Optional. Die ID des Projekts, aus dem eine Liste von VM-Instanzen abgerufen werden soll.

    REST

    Senden Sie die folgende GET-Anfrage, um alle Instanzen aufzulisten.

    Die HTTP-Methode und URL:

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

    Wenn Sie die Liste der Instanzen auf eine bestimmte Zone beschränken möchten, senden Sie die folgende GET-Anfrage.

    Die HTTP-Methode und URL:

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

    Geben Sie folgende Werte an:

    • ZONE: Die unterstützte Zone, aus der eine Liste von VM-Instanzen abgerufen werden soll.

    • PROJECT_ID: Die ID des Projekts, aus dem eine Liste der VM-Instanzen abgerufen werden soll.

Confidential Computing-Modus auf der GPU aktivieren

  1. Stellen Sie mit dem Befehl gcloud compute ssh eine Verbindung zu einer VM-Instanz in der MIG her.

    gcloud compute ssh
    
  2. Aktualisieren Sie die Paketliste und installieren Sie die erforderlichen Tools und Bibliotheken.

    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. Installieren Sie die entsprechenden GPU-Treiber auf der VM-Instanz. Informationen zu VM-Instanzen mit aktiviertem Secure Boot finden Sie unter GPU-Treiber installieren (Secure Boot-VMs). Wir empfehlen die Verwendung der Treiberversion nvidia-550-server-open.

  4. Aktivieren Sie die Linux Kernel Crypto API (LKCA), um eine sichere Kommunikation zwischen der GPU und dem GPU-Treiber zu konfigurieren.

    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. Aktivieren Sie den Persistenzmodus, um eine sichere SPDM-Verbindung (Security Protocol and Data Model) zwischen der GPU und dem GPU-Treiber zu gewährleisten.

    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. Starten Sie die VM-Instanz neu, um die LKCA- und Persistenzmoduskonfigurationen anzuwenden.

    sudo reboot
    
  7. Optional: Installieren Sie die folgenden CUDA-Beispiele.

    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
    

Nächste Schritte