Confidential VM-Instanz mit GPU erstellen

Wenn Sie GPUs mit Confidential VM-Instanzen verwenden möchten, müssen Sie eine VM-Instanz mit einem unterstützten Maschinentyp und Instanzbereitstellungsmodell erstellen. Nachdem Sie die VM-Instanz erstellt haben, aktivieren Sie den Confidential Computing-Modus auf der angehängten GPU.

Confidential VM-Instanzen mit NVIDIA-GPUs sind für die folgenden Maschinentypen verfügbar:

  • A3 High-Maschinentyp: NVIDIA H100-GPUs mit Intel TDX. Unterstützt Spot- und Flex-Start-Bereitstellungsmodelle.

  • G4-Maschinentyp (Vorschau): NVIDIA RTX PRO 6000 mit AMD SEV. Unterstützt die Bereitstellungsmodelle „Standard“ (On-Demand), „Spot“ und „Flex-Start“ sowie Reservierungen.

Bevor Sie eine Confidential VM-Instanz mit GPU erstellen, müssen Sie sicherstellen, dass Sie ein ausreichendes GPU-Kontingent haben. Weitere Informationen finden Sie unter GPU-Kontingentanforderung.

Confidential VM-Instanz mit GPU erstellen

Verwenden Sie eines der folgenden Bereitstellungsmodelle, um eine Confidential VM-Instanz mit einer angehängten GPU zu erstellen:

Standardmodell (On-Demand) oder Spot-Modell

gcloud

Verwenden Sie zum Erstellen einer beschleunigeroptimierten Standard-VM-Instanz (On-Demand) oder Spot-VM-Instanz mit der gcloud CLI den Unterbefehl instances create mit dem Flag --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

Um Secure Boot zu aktivieren, können Sie das Flag --shielded-secure-boot für VM-Instanz-Boots verwenden.

Geben Sie folgende Werte an:

  • INSTANCE_NAME: Der Name der neuen VM-Instanz.

  • PROVISIONING_MODEL: Das vom Maschinentyp unterstützte Bereitstellungsmodell. Wählen Sie eine der folgenden Optionen aus:

    • A3 High-Maschinentyp: SPOT für Spot-VM-Instanzen.

    • G4-Maschinentyp (Vorabversion): STANDARD für Standard-VM-Instanzen (auf Abruf) oder SPOT für Spot-VM-Instanzen. Wenn kein Wert angegeben ist, lautet der Standardwert STANDARD.

  • CONFIDENTIAL_COMPUTING_TECHNOLOGY: Der Typ der zu verwendenden Confidential Computing-Technologie. Wählen Sie eine der folgenden Optionen aus:

    • Maschinentyp A3 High (a3-highgpu-1g): TDX

    • G4-Maschinentyp (g4-standard-48): SEV

  • MACHINE_TYPE_NAME: Der Maschinentyp der VM. Wählen Sie eine der folgenden Optionen aus:

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

  • IMAGE_PROJECT: Das Projekt, das das unterstützte Betriebssystem-Image enthält. Wählen Sie eine der folgenden Optionen aus:

    • A3 High-Maschinentyp: ubuntu-os-cloud für Ubuntu-Images oder confidential-vm-images für Container-Optimized OS-Images.

    • G4-Maschinentyp (Vorabversion): ubuntu-os-cloud für Ubuntu-Images oder cos-cloud für Container-Optimized OS-Images.

  • IMAGE_FAMILY_NAME: Die Familie für das von Confidential VM unterstützte Betriebssystem-Image. Wählen Sie die Image-Familie basierend auf Ihrem Maschinentyp aus:

    • A3 High-Maschinentyp:

      • ubuntu-2204-lts für Ubuntu-Image-Projekte.

      • cos-tdx-113-lts für Container-Optimized OS-Image-Projekte.

    • G4-Maschinentyp (Vorabversion):

      • ubuntu-2404-lts-amd64 für Ubuntu-Image-Projekte.

      • cos-125-lts für Container-Optimized OS-Image-Projekte.

REST

Senden Sie die folgende POST-Anfrage mit dem entsprechenden Inhalt des Anfragetexts, um eine Standard-VM-Instanz (On-Demand) oder eine Spot-VM-Instanz zu erstellen.

Verwenden Sie die folgende HTTP-Methode und URL:

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

Verwenden Sie den folgenden JSON-Anfragetext:

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

Geben Sie folgende Werte an:

  • 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.

  • INSTANCE_NAME: Der Name der neuen VM-Instanz.

  • MACHINE_TYPE_NAME: Der Maschinentyp der VM. Wählen Sie eine der folgenden Optionen aus:

  • CONFIDENTIAL_COMPUTING_TECHNOLOGY: Der Typ der zu verwendenden Confidential Computing-Technologie. Wählen Sie eine der folgenden Optionen aus:

    • Maschinentyp A3 High (a3-highgpu-1g): TDX

    • G4-Maschinentyp (g4-standard-48): SEV

  • PROVISIONING_MODEL: Das von der Maschinenserie unterstützte Bereitstellungsmodell. Wählen Sie eine der folgenden Optionen aus:

    • A3 High-Maschinentyp: SPOT für Spot-VM-Instanzen.

    • G4-Maschinentyp (Vorabversion): STANDARD für Standard-VM-Instanzen (auf Abruf) oder SPOT für Spot-VM-Instanzen. Wenn nichts angegeben ist, wird standardmäßig STANDARD verwendet.

  • IMAGE_PROJECT: Das Projekt, das das unterstützte Betriebssystem-Image enthält. Wählen Sie eine der folgenden Optionen aus:

    • A3 High-Maschinentyp: ubuntu-os-cloud für Ubuntu-Images oder confidential-vm-images für Container-Optimized OS-Images.

    • G4-Maschinentyp (Vorabversion): ubuntu-os-cloud für Ubuntu-Images oder cos-cloud für Container-Optimized OS-Images.

  • IMAGE_FAMILY: Die Familie für das von Confidential VM unterstützte Betriebssystem-Image. Wählen Sie die Image-Familie basierend auf Ihrem Maschinentyp aus:

    • A3 High-Maschinentyp:

      • ubuntu-2204-lts für Ubuntu-Image-Projekte.

      • cos-tdx-113-lts für Container-Optimized OS-Imageprojekte.

    • G4-Maschinentyp (Vorabversion):

      • ubuntu-2404-lts-amd64 für Ubuntu-Image-Projekte.

      • cos-125-lts für Container-Optimized OS-Image-Projekte.

Flex-Start-Modell

Wenn Sie das Modell mit flexiblem Start verwenden möchten, erstellen Sie zuerst eine Instanzvorlage und dann mit dieser Vorlage eine verwaltete Instanzgruppe (MIG). Anschließend können Sie der MIG mit Anfragen zur Größenanpassung 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 Informationen zu Anfragen zur Größenänderung in einer MIG.

Hinweis

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 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
    

    Geben Sie folgende Werte an:

    • INSTANCE_TEMPLATE_NAME: Der Name der neuen VM-Instanzvorlage.

    • CONFIDENTIAL_COMPUTING_TECHNOLOGY: Der Typ der zu verwendenden Confidential Computing-Technologie. Wählen Sie eine der folgenden Optionen aus:

      • Maschinentyp A3 High (a3-highgpu-1g): TDX

      • G4-Maschinentyp (g4-standard-48): SEV

    • MACHINE_TYPE_NAME: Der Maschinentyp der VM. Wählen Sie eine der folgenden Optionen aus:

    • IMAGE_PROJECT: Das Projekt, das das unterstützte Betriebssystem-Image enthält. Wählen Sie eine der folgenden Optionen aus:

      • A3 High-Maschinentyp: ubuntu-os-cloud für Ubuntu-Images oder confidential-vm-images für Container-Optimized OS-Images.

      • G4-Maschinentyp (Vorabversion): ubuntu-os-cloud für Ubuntu-Images oder cos-cloud für Container-Optimized OS-Images.

    • IMAGE_FAMILY_NAME: Die Familie für das von Confidential VM unterstützte Betriebssystem-Image, das verwendet werden soll. Wählen Sie die Image-Familie basierend auf Ihrem Maschinentyp aus:

      • A3 High-Maschinentyp:

        • ubuntu-2204-lts für Ubuntu-Image-Projekte.

        • cos-tdx-113-lts für Container-Optimized OS-Imageprojekte.

      • G4-Maschinentyp (Vorabversion):

        • ubuntu-2404-lts-amd64 für Ubuntu-Image-Projekte.

        • cos-125-lts für Container-Optimized OS-Image-Projekte.

    • RUN_DURATION: Die Dauer, für die die angeforderten VM-Instanzen ausgeführt werden sollen. Sie müssen den Wert als Anzahl der Tage, Stunden, Minuten oder Sekunden gefolgt von d, h, m bzw. s formatieren. Beispiel: 6d8h44m.

    • PROJECT_ID: 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.

    Verwenden Sie die folgende HTTP-Methode und URL:

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

    Verwenden Sie den folgenden JSON-Anfragetext:

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

    Um Secure Boot zu aktivieren, können Sie das folgende Objekt für VM-Instanz-Boots einfügen.

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

    Geben Sie folgende Werte an:

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

    • REGION: Die Region, in der die Vorlage erstellt werden soll.

    • INSTANCE_TEMPLATE_NAME: Der Name der neuen VM-Instanzvorlage.

    • CONFIDENTIAL_COMPUTING_TECHNOLOGY: Der Typ der zu verwendenden Confidential Computing-Technologie. Wählen Sie eine der folgenden Optionen aus:

      • Maschinentyp A3 High (a3-highgpu-1g): TDX

      • G4-Maschinentyp (g4-standard-48): SEV

    • MACHINE_TYPE_NAME: Der Maschinentyp der VM. Wählen Sie eine der folgenden Optionen aus:

    • RUN_DURATION_IN_SECONDS: Die Dauer in Sekunden, für die die angeforderten VM-Instanzen ausgeführt werden sollen. Der Wert muss zwischen 600 und 604800 Sekunden liegen.

    • IMAGE_PROJECT: Das Projekt, das das unterstützte Betriebssystem-Image enthält. Wählen Sie eine der folgenden Optionen aus:

      • A3 High-Maschinentyp: ubuntu-os-cloud für Ubuntu-Images oder confidential-vm-images für Container-Optimized OS-Images.

      • G4-Maschinentyp (Vorabversion): ubuntu-os-cloud für Ubuntu-Images oder cos-cloud für Container-Optimized OS-Images.

    • IMAGE_FAMILY_NAME: Die Familie für das von Confidential VM unterstützte Betriebssystem-Image, das verwendet werden soll. Wählen Sie die Image-Familie basierend auf Ihrem Maschinentyp aus:

      • A3 High-Maschinentyp:

        • ubuntu-2204-lts für Ubuntu-Image-Projekte.

        • cos-tdx-113-lts für Container-Optimized OS-Imageprojekte.

      • G4-Maschinentyp (Vorabversion):

        • ubuntu-2404-lts-amd64 für Ubuntu-Image-Projekte.

        • cos-125-lts für Container-Optimized OS-Image-Projekte.

  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_NAME \
        --project=PROJECT_ID
    

    Geben Sie folgende Werte an:

    • INSTANCE_GROUP_NAME: Name der MIG.

    • ZONE_NAME: 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 Vorlagen aufzulisten.

    Verwenden Sie die folgende 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.

    Verwenden Sie die folgende HTTP-Methode und URL:

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

    Geben Sie folgende Werte an:

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

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

Reservierungen mit Confidential VM-Instanzen verwenden

Sie können Reservierungen verwenden, um sicherzustellen, dass Sie Kapazität für Ihre Confidential VM-Instanzen nur mit dem G4-Maschinentyp (Vorschau) haben.

So verwenden Sie eine Reservierung für Ihre Confidential VM-Instanz:

  1. Standardreservierung in der unterstützten Zone erstellen Sie können steuern, wie Instanzen diese Reservierung nutzen, indem Sie beim Erstellen der Reservierung das Flag --require-specific-reservation verwenden.

  2. Erstellen Sie eine Confidential VM-Instanz, um die Reservierung zu verwenden. Wenn Sie die VM-Instanz erstellen, fügen Sie das Flag --confidential-compute-type=SEV ein, um sie zu einer Confidential VM-Instanz zu machen. Wie diese Instanz die Reservierung nutzt, hängt von den Affinitätseinstellungen der Reservierung ab.

In den folgenden Beispielen wird gezeigt, wie Sie Reservierungen mit Confidential VM-Instanzen verwenden. Die Methode zum Nutzen der Reservierung hängt davon ab, wie die Reservierung erstellt wurde:

  • Automatische Nutzung: Wenn eine Reservierung ohne das Flag --require-specific-reservation erstellt wird, können Sie eine G4-Confidential VM-Instanz mit übereinstimmenden Attributen (z. B. Maschinentyp oder Zone) erstellen, um die Reservierung automatisch zu nutzen.

  • Spezifische Nutzung: Wenn eine Reservierung mit dem Flag --require-specific-reservation erstellt wird, müssen Sie beim Erstellen der Instanz mit den Flags --reservation-affinity=specific und --reservation=RESERVATION_NAME auf die Reservierung verweisen:

    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
    

    Geben Sie folgende Werte an:

    • INSTANCE_NAME: Der Name der neuen VM-Instanz.

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

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

    • RESERVATION_NAME: Der Name der Reservierung

Informationen dazu, wie VM-Instanzen Reservierungen nutzen und wie die Affinität funktioniert, finden Sie unter Reservierungen nutzen.

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 von Version 580 oder höher der NVIDIA-Treiber für offene Kernelmodule.

  4. Aktivieren Sie die Linux Kernel Crypto API (LKCA), um die 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 herzustellen.

    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. Stellen Sie mit dem Befehl „gcloud compute ssh“ eine Verbindung zu einer VM-Instanz in der MIG her.

    gcloud compute ssh
    
  8. Optional: Installieren Sie die CUDA-Beispiele, die die benötigte Treiberversion unterstützen.

    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
    

Preise

Während der Vorschauphase fallen für Confidential VM-Instanzen vom Maschinentyp G4 keine zusätzlichen Gebühren an. Diese Gebühren umfassen den Zuschlag für Confidential Computing und die NVIDIA-Lizenzgebühr. Die Standardgebühren für die zugrunde liegenden Compute Engine-Ressourcen wie den Maschinentyp G4, die GPU und den Speicher fallen weiterhin an. Diese zusätzlichen Gebühren für Confidential Computing fallen nach dem Ende des Vorabzeitraums bei allgemeiner Verfügbarkeit (General Availability, GA) an. Weitere Informationen zu den Preisen finden Sie unter Preise für Confidential VMs.

Nächste Schritte