Criar uma instância de VM confidencial com GPU

Para usar GPUs com instâncias de VM confidencial, crie uma instância de VM usando um tipo de máquina e um modelo de provisionamento de instância compatíveis. Depois de criar a instância de VM, ative o modo de computação confidencial na GPU anexada.

As instâncias de VM confidencial com GPUs NVIDIA estão disponíveis nos seguintes tipos de máquina:

  • Tipo de máquina A3 High: GPUs NVIDIA H100 com Intel TDX. Compatível com modelos de provisionamento spot e de início flexível.

  • Tipo de máquina G4 (prévia): NVIDIA RTX PRO 6000 com AMD SEV. Compatível com modelos de provisionamento padrão (sob demanda), spot e de início flexível, além de reservas.

Antes de criar uma instância de VM confidencial com GPU, verifique se você tem cota de GPU suficiente. Para mais informações, consulte Requisito de cota de GPU.

Criar uma instância de VM confidencial com GPU

Para criar uma instância de VM confidencial com uma GPU anexada, use um dos seguintes modelos de provisionamento:

Modelo padrão (sob demanda) ou spot

gcloud

Para criar uma instância de VM padrão (sob demanda) ou Spot otimizada para aceleradores com a CLI gcloud, use o subcomando instances create com a 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

Para ativar a Inicialização segura, use a flag --shielded-secure-boot para inicializações de instâncias de VM.

Forneça os valores a seguir:

  • INSTANCE_NAME: o nome da nova instância de VM.

  • PROVISIONING_MODEL: o modelo de provisionamento aceito pelo tipo de máquina. Escolha uma destas opções:

    • Tipo de máquina A3 High: SPOT para instâncias de VM spot.

    • Tipo de máquina G4 (prévia): STANDARD para instâncias de VM padrão (sob demanda) ou SPOT para instâncias de VM spot. Se não for especificado, o valor padrão será STANDARD.

  • CONFIDENTIAL_COMPUTING_TECHNOLOGY: o tipo de tecnologia de computação confidencial a ser usada. Escolha uma destas opções:

    • Tipo de máquina A3 High (a3-highgpu-1g): TDX

    • Tipo de máquina G4 (g4-standard-48): SEV

  • MACHINE_TYPE_NAME: o tipo de máquina da VM. Escolha uma das seguintes opções:

  • ZONE_NAME: a zona compatível em que a VM será criada.

  • IMAGE_PROJECT: o projeto que contém a imagem do sistema operacional compatível. Escolha uma destas opções:

    • Tipo de máquina A3 High: ubuntu-os-cloud para imagens do Ubuntu ou confidential-vm-images para imagens do Container-Optimized OS.

    • Tipo de máquina G4 (prévia): ubuntu-os-cloud para imagens do Ubuntu ou cos-cloud para imagens do Container-Optimized OS.

  • IMAGE_FAMILY_NAME: a família da imagem do sistema operacional compatível com a VM confidencial. Escolha a família de imagens com base no tipo de máquina:

    • Tipo de máquina A3 High:

      • ubuntu-2204-lts para projetos de imagens do Ubuntu.

      • cos-tdx-113-lts para projetos de imagens do Container-Optimized OS.

    • Tipo de máquina G4 (prévia):

      • ubuntu-2404-lts-amd64 para projetos de imagens do Ubuntu.

      • cos-125-lts para projetos de imagens do Container-Optimized OS.

REST

Para criar uma instância de VM padrão (sob demanda) ou do Spot, envie a seguinte solicitação POST com o conteúdo do corpo apropriado.

Use o método HTTP e o URL a seguir:

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

Use o seguinte corpo da solicitação JSON:

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

Forneça os valores a seguir:

  • PROJECT_ID: opcional. O ID do projeto em que a VM será criada.

  • ZONE: a zona compatível em que a VM será criada.

  • INSTANCE_NAME: o nome da nova instância de VM.

  • MACHINE_TYPE_NAME: o tipo de máquina da VM. Escolha uma destas opções:

  • CONFIDENTIAL_COMPUTING_TECHNOLOGY: o tipo de tecnologia de computação confidencial a ser usada. Escolha uma destas opções:

    • Tipo de máquina A3 High (a3-highgpu-1g): TDX

    • Tipo de máquina G4 (g4-standard-48): SEV

  • PROVISIONING_MODEL: o modelo de provisionamento aceito pela série de máquinas. Escolha uma destas opções:

    • Tipo de máquina A3 High: SPOT para instâncias de VM spot.

    • Tipo de máquina G4 (pré-lançamento): STANDARD para instâncias de VM padrão (sob demanda) ou SPOT para instâncias de VM spot. Se não for especificado, o valor padrão será STANDARD.

  • IMAGE_PROJECT: o projeto que contém a imagem do sistema operacional compatível. Escolha uma destas opções:

    • Tipo de máquina A3 High: ubuntu-os-cloud para imagens do Ubuntu ou confidential-vm-images para imagens do Container-Optimized OS.

    • Tipo de máquina G4 (prévia): ubuntu-os-cloud para imagens do Ubuntu ou cos-cloud para imagens do Container-Optimized OS.

  • IMAGE_FAMILY: a família da imagem do sistema operacional compatível com a VM confidencial. Escolha a família de imagens com base no tipo de máquina:

    • Tipo de máquina A3 High:

      • ubuntu-2204-lts para projetos de imagens do Ubuntu.

      • cos-tdx-113-lts para projetos de imagem do Container-Optimized OS.

    • Tipo de máquina G4 (prévia):

      • ubuntu-2404-lts-amd64 para projetos de imagens do Ubuntu.

      • cos-125-lts para projetos de imagens do Container-Optimized OS.

Modelo de início flexível

Para usar o modelo de início flexível, primeiro crie um modelo de instância e use-o para criar um grupo gerenciado de instâncias (MIG). Em seguida, adicione instâncias de VM de GPU ao MIG usando solicitações de redimensionamento.

Usar uma solicitação de redimensionamento do MIG com o modelo de provisionamento de início flexível melhora a capacidade de acesso das instâncias de VM de GPU. Para mais informações, consulte Sobre solicitações de redimensionamento em um MIG.

Antes de começar

Criar um MIG com instâncias de VM de GPU

Para criar um modelo de instância e usá-lo para criar um MIG, siga estas etapas.

  1. Criar um modelo de instância.

    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
    

    Forneça os valores a seguir:

    • INSTANCE_TEMPLATE_NAME: o nome do novo modelo de instância de VM.

    • CONFIDENTIAL_COMPUTING_TECHNOLOGY: o tipo de tecnologia de computação confidencial a ser usada. Escolha uma destas opções:

      • Tipo de máquina A3 High (a3-highgpu-1g): TDX

      • Tipo de máquina G4 (g4-standard-48): SEV

    • MACHINE_TYPE_NAME: o tipo de máquina da VM. Escolha uma das seguintes opções:

    • IMAGE_PROJECT: o projeto que contém a imagem do sistema operacional compatível. Escolha uma destas opções:

      • Tipo de máquina A3 High: ubuntu-os-cloud para imagens do Ubuntu ou confidential-vm-images para imagens do Container-Optimized OS.

      • Tipo de máquina G4 (prévia): ubuntu-os-cloud para imagens do Ubuntu ou cos-cloud para imagens do Container-Optimized OS.

    • IMAGE_FAMILY_NAME: a família da imagem do sistema operacional compatível com VMs confidenciais a ser usada. Escolha a família de imagens com base no tipo de máquina:

      • Tipo de máquina A3 High:

        • ubuntu-2204-lts para projetos de imagens do Ubuntu.

        • cos-tdx-113-lts para projetos de imagem do Container-Optimized OS.

      • Tipo de máquina G4 (prévia):

        • ubuntu-2404-lts-amd64 para projetos de imagens do Ubuntu.

        • cos-125-lts para projetos de imagens do Container-Optimized OS.

    • RUN_DURATION: a duração da execução das instâncias de VM solicitadas. Formate o valor como o número de dias, horas, minutos ou segundos, seguido por d, h, m e s, respectivamente. Exemplo: 6d8h44m.

    • PROJECT_ID: ID do projeto em que a VM será criada.

    REST

    Para criar um modelo de instância de VM confidencial, envie a seguinte solicitação POST com o conteúdo do corpo apropriado.

    Use o método HTTP e o URL a seguir:

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

    Use o seguinte corpo da solicitação JSON:

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

    Para ativar a Inicialização segura, inclua o seguinte objeto para inicializações de instâncias de VM.

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

    Forneça os valores a seguir:

    • PROJECT_ID: o ID do projeto em que o modelo será criado.

    • REGION: a região em que o modelo será criado.

    • INSTANCE_TEMPLATE_NAME: o nome do novo modelo de instância de VM.

    • CONFIDENTIAL_COMPUTING_TECHNOLOGY: o tipo de tecnologia de computação confidencial a ser usada. Escolha uma destas opções:

      • Tipo de máquina A3 High (a3-highgpu-1g): TDX

      • Tipo de máquina G4 (g4-standard-48): SEV

    • MACHINE_TYPE_NAME: o tipo de máquina da VM. Escolha uma das seguintes opções:

    • RUN_DURATION_IN_SECONDS: a duração, em segundos, em que você quer que as instâncias de VM solicitadas sejam executadas. O valor precisa estar entre 600 e 604800 segundos.

    • IMAGE_PROJECT: o projeto que contém a imagem do sistema operacional compatível. Escolha uma destas opções:

      • Tipo de máquina A3 High: ubuntu-os-cloud para imagens do Ubuntu ou confidential-vm-images para imagens do Container-Optimized OS.

      • Tipo de máquina G4 (prévia): ubuntu-os-cloud para imagens do Ubuntu ou cos-cloud para imagens do Container-Optimized OS.

    • IMAGE_FAMILY_NAME: a família da imagem do sistema operacional compatível com VMs confidenciais a ser usada. Escolha a família de imagens com base no tipo de máquina:

      • Tipo de máquina A3 High:

        • ubuntu-2204-lts para projetos de imagens do Ubuntu.

        • cos-tdx-113-lts para projetos de imagem do Container-Optimized OS.

      • Tipo de máquina G4 (prévia):

        • ubuntu-2404-lts-amd64 para projetos de imagens do Ubuntu.

        • cos-125-lts para projetos de imagens do Container-Optimized OS.

  2. Crie um MIG e uma solicitação de redimensionamento para adicionar instâncias de VM de GPU de uma só vez.

  3. Liste as instâncias presentes no MIG.

    gcloud

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

    Forneça os valores a seguir:

    • INSTANCE_GROUP_NAME: o nome do MIG;

    • ZONE_NAME: a zona compatível para receber uma lista de instâncias de VM.

    • PROJECT_ID: opcional. O ID do projeto para receber uma lista de instâncias de VM.

    REST

    Para listar todos os modelos, envie a seguinte solicitação GET.

    Use o método HTTP e o URL a seguir:

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

    Para restringir a lista de instâncias a uma zona específica, envie a seguinte solicitação GET.

    Use o método HTTP e o URL a seguir:

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

    Forneça os valores a seguir:

    • ZONE_NAME: a zona compatível para receber uma lista de instâncias de VM.

    • PROJECT_ID: o ID do projeto para receber uma lista de instâncias de VM.

Usar reservas com instâncias de VM confidencial

É possível usar reservas para garantir que você tenha capacidade para suas instâncias de VM confidencial apenas com o tipo de máquina G4 (prévia).

Para usar uma reserva na sua instância de VM confidencial:

  1. Crie uma reserva padrão na zona compatível. É possível controlar como as instâncias consomem essa reserva usando a flag --require-specific-reservation durante a criação da reserva.

  2. Crie uma instância de VM confidencial para usar a reserva. Ao criar a instância de VM, inclua a flag --confidential-compute-type=SEV para torná-la uma instância de VM confidencial. A forma como essa instância consome a reserva depende das configurações de afinidade dela.

Os exemplos a seguir mostram como usar reservas com instâncias de VM confidencial. O método para consumir a reserva depende de como ela foi criada:

  • Consumo automático: se uma reserva for criada sem a flag --require-specific-reservation, você poderá criar uma instância de VM confidencial G4 com propriedades correspondentes (como tipo de máquina ou zona) para usar automaticamente a reserva.

  • Consumo específico: se uma reserva for criada com a flag --require-specific-reservation, você precisará segmentá-la usando as flags --reservation-affinity=specific e --reservation=RESERVATION_NAME ao criar a instância:

    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
    

    Forneça os valores a seguir:

    • INSTANCE_NAME: o nome da nova instância de VM.

    • PROJECT_ID: opcional. O ID do projeto em que a VM será criada.

    • ZONE_NAME: a zona compatível em que a VM será criada.

    • RESERVATION_NAME: o nome da reserva.

Para saber como as instâncias de VM consomem reservas e como a afinidade funciona, consulte Consumir reservas.

Ativar o modo de computação confidencial na GPU

  1. Conecte-se a uma instância de VM no MIG usando o comando gcloud compute ssh.

    gcloud compute ssh
    
  2. Atualize a lista de pacotes e instale as ferramentas e bibliotecas necessárias.

    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. Instale os drivers de GPU adequados na instância de VM. Para instâncias de VM com a inicialização segura ativada, consulte Instalar drivers de GPU (VMs com inicialização segura). Recomendamos usar a versão 580 ou mais recente dos drivers de módulo de kernel aberto da NVIDIA.

  4. Para configurar a comunicação segura entre a GPU e o driver dela, ative a API de criptografia do kernel do Linux (LKCA, na sigla em inglês).

    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. Ative o modo de persistência para estabelecer uma conexão segura de protocolo de segurança e modelo de dados (SPDM) entre a GPU e o driver 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. Reinicie a instância de VM para aplicar as configurações do LKCA e do modo de persistência.

    sudo reboot
    
  7. Conecte-se a uma instância de VM no MIG usando o comando gcloud compute ssh.

    gcloud compute ssh
    
  8. (Opcional) Instale os exemplos do CUDA compatíveis com a versão do driver necessária.

    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
    

Preços

Durante a prévia, as taxas extras para instâncias de VM confidencial no tipo de máquina G4 são oferecidas sem custos financeiros. Essas taxas incluem o sobretaxa de computação confidencial e a taxa de licença da NVIDIA. As cobranças padrão dos recursos subjacentes do Compute Engine, como o tipo de máquina G4, a GPU e o armazenamento, ainda se aplicam. Essas taxas adicionais de computação confidencial serão aplicadas após o fim do período de prévia na disponibilidade geral (GA). Para mais detalhes sobre preços, consulte Preços de VMs confidenciais.

A seguir