Criar uma instância A3 High ou A2

Neste documento, explicamos como criar uma instância de máquina virtual (VM) que usa um tipo de máquina das séries A2 ou A3 High de máquinas com otimização de aceleradores.

Para os tipos de máquina A3 High, este documento aborda apenas aqueles com menos de oito GPUs anexadas. Esses tipos de máquina A3 High com menos de 8 GPUs só podem ser criados como VMs spot ou de início flexível. Para criar uma instância A3 com 8 GPUs anexadas, consulte Criar uma instância A3 Mega, A3 High ou A3 Edge com o GPUDirect ativado.

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

Antes de começar

  • Para analisar limitações e outras etapas de pré-requisito para criar instâncias com GPUs anexadas, como selecionar uma imagem do SO e verificar a cota de GPU, consulte Visão geral da criação de uma instância com GPUs anexadas.
  • Configure a autenticação, caso ainda não tenha feito isso. Com isso, você confirma sua identidade para acesso a serviços e APIs do Google Cloud . Para executar código ou exemplos em um ambiente de desenvolvimento local, faça a autenticação no Compute Engine com um destes métodos:

    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 do Google Cloud. Após a instalação, inicialize a CLI do Google Cloud executando o seguinte comando:

      gcloud init

      Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

    2. Set a default region and zone.

    REST

    Para usar as amostras da API REST desta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.

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

      gcloud init

      Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

    Saiba mais em Autenticar para usar REST na documentação de autenticação do Google Cloud .

Papéis necessários

Para receber as permissões necessárias para criar VMs, peça ao administrador para conceder a você o papel do IAM de Administrador da instância do Compute (v1) (roles/compute.instanceAdmin.v1) no projeto. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Esse papel predefinido contém as permissões necessárias para criar VMs. Para acessar as permissões exatas necessárias, abra a seção Permissões necessárias:

Permissões necessárias

As permissões a seguir são necessárias para criar VMs:

  • compute.instances.create no projeto
  • Usar uma imagem personalizada para criar a VM: compute.images.useReadOnly na imagem
  • Usar um snapshot para criar a VM: compute.snapshots.useReadOnly no snapshot
  • Usar um modelo de instância para criar a VM: compute.instanceTemplates.useReadOnly no modelo de instância
  • Especificar uma sub-rede para a VM: compute.subnetworks.use no projeto ou na sub-rede escolhida
  • Especificar um endereço IP estático para a VM: compute.addresses.use no projeto
  • Atribuir um endereço IP externo à VM ao usar uma rede VPC: compute.subnetworks.useExternalIp no projeto ou na sub-rede escolhida
  • Atribuir uma rede legada à VM: compute.networks.use no projeto
  • Atribuir um endereço IP externo à VM usando uma rede legada: compute.networks.useExternalIp no projeto
  • Definir os metadados da instância de VM para a VM: compute.instances.setMetadata no projeto
  • Definir tags para a VM: compute.instances.setTags na VM
  • Definir rótulos para a VM: compute.instances.setLabels na VM
  • Definir uma conta de serviço a ser usada pela VM: compute.instances.setServiceAccount na VM
  • Criar um disco para a VM: compute.disks.create no projeto
  • Anexar um disco atual no modo somente leitura ou de leitura e gravação: compute.disks.use no disco
  • Anexar um disco atual no modo somente leitura: compute.disks.useReadOnly no disco

Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.

Criar uma VM com GPUs anexadas

É possível criar uma VM otimizada para aceleradores A2 ou A3 usando o console doGoogle Cloud , a CLI do Google Cloud ou REST.

Console

  1. No console do Google Cloud , acesse a página Criar uma instância.

    Acessar "Criar uma instância"
  2. No campo Nome, insira um nome exclusivo para a instância. Consulte a Convenção de nomenclatura de recursos.
  3. Selecione uma região e uma zona em que esses tipos de máquinas com GPU estejam disponíveis. Consulte Regiões e zonas de GPU.
  4. Na seção de tipos de máquinas, selecione GPUs.
    1. Na lista Tipo de GPU, selecione o tipo de GPU.
      • Para VMs com otimização de aceleradores A2, selecione NVIDIA A100 40GB ou NVIDIA A100 80GB.
      • Para VMs com otimização de aceleradores A3, selecione NVIDIA H100 80GB.
    2. Na lista Número de GPUs, selecione o número de GPUs.
  5. Configure o disco de inicialização da seguinte maneira:
    1. Na seção SO e armazenamento, clique em Mudar. A página Configuração do disco de inicialização será aberta.
    2. Na página Configuração do disco de inicialização, faça o seguinte:
      1. Na guia Imagens públicas, escolha uma imagem do Compute Engine compatível ou Deep Learning VM Images.
      1. Especifique um tamanho do disco de inicialização de pelo menos 40 GiB.
      2. Para confirmar as opções do disco de inicialização, clique em Selecionar.
  6. Configure o modelo de provisionamento. Na seção Opções avançadas, em Modelo de provisionamento de VM, selecione uma das seguintes opções:
    • Padrão: para cargas de trabalho de uso geral.
    • Início flexível: para cargas de trabalho de curta duração que podem tolerar um horário de início flexível. Para mais informações, consulte Sobre as VMs de início flexível.
    • Spot: para cargas de trabalho tolerantes a falhas que podem ser interrompidas. Para mais informações, consulte VMs spot.
  7. Opcional: na lista No encerramento da VM, selecione o que acontece quando o Compute Engine encerra as VMs do Spot ou as VMs de início flexível atingem o fim da duração da execução:
    • Para interromper a VM durante a preempção, escolha Parar (padrão).
    • Para excluir a VM durante a preempção, selecione Excluir.
  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 sinalizações a seguir. Não é possível migrar VMs com GPUs em tempo real. Defina a flag --maintenance-policy=TERMINATE.

O comando de exemplo também mostra a flag --provisioning-model. Essa flag define o modelo de provisionamento da VM. Essa flag é obrigatória ao criar tipos de máquina A3 com menos de 8 GPUs e precisa ser definida como SPOT ou FLEX_START. Para tipos de máquina A2, essa flag é opcional. Se você não especificar um modelo, o modelo de provisionamento padrão será usado. Para mais informações, consulte Modelos de provisionamento 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:
  • 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 tipos de máquina A3, é necessário especificar um modelo de provisionamento.
  • ZONE: a zona para a VM. Essa zona precisa ser compatível com o modelo de GPU selecionado.
  • DISK_SIZE: o tamanho do disco de inicialização em GiB. Especifique um tamanho do disco de inicialização de pelo menos 40 GiB.
  • IMAGE: uma imagem de sistema operacional compatível com GPUs. Se você quiser usar a imagem mais recente em uma família de imagens, substitua a sinalização --image pela sinalização --image-family e defina o valor dela como uma imagem família compatível com GPUs. Exemplo: --image-family=rocky-linux-8-optimized-gcp.
    Também é possível especificar uma imagem personalizada ou Deep Learning VM Images.
  • IMAGE_PROJECT: o projeto de imagem do Compute Engine a que a imagem do SO pertence. Se estiver usando uma imagem personalizada ou Deep Learning VM Images, especifique o projeto a que essas imagens pertencem.
  • PROVISIONING_MODEL: o modelo de provisionamento a ser usado para criar a VM. É possível especificar SPOT ou FLEX_START. Se você remover a flag --provisioning-model do comando, o modelo de provisionamento padrão será usado. Essa flag é obrigatória ao criar VMs A3 com menos de oito GPUs.

REST

Envie uma solicitação POST ao método instances.insert. VMs com GPUs não podem ser migradas em tempo real, verifique se você 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 para a VM. Essa zona precisa 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 tipos de máquina A3, é necessário especificar um modelo de provisionamento.
  • PROVISIONING_MODEL: o modelo de provisionamento da VM. Especifique SPOT ou FLEX_START. Esse campo é obrigatório ao criar VMs A3 com menos de 8 GPUs. Para VMs A2, esse campo é opcional. Se você não especificar um modelo, o modelo de provisionamento padrão será usado. Para mais informações, consulte Modelos de provisionamento de instâncias do Compute Engine.
  • SOURCE_IMAGE_URI: o URI da imagem ou família de imagens específica que você quer usar. 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 você especifica uma família de imagens, o Compute Engine cria uma VM a partir da imagem do SO mais recente e não obsoleta nessa família. Para mais informações sobre quando usar famílias de imagens, consulte Práticas recomendadas para famílias de imagens.
  • DISK_SIZE: o tamanho do disco de inicialização em GB. Especifique um tamanho do disco de inicialização de pelo menos 40 GB.
  • NETWORK: a rede VPC que você quer usar para a VM. Você pode especificar para usar sua rede padrão.
Outras configurações:
  • Para especificar um modelo de provisionamento, adicione o campo "provisioningModel": "PROVISIONING_MODEL" ao objeto scheduling na sua solicitação. Isso é necessário para tipos de máquinas A3 com menos de 8 GPUs. Se você especificar a criação de VMs spot, os campos onHostMaintenance e automaticRestart serão ignorados.
    "scheduling":
      {
        "onHostMaintenance": "terminate",
        "automaticRestart": true,
        "provisioningModel": "PROVISIONING_MODEL"
      }
    

Instalar drivers

Para que a VM use a GPU, é necessário instalar o driver da GPU na VM.

Exemplos

Nestes exemplos, a maioria das VMs é criada usando a CLI do Google Cloud. No entanto, também é possível usar o Google Cloud console ou REST para criar essas VMs.

Os exemplos a seguir mostram como criar uma VM spot A3 usando uma imagem de SO padrão e uma VM A2 usando uma imagem de Imagens de VM de aprendizado profundo.

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

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

Criar uma VM A2 com uma instância de notebooks gerenciados pelo usuário do Vertex AI Workbench na VM

Este exemplo cria uma VM padrão A2 (a2-highgpu-1g) usando a imagem tf2-ent-2-3-cu110 Deep Learning VM Images. Neste exemplo, são especificadas as flags opcionais, como tamanho e escopo do disco de inicialização.

Usar imagens de DLVM é a maneira mais fácil de começar, porque essas imagens já têm os drivers NVIDIA e bibliotecas CUDA pré-instaladas.

Essas imagens também fornecem otimizações de desempenho.

As seguintes imagens de DLVM são compatíveis com NVIDIA A100:

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

Para mais informações sobre as imagens de DLVM disponíveis e os pacotes instalados nas imagens, consulte a documentação sobre VMs de aprendizado profundo.

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:

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

O comando de exemplo anterior também gera uma instância de notebooks gerenciados pelo usuário do Vertex AI Workbench para a VM. Para acessar o notebook, no console do Google Cloud , acesse a página Vertex AI Workbench > Notebooks gerenciados pelo usuário.

Acessar a página Notebooks gerenciados pelo usuário

GPU com várias instâncias

Uma GPU com várias instâncias particiona uma única GPU NVIDIA A100 ou NVIDIA H100 na mesma VM em até sete instâncias de GPU independentes. Elas são executadas simultaneamente, cada uma com a própria memória, o próprio cache e os próprios multiprocessadores de streaming. Essa configuração permite que as GPUs NVIDIA A100 e H100 ofereçam qualidade de serviço (QoS) consistente com utilização até sete vezes maior em comparação com os modelos de GPU anteriores.

É possível criar até sete GPUs com várias instâncias. No caso das GPUs A100 de 40 GB, cada GPU com várias instâncias recebe 5 GB de memória. No caso das GPUs A100 de 80 GB, a memória alocada dobra para 10 GB cada. Com as GPUs H100 de 80 GB, cada GPU com várias instâncias também recebe 10 GB de memória.

Para mais informações sobre o uso de GPUs de várias instâncias, consulte o Guia do usuário de GPU com várias instâncias NVIDIA.

Para criar GPUs de várias instâncias, conclua as seguintes etapas:

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

  2. Conecte-se à instância de VM. Para mais informações, consulte Conectar-se a VMs do Linux ou Conectar-se a VMs do Windows.

  3. Ative os drivers de GPU NVIDIA.

  4. Ative as GPUs com várias instâncias.

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

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

    A resposta será semelhante a:

    +-----------------------------------------------------------------------------+
    | 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 de várias instâncias (GI, na sigla em inglês) e as instâncias de computação (CI, na sigla em inglês) associadas que você quer. Para criar essas instâncias, especifique o nome completo ou abreviado do perfil, o ID do perfil ou uma combinação de ambos. Para saber mais, consulte Como criar instâncias de GPU.

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

    A flag -C também é especificada, a fim de criar 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 de várias instâncias foram criadas:

    sudo nvidia-smi mig -lgi
    
  8. Verifique se as GIs e as CIs correspondentes foram criadas.

    sudo nvidia-smi
    

    A resposta será semelhante a:

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

A seguir