Para usar GPUs com VMs confidenciais, crie uma instância de VM confidencial usando o modelo de provisionamento spot ou flexível com base no tipo de máquina a3-highgpu-1g e use o Intel TDX. Depois de criar a instância de VM, ative o modo de computação confidencial na GPU anexada.
Para criar uma instância de VM usando o modelo spot ou de início flexível, faça o seguinte:
Para usar o modelo spot, crie uma instância de VM spot otimizada para aceleradores. Para conferir as etapas detalhadas, consulte Modelo Spot.
Para usar o modelo de início flexível, crie um grupo gerenciado de instâncias (MIG). Para ver as etapas detalhadas, consulte Modelo de início flexível.
Modelo de spot
gcloud
Para criar uma instância de VM Spot otimizada para aceleradores com a
CLI gcloud, use o
subcomando instances create
com a 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
Forneça os valores a seguir:
VM_NAME
: o nome da nova instância de VM.IMAGE_PROJECT
: o projeto que contém a imagem do sistema operacional compatível. Recomendamos usar o projeto de imagemubuntu-os-cloud
para imagens do Ubuntu. Você também pode usar o projeto de imagemconfidential-vm-images
para imagens do Container-Optimized OS.IMAGE_FAMILY_NAME
: a família da imagem do sistema operacional compatível com VMs confidenciais. Ao usar o projeto de imagemubuntu-os-cloud
, recomendamos usar a família de imagensubuntu-2204-lts
. Para imagens do Container-Optimized OS do projetoconfidential-vm-images
, use a família de imagenscos-tdx-113-lts
.ZONE
: a zona compatível em que a VM será criada.
REST
Para criar uma instância VM spot, envie a seguinte solicitação POST com o conteúdo do corpo apropriado.
O método HTTP e o URL:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
Solicitar corpo JSON:
{
"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",
}
Forneça os valores a seguir:
VM_NAME
: o nome do novo modelo de instância de VM.IMAGE_PROJECT
: o projeto que contém a imagem do sistema operacional compatível. Recomendamos usar o projeto de imagemubuntu-os-cloud
para imagens do Ubuntu. Você também pode usar o projeto de imagemconfidential-vm-images
para imagens do Container-Optimized OS.IMAGE_FAMILY_NAME
: a família da imagem do sistema operacional compatível com VMs confidenciais. Ao usar o projeto de imagemubuntu-os-cloud
, recomendamos usar a família de imagensubuntu-2204-lts
. Para imagens do Container-Optimized OS do projetoconfidential-vm-images
, use a família de imagenscos-tdx-113-lts
.PROJECT_ID
: opcional. O ID do projeto em que a VM será criada.ZONE
: a zona compatível em que a VM será criada.
Modelo de início flexível
Para usar o modelo de início flexível, crie um modelo de instância e depois um MIG usando esse modelo. 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
- Para garantir que haja cota de GPU suficiente para os recursos solicitados, verifique sua cota de GPU.
Para uma instância de VM confidencial com uma GPU, solicite uma cota de GPU preemptiva para usar
os recursos. Quando você solicita uma cota de GPU, precisa pedir uma cota para os modelos de GPU que você quer criar em cada região e outra cota global (
GPUs (all regions)
) para o número total de GPUs de todos os tipos em todas as regiões. - Para entender o consumo de cota, confira VMs de GPU e cotas de alocação preemptivas.
- Consulte os pré-requisitos para criar um MIG e as limitações para criar uma solicitação de redimensionamento em um MIG.
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.
Criar um modelo de instância.
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
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_TEMPLATE_NAME
: o nome do novo modelo de instância de VM.IMAGE_PROJECT
: o projeto que contém a imagem do sistema operacional compatível. Recomendamos usar o projeto de imagemubuntu-os-cloud
para imagens do Ubuntu. Você também pode usar o projeto de imagemconfidential-vm-images
para imagens do Container-Optimized OS.IMAGE_FAMILY_NAME
: a família da imagem do sistema operacional compatível com VMs confidenciais. Ao usar o projeto de imagemubuntu-os-cloud
, recomendamos usar a família de imagensubuntu-2204-lts
. Para imagens do Container-Optimized OS do projetoconfidential-vm-images
, use a família de imagenscos-tdx-113-lts
.PROJECT_ID
: opcional. O 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.
O método HTTP e o URL:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/ZONE_NAME/instanceTemplates
Solicitar corpo JSON:
{ "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" } } }
Para ativar a Inicialização segura, inclua o objeto a seguir para inicializações de instâncias de VM.
"shieldedInstanceConfig": { "enableIntegrityMonitoring": true, "enableSecureBoot": true, "enableVtpm": true }
Forneça os valores a seguir:
INSTANCE_TEMPLATE_NAME
: o nome do novo modelo de instância de VM.IMAGE_PROJECT
: o projeto que contém a imagem do sistema operacional compatível. Recomendamos usar o projeto de imagemubuntu-os-cloud
para imagens do Ubuntu. Você também pode usar o projeto de imagemconfidential-vm-images
para imagens do Container-Optimized OS.IMAGE_FAMILY_NAME
: a família da imagem do sistema operacional compatível com VMs confidenciais. Ao usar o projeto de imagemubuntu-os-cloud
, recomendamos usar a família de imagensubuntu-2204-lts
. Para imagens do Container-Optimized OS do projetoconfidential-vm-images
, use a família de imagenscos-tdx-113-lts
.PROJECT_ID
: opcional. O ID do projeto em que a VM será criada.ZONE
: a zona compatível em que o MIG será criado.
Crie um MIG e uma solicitação de redimensionamento para adicionar instâncias de VM de GPU de uma só vez.
Liste as instâncias presentes no MIG.
gcloud
gcloud compute instance-groups managed list-instances INSTANCE_GROUP_NAME \ --zone=ZONE \ --project=PROJECT_ID
Forneça os valores a seguir:
INSTANCE_GROUP_NAME
: o nome do MIG;ZONE
: 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 todas as instâncias, envie a seguinte solicitação GET.
O método HTTP e o URL:
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.
O método HTTP e o URL:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/ZONE/instanceTemplates
Forneça os valores a seguir:
ZONE
: 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.
Ativar o modo de computação confidencial na GPU
Conecte-se a uma instância de VM no MIG usando o comando gcloud compute ssh.
gcloud compute ssh
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
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
nvidia-550-server-open
do driver.Para configurar uma comunicação segura entre a GPU e o driver dela, ative a 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
Para garantir uma conexão segura de protocolo de segurança e modelo de dados (SPDM) entre a GPU e o driver de GPU, ative o modo de persistência.
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
Reinicie a instância de VM para aplicar as configurações do LKCA e do modo de persistência.
sudo reboot
(Opcional) Instale os seguintes exemplos do 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