Crie uma instância A3 High ou A2

Este documento explica como criar uma instância de máquina virtual (VM) que usa um tipo de máquina da série de máquinas otimizadas para aceleradores A2 ou A3 High.

Para os tipos de máquinas A3 High, este documento apenas abrange os tipos de máquinas que têm menos de 8 GPUs anexadas. Estes tipos de máquinas A3 High com menos de 8 GPUs só podem ser criados como VMs Spot ou VMs de início flexível. Para criar uma instância A3 com 8 GPUs anexadas, consulte o artigo Crie uma instância A3 Mega, A3 High ou A3 Edge com o GPUDirect ativado.

Para criar várias VMs A3 ou A2, também pode usar uma das seguintes opções:

Antes de começar

  • Para rever as limitações e os passos pré-requisitos adicionais para criar instâncias com GPUs anexadas, como selecionar uma imagem do SO e verificar a quota de GPU, consulte o resumo da criação de uma instância com GPUs anexadas.
  • Se ainda não o tiver feito, configure a autenticação. A autenticação valida a sua identidade para aceder a Google Cloud serviços e APIs. Para executar código ou exemplos a partir de um ambiente de desenvolvimento local, pode autenticar-se no Compute Engine selecionando uma das seguintes opções:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

    2. Set a default region and zone.

    REST

    Para usar os exemplos da API REST nesta página num ambiente de desenvolvimento local, usa as credenciais que fornece à CLI gcloud.

      Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

    Para mais informações, consulte o artigo Autenticar para usar REST na Google Cloud documentação de autenticação.

Funções necessárias

Para receber as autorizações necessárias para criar VMs, peça ao seu administrador para lhe conceder a função de IAM Administrador de instâncias do Compute (v1) (roles/compute.instanceAdmin.v1) no projeto. Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Esta função predefinida contém as autorizações necessárias para criar VMs. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:

Autorizações necessárias

As seguintes autorizações são necessárias para criar VMs:

  • compute.instances.create no projeto
  • Para usar uma imagem personalizada para criar a VM: compute.images.useReadOnly na imagem
  • Para usar um instantâneo para criar a VM: compute.snapshots.useReadOnly no instantâneo
  • Para usar um modelo de instância para criar a VM: compute.instanceTemplates.useReadOnly no modelo de instância
  • Para especificar uma sub-rede para a sua VM: compute.subnetworks.use no projeto ou na sub-rede escolhida
  • Para especificar um endereço IP estático para a VM: compute.addresses.use no projeto
  • Para atribuir um endereço IP externo à VM quando usar uma rede VPC: compute.subnetworks.useExternalIp no projeto ou na sub-rede escolhida
  • Para atribuir uma rede antiga à VM: compute.networks.use no projeto
  • Para atribuir um endereço IP externo à VM quando usar uma rede antiga: compute.networks.useExternalIp no projeto
  • Para definir os metadados da instância de VM para a VM: compute.instances.setMetadata no projeto
  • Para definir etiquetas para a VM: compute.instances.setTags na VM
  • Para definir etiquetas para a VM: compute.instances.setLabels na VM
  • Para definir uma conta de serviço para a VM usar: compute.instances.setServiceAccount na VM
  • Para criar um novo disco para a VM: compute.disks.create no projeto
  • Para anexar um disco existente no modo de leitura ou leitura/escrita: compute.disks.use no disco
  • Para anexar um disco existente no modo de leitura: compute.disks.useReadOnly no disco

Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.

Crie uma VM com GPUs anexadas

Pode criar uma VM otimizada para aceleradores A2 ou A3 através da Google Cloud consola, da Google Cloud CLI ou da REST.

Consola

  1. Na Google Cloud consola, aceda à página Criar uma instância.

    Aceda a Criar uma instância
  2. No campo Nome, introduza um nome exclusivo para a sua instância. Consulte a convenção de nomenclatura de recursos.
  3. Selecione uma região e uma zona onde estes tipos de máquinas de GPU estão disponíveis. Consulte as regiões e zonas de GPU.
  4. Na secção de tipos de máquinas, selecione GPUs.
    1. Na lista Tipo de GPU, selecione o tipo de GPU.
      • Para VMs otimizadas para o acelerador A2, selecione NVIDIA A100 40GB ou NVIDIA A100 80GB
      • Para VMs otimizadas pelo acelerador A3, selecione NVIDIA H100 80GB
    2. Na lista Número de GPUs, selecione o número de GPUs.
  5. Configure o disco de arranque da seguinte forma:
    1. Na secção SO e armazenamento, clique em Alterar. É apresentada a página Configuração do disco de arranque.
    2. Na página Configuração do disco de arranque, faça o seguinte:
      1. No separador Imagens públicas, escolha uma imagem do Compute Engine suportada ou imagens de VMs de aprendizagem avançada.
      1. Especifique um tamanho do disco de arranque de, pelo menos, 40 GiB.
      2. Para confirmar as opções do disco de arranque, clique em Selecionar.
  6. Configure o modelo de aprovisionamento. Na secção Opções avançadas, em Modelo de aprovisionamento de VMs, selecione uma das seguintes opções:
    • Padrão: para cargas de trabalho de uso geral.
    • Flex-start: para cargas de trabalho de curta duração que podem tolerar uma hora de início flexível. Para mais informações, consulte o artigo Acerca das VMs de início flexível.
    • Spot: para cargas de trabalho com tolerância a falhas que podem ser anuladas. Para mais informações, consulte o artigo VMs do Spot.
  7. Opcional: na lista No encerramento da VM, selecione o que acontece quando o Compute Engine antecipa as VMs de capacidade instantânea ou as VMs de início flexível atingem o fim da respetiva duração de execução:
    • Para parar a VM durante a preempção, selecione Parar (predefinição).
    • Para eliminar a VM durante a preempção, selecione Eliminar.
  8. Para criar e iniciar a VM, clique em Criar.

gcloud

Para criar e iniciar uma VM, use o comando gcloud compute instances create com as seguintes flags. Não é possível migrar VMs com GPUs em direto. Por isso, certifique-se de que define a flag --maintenance-policy=TERMINATE.

O comando de exemplo também mostra a flag --provisioning-model. Este sinalizador define o modelo de aprovisionamento para a VM. Esta flag é obrigatória quando cria tipos de máquinas A3 com menos de 8 GPUs e tem de ser definida como SPOT ou FLEX_START. Para os tipos de máquinas A2, esta flag é opcional. Se não especificar um modelo, é usado o modelo de aprovisionamento padrão. Para mais informações, consulte o artigo Modelos de aprovisionamento de instâncias do Compute Engine.

  gcloud compute instances create VM_NAME \
      --machine-type=MACHINE_TYPE \
      --zone=ZONE \
      --boot-disk-size=DISK_SIZE \
      --image=IMAGE \
      --image-project=IMAGE_PROJECT \
      --maintenance-policy=TERMINATE \
      --provisioning-model=PROVISIONING_MODEL
  
Substitua o seguinte:
  • VM_NAME: o nome da nova VM.
  • MACHINE_TYPE: um tipo de máquina A2 ou um tipo de máquina A3 com 1, 2 ou 4 GPUs. Para os tipos de máquinas A3, tem de especificar um modelo de aprovisionamento.
  • ZONE: a zona da VM. Esta zona tem de ser compatível com o modelo de GPU selecionado.
  • DISK_SIZE: o tamanho do disco de arranque em GiB. Especifique um tamanho do disco de arranque de, pelo menos, 40 GiB.
  • IMAGE: uma imagem do sistema operativo que suporta GPUs. Se quiser usar a imagem mais recente numa família de imagens, substitua a flag --image pela flag --image-family e defina o respetivo valor para uma família de imagens que suporte GPUs. Por exemplo: --image-family=rocky-linux-8-optimized-gcp.
    Também pode especificar uma imagem personalizada ou Deep Learning VM Images.
  • IMAGE_PROJECT: o projeto de imagem do Compute Engine ao qual a imagem do SO pertence. Se usar uma imagem personalizada ou imagens de VMs de aprendizagem profunda, especifique o projeto ao qual essas imagens pertencem.
  • PROVISIONING_MODEL: o modelo de aprovisionamento a usar para criar a VM. Pode especificar SPOT ou FLEX_START. Se remover a flag --provisioning-model do comando, é usado o modelo de aprovisionamento padrão. Esta flag é obrigatória quando cria VMs A3 com menos de 8 GPUs.

REST

Envie um pedido POST para o método instances.insert. As VMs com GPUs não podem ser migradas em direto. Certifique-se de que define o parâmetro onHostMaintenance como TERMINATE.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
"machineType": "projects/PROJECT_ID/zones/ZONE/machineTypes/MACHINE_TYPE",
"disks":
[
  {
    "type": "PERSISTENT",
    "initializeParams":
    {
      "diskSizeGb": "DISK_SIZE",
      "sourceImage": "SOURCE_IMAGE_URI"
    },
    "boot": true
  }
],
"name": "VM_NAME",
"networkInterfaces":
[
  {
    "network": "projects/PROJECT_ID/global/networks/NETWORK"
  }
],
"scheduling":
{
  "onHostMaintenance": "terminate",
  "automaticRestart": true
}
}

Substitua o seguinte:
  • VM_NAME: o nome da nova VM.
  • PROJECT_ID: o ID do projeto.
  • ZONE: a zona da VM. Esta zona tem de ser compatível com o modelo de GPU selecionado.
  • MACHINE_TYPE: um tipo de máquina A2 ou um tipo de máquina A3 com 1, 2 ou 4 GPUs. Para os tipos de máquinas A3, tem de especificar um modelo de aprovisionamento.
  • PROVISIONING_MODEL: o modelo de aprovisionamento para a VM. Especifique SPOT ou FLEX_START. Este campo é obrigatório quando cria VMs A3 com menos de 8 GPUs. Para VMs A2, este campo é opcional. Se não especificar um modelo, é usado o modelo de aprovisionamento padrão. Para mais informações, consulte o artigo Modelos de aprovisionamento de instâncias do Compute Engine.
  • SOURCE_IMAGE_URI: o URI da imagem ou família de imagens específica que quer usar. Por exemplo:
    • Imagem específica: "sourceImage": "projects/rocky-linux-cloud/global/images/rocky-linux-10-optimized-gcp-v20251017"
    • Família de imagens: "sourceImage": "projects/rocky-linux-cloud/global/images/family/rocky-linux-10-optimized-gcp"
    Quando especifica uma família de imagens, o Compute Engine cria uma VM a partir da imagem do SO mais recente e não descontinuada dessa família. Para mais informações sobre quando usar famílias de imagens, consulte o artigo Práticas recomendadas para famílias de imagens.
  • DISK_SIZE: o tamanho do disco de arranque em GB. Especifique um tamanho do disco de arranque de, pelo menos, 40 GB.
  • NETWORK: a rede VPC que quer usar para a VM. Pode especificar `default` para usar a sua rede predefinida.
Definições adicionais:
  • Para especificar um modelo de aprovisionamento, adicione o campo "provisioningModel": "PROVISIONING_MODEL" ao objeto scheduling no seu pedido. Isto é necessário para tipos de máquinas A3 com menos de 8 GPUs. Se especificar a criação de VMs do Spot, os campos onHostMaintenance e automaticRestart são ignorados.
    "scheduling":
      {
        "onHostMaintenance": "terminate",
        "automaticRestart": true,
        "provisioningModel": "PROVISIONING_MODEL"
      }
    

Instale controladores

Para que a VM use a GPU, tem de instalar o controlador da GPU na VM.

Exemplos

Nestes exemplos, a maioria das VMs é criada através da CLI Google Cloud. No entanto, também pode usar o Google Cloud console ou oREST para criar estas VMs.

Os exemplos seguintes mostram como criar uma VM Spot A3 com uma imagem de SO padrão e uma VM A2 com uma imagem Deep Learning VM Images.

Crie uma VM Spot A3 usando a família de imagens do SO Debian 13

Este exemplo cria uma VM Spot A3 (a3-highgpu-1g) usando a família de imagens do SO Debian 13.

gcloud compute instances create VM_NAME \
    --project=PROJECT_ID \
    --zone=ZONE \
    --machine-type=a3-highgpu-1g \
    --provisioning-model=SPOT \
    --maintenance-policy=TERMINATE \
    --image-family=debian-13 \
    --image-project=debian-cloud \
    --boot-disk-size=200GB \
    --scopes=https://www.googleapis.com/auth/cloud-platform

Substitua o seguinte:

  • VM_NAME: o nome da sua instância de VM
  • PROJECT_ID : o ID do seu projeto
  • ZONE: a zona da instância de VM

Crie uma VM A2 com uma instância de blocos de notas geridos pelo utilizador do Vertex AI Workbench na VM

Este exemplo cria uma VM A2 Standard (a2-highgpu-1g) através da imagem Deep Learning VM Images.tf2-ent-2-3-cu110 Neste exemplo, são especificadas flags opcionais, como o tamanho e o âmbito do disco de arranque.

A utilização de imagens de DLVM é a forma mais fácil de começar, uma vez que estas imagens já têm os controladores da NVIDIA e as bibliotecas CUDA pré-instalados.

Estas imagens também oferecem otimizações de desempenho.

As seguintes imagens DLVM são suportadas para NVIDIA A100:

  • common-cu110: controlador NVIDIA e CUDA pré-instalados
  • tf-ent-1-15-cu110: controlador NVIDIA, CUDA e TensorFlow Enterprise 1.15.3 pré-instalados
  • tf2-ent-2-1-cu110: controlador NVIDIA, CUDA, TensorFlow Enterprise 2.1.1 pré-instalado
  • tf2-ent-2-3-cu110: controlador NVIDIA, CUDA, TensorFlow Enterprise 2.3.1 pré-instalado
  • pytorch-1-6-cu110: controlador NVIDIA, CUDA, Pytorch 1.6

Para mais informações sobre as imagens da DLVM disponíveis e os pacotes instalados nas imagens, consulte a documentação da Deep Learning VM.

gcloud compute instances create VM_NAME \
    --project=PROJECT_ID \
    --zone=ZONE \
    --machine-type=a2-highgpu-1g \
    --maintenance-policy=TERMINATE \
    --image-family=tf2-ent-2-3-cu110 \
    --image-project=deeplearning-platform-release \
    --boot-disk-size=200GB \
    --metadata="install-nvidia-driver=True,proxy-mode=project_editors" \
    --scopes=https://www.googleapis.com/auth/cloud-platform

Substitua o seguinte:

  • VM_NAME: o nome da sua instância de VM
  • PROJECT_ID : o ID do seu projeto
  • ZONE: a zona da instância de VM

O comando de exemplo anterior também gera uma instância dos blocos de notas geridos pelo utilizador do Vertex AI Workbench para a VM. Para aceder ao bloco de notas, na Google Cloud consola, aceda à página Vertex AI Workbench > User-managed notebooks.

Aceda à página Notebooks geridos pelo utilizador

GPU de várias instâncias

Uma GPU multi-instância divide uma única GPU NVIDIA A100 ou NVIDIA H100 na mesma VM em até sete instâncias de GPU independentes. São executados em simultâneo, cada um com a sua própria memória, cache e multiprocessadores de streaming. Esta configuração permite que a GPU NVIDIA A100 e H100 ofereçam uma qualidade de serviço (QoS) consistente com uma utilização até 7 vezes superior em comparação com os modelos de GPU anteriores.

Pode criar até sete GPUs multi-instância. Para GPUs A100 de 40 GB, cada GPU de várias instâncias tem 5 GB de memória atribuídos. Com as GPUs A100 de 80 GB, a memória alocada duplica para 10 GB cada. Com as GPUs H100 de 80 GB, cada GPU de várias instâncias também tem 10 GB de memória atribuídos.

Para mais informações sobre a utilização de GPUs multi-instância, consulte o guia do utilizador de GPUs multi-instância da NVIDIA.

Para criar GPUs multi-instância, conclua os seguintes passos:

  1. Crie uma instância de VM otimizada para aceleradores A2 (A100) ou A3 (H100).

  2. Estabeleça ligação à instância de VM. Para mais informações, consulte os artigos Estabeleça ligação a VMs do Linux ou Estabeleça ligação a VMs do Windows.

  3. Ative os controladores da GPU NVIDIA.

  4. Ative as GPUs multi-instância.

    sudo nvidia-smi -mig 1
    
  5. Reveja os formatos de GPU de várias instâncias disponíveis.

    sudo nvidia-smi mig --list-gpu-instance-profiles
    

    O resultado é semelhante ao seguinte:

    +-----------------------------------------------------------------------------+
    | GPU instance profiles:                                                      |
    | GPU   Name             ID    Instances   Memory     P2P    SM    DEC   ENC  |
    |                              Free/Total   GiB              CE    JPEG  OFA  |
    |=============================================================================|
    |   0  MIG 1g.10gb       19     7/7        9.62       No     16     1     0   |
    |                                                             1     1     0   |
    +-----------------------------------------------------------------------------+
    |   0  MIG 1g.10gb+me    20     1/1        9.62       No     16     1     0   |
    |                                                             1     1     1   |
    +-----------------------------------------------------------------------------+
    |   0  MIG 1g.20gb       15     4/4        19.50      No     26     1     0   |
    |                                                             1     1     0   |
    +-----------------------------------------------------------------------------+
    |   0  MIG 2g.20gb       14     3/3        19.50      No     32     2     0   |
    |                                                             2     2     0   |
    +-----------------------------------------------------------------------------+
    |   0  MIG 3g.40gb        9     2/2        39.25      No     60     3     0   |
    |                                                             3     3     0   |
    +-----------------------------------------------------------------------------+
    .......
    
  6. Crie a GPU multi-instância (GI) e as instâncias de computação (CI) associadas que quer. Pode criar estas instâncias especificando o nome do perfil completo ou abreviado, o ID do perfil ou uma combinação de ambos. Para mais informações, consulte Criar instâncias de GPU.

    O exemplo seguinte cria duas instâncias de GPU usando o ID do perfil (9).MIG 3g.20gb

    A flag -C também é especificada, o que cria as instâncias de computação associadas para o perfil necessário.

    sudo nvidia-smi mig -cgi 9,9 -C
    
  7. Verifique se as duas GPUs multi-instância foram criadas:

    sudo nvidia-smi mig -lgi
    
  8. Verifique se os GIs e os CIs correspondentes foram criados.

    sudo nvidia-smi
    

    O resultado é semelhante ao seguinte:

    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 525.125.06   Driver Version: 525.125.06   CUDA Version: 12.0     |
    |-------------------------------+----------------------+----------------------+
    | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
    |                               |                      |               MIG M. |
    |===============================+======================+======================|
    |   0  NVIDIA H100 80G...  Off  | 00000000:04:00.0 Off |                   On |
    | N/A   33C    P0    70W / 700W |     39MiB / 81559MiB |     N/A      Default |
    |                               |                      |              Enabled |
    +-------------------------------+----------------------+----------------------+
    |   1  NVIDIA H100 80G...  Off  | 00000000:05:00.0 Off |                   On |
    | N/A   32C    P0    69W / 700W |     39MiB / 81559MiB |     N/A      Default |
    |                               |                      |              Enabled |
    +-------------------------------+----------------------+----------------------+
    ......
    
    +-----------------------------------------------------------------------------+
    | MIG devices:                                                                |
    +------------------+----------------------+-----------+-----------------------+
    | GPU  GI  CI  MIG |         Memory-Usage |        Vol|         Shared        |
    |      ID  ID  Dev |           BAR1-Usage | SM     Unc| CE  ENC  DEC  OFA  JPG|
    |                  |                      |        ECC|                       |
    |==================+======================+===========+=======================|
    |  0    1   0   0  |     19MiB / 40192MiB | 60      0 |  3   0    3    0    3 |
    |                  |      0MiB / 65535MiB |           |                       |
    +------------------+----------------------+-----------+-----------------------+
    |  0    2   0   1  |     19MiB / 40192MiB | 60      0 |  3   0    3    0    3 |
    |                  |      0MiB / 65535MiB |           |                       |
    +------------------+----------------------+-----------+-----------------------+
    ......
    
    +-----------------------------------------------------------------------------+
    | Processes:                                                                  |
    |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
    |        ID   ID                                                   Usage      |
    |=============================================================================|
    |  No running processes found                                                 |
    +-----------------------------------------------------------------------------+
    

O que se segue?