Crie uma VM A3, A2 ou G2


Este documento explica como criar uma VM que usa um tipo de máquina das séries de máquinas A3 High, A3 Mega, A3 Edge, A2 e G2. Para saber como criar VMs com GPUs anexadas, consulte o artigo Vista geral da criação de uma instância com GPUs anexadas.

Antes de começar

  • Para rever as limitações e os passos de pré-requisitos adicionais para criar instâncias com GPUs anexadas, como selecionar uma imagem do SO e verificar a quota de GPU, consulte a vista geral 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 A3 High, A3 Mega, A3 Edge, A2 ou G2 através da Google Cloud consola, da CLI Google Cloud ou da REST.

Para fazer algumas personalizações às suas VMs G2, pode ter de usar a Google Cloud CLI ou o REST. Consulte as limitações do G2.

Consola

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

    Aceda a Criar uma instância

  2. Especifique um Nome para a VM. Consulte a Convenção de nomenclatura de recursos.

  3. Selecione uma região e uma zona onde as GPUs estão disponíveis. Consulte a lista de regiões e zonas de GPU disponíveis.

  4. Na secção Configuração da máquina, selecione a família de máquinas GPUs.

    1. Conclua um dos seguintes passos para selecionar um tipo de máquina predefinido ou personalizado com base na série de máquinas:

      • Para todas as séries de máquinas com GPU, pode selecionar um tipo de máquina predefinido da seguinte forma:

        1. Na lista Tipo de GPU, selecione o tipo de GPU.

          • Para VMs otimizadas para aceleradores A3 High, A3 Mega ou A3 Edge, selecione NVIDIA H100 80GB ou NVIDIA H100 80GB MEGA.
          • Para VMs otimizadas para aceleradores A2, selecione NVIDIA A100 40GB ou NVIDIA A100 80GB.
          • Para VMs otimizadas para aceleradores G2, selecione NVIDIA L4.
        2. Na lista Número de GPUs, selecione o número de GPUs.

      • Para a série de máquinas G2, pode selecionar um tipo de máquina personalizado da seguinte forma:

        1. Na lista Tipo de GPU, selecione NVIDIA L4.
        2. Na secção Tipo de máquina, selecione Personalizado.
        3. Para especificar o número de vCPUs e a quantidade de memória para a instância, arraste os controlos de deslize ou introduza os valores nas caixas de texto. A consola apresenta um custo estimado para a instância à medida que altera o número de vCPUs e a memória.
    2. Opcional: a série de máquinas G2 suporta estações de trabalho virtuais (vWS) NVIDIA RTX para cargas de trabalho de gráficos. Se planeia executar cargas de trabalho com grande exigência gráfica na sua VM G2, selecione Ativar estação de trabalho virtual (NVIDIA GRID).

  5. Na secção Disco de arranque, clique em Alterar. É apresentada a página Configuração do disco de arranque.

  6. 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.
    2. Especifique um tamanho do disco de arranque de, pelo menos, 40 GB.
    3. Para confirmar as opções do disco de arranque, clique em Selecionar.
  7. Opcional: configure o modelo de aprovisionamento. Por exemplo, se a sua carga de trabalho tiver tolerância a falhas e conseguir resistir a uma possível remoção preventiva de VMs, considere usar VMs do Spot para reduzir o custo das VMs e das GPUs associadas. Para mais informações, consulte o artigo GPUs on Spot VMs (GPUs em VMs Spot). Para tal, efetue os seguintes passos:

    1. Na secção Políticas de disponibilidade, selecione Spot na lista Modelo de aprovisionamento de VMs. Esta definição desativa as opções de reinício automático e manutenção do anfitrião para a MV.
    2. Opcional: na lista No encerramento da VM, selecione o que acontece quando o Compute Engine antecipa a VM:
      • Para parar a VM durante a remoção preventiva, 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. Certifique-se de que define a flag --maintenance-policy=TERMINATE.

As seguintes flags opcionais são apresentadas no comando de exemplo:

  • A flag --provisioning-model=SPOT que configura as suas VMs como VMs Spot. Se a sua carga de trabalho for tolerante a falhas e puder resistir a uma possível preempção de VM, considere usar VMs Spot para reduzir o custo das suas VMs e das GPUs associadas. Para mais informações, consulte o artigo GPUs on Spot VMs (GPUs em VMs Spot). Para VMs Spot, as opções de reinício automático e manutenção do anfitrião estão desativadas.
  • A flag --accelerator para especificar uma estação de trabalho virtual. As estações de trabalho virtuais (vWS) NVIDIA RTX só são suportadas para VMs G2.
  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=SPOT] \
      [--accelerator=type=nvidia-l4-vws,count=VWS_ACCELERATOR_COUNT]
  
Substitua o seguinte:
  • VM_NAME: o nome da nova VM.
  • MACHINE_TYPE : o tipo de máquina que selecionou. Escolha uma das seguintes opções:
    • Um tipo de máquina A3.
    • Um tipo de máquina A2.
    • Um tipo de máquina G2. Os tipos de máquinas G2 também suportam memória personalizada. A memória tem de ser um múltiplo de 1024 MB e estar dentro do intervalo de memória suportado. Por exemplo, para criar uma VM com 4 vCPUs e 19 GB de memória, especifique --machine-type=g2-custom-4-19456.
  • 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 GB. Especifique um tamanho do disco de arranque de, pelo menos, 40 GB.
  • 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 imagens de VMs de aprendizagem profunda.
  • 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.
  • VWS_ACCELERATOR_COUNT: o número de GPUs virtuais de que precisa.

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 : o tipo de máquina que selecionou. Escolha uma das seguintes opções:
    • Um tipo de máquina A3.
    • Um tipo de máquina A2.
    • Um tipo de máquina G2. Os tipos de máquinas G2 também suportam memória personalizada. A memória tem de ser um múltiplo de 1024 MB e estar dentro do intervalo de memória suportado. Por exemplo, para criar uma VM com 4 vCPUs e 19 GB de memória, especifique --machine-type=g2-custom-4-19456.
    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-8-optimized-gcp-v20220719"
    • Família de imagens: "sourceImage": "projects/rocky-linux-cloud/global/images/family/rocky-linux-8-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 as 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:
  • Se a sua carga de trabalho for tolerante a falhas e puder suportar a remoção preventiva de VMs, considere usar VMs do Spot para reduzir o custo das suas VMs e das GPUs anexadas. Para mais informações, consulte o artigo GPUs on Spot VMs (GPUs em VMs Spot). Para especificar VMs de spot, adicione a opção "provisioningModel": "SPOT" ao seu pedido. Para VMs Spot, as opções de reinício automático e manutenção do anfitrião estão desativadas.
    "scheduling":
      {
        "provisioningModel": "SPOT"
      }
    
  • Para VMs G2, as estações de trabalho virtuais (vWS) NVIDIA RTX são suportadas. Para especificar uma estação de trabalho virtual, adicione a opção `guestAccelerators` ao seu pedido. Substitua VWS_ACCELERATOR_COUNT pelo número de GPUs virtuais de que precisa.
    "guestAccelerators":
      [
        {
          "acceleratorCount": VWS_ACCELERATOR_COUNT,
          "acceleratorType": "projects/PROJECT_ID/zones/ZONEacceleratorTypes/nvidia-l4-vws"
        }
      ]
    

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 do Google Cloud. No entanto, também pode usar a API Google Cloud console ouREST para criar estas VMs.

Os exemplos seguintes mostram como criar VMs com as seguintes imagens:

COS (A3 Edge/High)

Pode criar VMs a3-edgegpu-8g ou a3-highgpu-8g com GPUs H100 anexadas através de imagens otimizadas para contentores (COS).

Para obter instruções detalhadas sobre como criar estas VMs a3-edgegpu-8g ou a3-highgpu-8g que usam o SO otimizado para contentores, consulte o artigo Crie uma VM A3 com o GPUDirect-TCPX ativado.

Imagem do SO pública (G2)

Pode criar VMs com GPUs anexadas que usam uma imagem pública disponível no Compute Engine ou uma imagem personalizada.

Para criar uma VM com a imagem não descontinuada mais recente da família de imagens do Rocky Linux 8 otimizado para Google Cloud que usa o tipo de máquina g2-standard-8 e tem uma estação de trabalho virtual NVIDIA RTX, conclua os seguintes passos:

  1. Crie a VM. Neste exemplo, também são especificadas flags opcionais, como o tipo e o tamanho do disco de arranque.

    gcloud compute instances create VM_NAME \
        --project=PROJECT_ID \
        --zone=ZONE \
        --machine-type=g2-standard-8  \
        --maintenance-policy=TERMINATE --restart-on-failure \
        --network-interface=nic-type=GVNIC \
        --accelerator=type=nvidia-l4-vws,count=1 \
        --image-family=rocky-linux-8-optimized-gcp \
        --image-project=rocky-linux-cloud \
        --boot-disk-size=200GB \
        --boot-disk-type=pd-ssd
    

    Substitua o seguinte:

    • VM_NAME: o nome da sua VM
    • PROJECT_ID : o ID do seu projeto.
    • ZONE: a zona da VM.
  2. Instale o controlador da NVIDIA e o CUDA. Para GPUs NVIDIA L4, é necessária a versão XX ou superior do CUDA.

Imagem DLVM (A2)

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

  1. Crie uma VM com a imagem tf2-ent-2-3-cu110 e o tipo de máquina a2-highgpu-1g. Neste exemplo, são especificadas flags opcionais, como o tamanho do disco de arranque e o âmbito.

    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 VM
    • PROJECT_ID : o ID do seu projeto.
    • ZONE: a zona da VM
  2. 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 multi-instância (apenas VMs A3 e A2)

Uma GPU multi-instância divide uma única GPU NVIDIA H100 ou A100 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 H100 ou A100 ofereça uma qualidade de serviço (QoS) garantida 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 e H100 de 80 GB, a memória alocada duplica para 10 GB cada.

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 VM otimizada para aceleradores A3 High, A3 Mega, A3 Edge ou A2.

  2. Ative os controladores da GPU NVIDIA.

  3. Ative as GPUs multi-instância.

    sudo nvidia-smi -mig 1
    
  4. 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   |
    +-----------------------------------------------------------------------------+
    .......
    
  5. 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
    
  6. Verifique se as duas GPUs multi-instância foram criadas:

    sudo nvidia-smi mig -lgi
    
  7. 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?