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 mais sobre como criar VMs com GPUs anexadas, consulte Visão geral da criação de uma instância com GPUs anexadas .

Antes de começar

  • Para revisar as limitações e etapas adicionais de pré-requisitos para a criação de instâncias com GPUs anexadas, como selecionar uma imagem do sistema operacional e verificar a cota de GPU, consulte Visão geral da criação de uma instância com GPUs anexadas .
  • Se ainda não o fez, configure a autenticação. Autenticação é o processo pelo qual sua identidade é verificada para acesso a Google Cloud serviços e APIs. Para executar códigos ou amostras em um ambiente de desenvolvimento local, você pode se autenticar 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. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    2. Set a default region and zone.
    3. REST

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

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

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

Funções obrigatórias

Para obter as permissões necessárias para criar VMs, peça ao administrador para conceder a você a função do IAM Compute Instance Admin (v1) ( roles/compute.instanceAdmin.v1 ) no projeto. Para obter mais informações sobre a concessão de funções, consulte Gerenciar acesso a projetos, pastas e organizações .

Esta função predefinida contém as permissões necessárias para criar VMs. Para ver as permissões exatas necessárias, expanda a seção Permissões necessárias :

Permissões necessárias

As seguintes permissõ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 atribuir uma rede legada à VM: compute.networks.use no projeto
  • Para especificar um endereço IP estático para a VM: compute.addresses.use no projeto
  • Para atribuir um endereço IP externo à VM ao usar uma rede legada: compute.networks.useExternalIp no projeto
  • Para especificar uma sub-rede para sua VM: compute.subnetworks.use no projeto ou na sub-rede escolhida
  • Para atribuir um endereço IP externo à VM ao usar uma rede VPC: compute.subnetworks.useExternalIp no projeto ou na sub-rede escolhida
  • Para definir metadados de instância de VM para a VM: compute.instances.setMetadata no projeto
  • Para definir tags para a VM: compute.instances.setTags na VM
  • Para definir rótulos 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 somente leitura ou leitura-gravação: compute.disks.use no disco
  • Para anexar um disco existente no modo somente leitura: compute.disks.useReadOnly no disco

Você também poderá obter essas permissões com funções personalizadas ou outras funções predefinidas .

Crie uma VM que tenha GPUs anexadas

Você pode criar uma VM otimizada para acelerador A3 High, A3 Mega, A3 Edge, A2 ou G2 usando o console do Google Cloud, Google Cloud CLI ou REST.

Para fazer algumas personalizações em suas VMs G2, talvez seja necessário usar a Google Cloud CLI ou REST. Consulte limitações do G2 .

Console

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

    Vá para Criar uma instância

  2. Especifique um nome para sua VM. Consulte Convenção de nomenclatura de recursos .

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

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

    1. Conclua uma das etapas a seguir 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 GPU, você pode selecionar um tipo de máquina predefinido da seguinte forma:

        1. Na lista de tipos de GPU , selecione seu tipo de GPU.

          • Para VMs otimizadas para acelerador A3 High, A3 Mega ou A3 Edge, selecione NVIDIA H100 80GB ou NVIDIA H100 80GB MEGA .
          • Para VMs otimizadas para acelerador A2, selecione NVIDIA A100 40GB ou NVIDIA A100 80GB .
          • Para VMs otimizadas para acelerador 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, você pode selecionar um tipo de máquina personalizado da seguinte forma:

        1. Na lista de tipos de GPU , selecione NVIDIA L4 .
        2. Na seção Tipo de máquina , selecione Personalizado .
        3. Para especificar o número de vCPUs e a quantidade de memória da instância, arraste os controles deslizantes ou insira os valores nas caixas de texto. O console exibe um custo estimado para a instância conforme você altera o número de vCPUs e de memória.
    2. Opcional: a série de máquinas G2 suporta estações de trabalho virtuais NVIDIA RTX (vWS) para cargas de trabalho gráficas . Se você planeja executar cargas de trabalho com uso intensivo de gráficos em sua VM G2, selecione Habilitar estação de trabalho virtual (NVIDIA GRID) .

  5. Na seção Disco de inicialização , clique em Alterar . Isso abre a página de configuração do disco de inicialização .

  6. Na página de configuração do disco de inicialização , faça o seguinte:

    1. Na guia Imagens públicas , escolha uma imagem compatível do Compute Engine ou Imagens de VM de aprendizado profundo .
    2. Especifique um tamanho de disco de inicialização de pelo menos 40 GB.
    3. Para confirmar as opções do disco de inicialização, clique em Selecionar .
  7. Opcional: Configure o modelo de provisionamento. Por exemplo, se sua carga de trabalho for tolerante a falhas e puder suportar uma possível preempção de VM, considere usar VMs spot para reduzir o custo de suas VMs e das GPUs anexadas. Para obter mais informações, consulte GPUs em VMs Spot . Para fazer isso, conclua as seguintes etapas:

    1. Na seção Políticas de disponibilidade , selecione Spot na lista de modelos de provisionamento de VM . Essa configuração desativa as opções de reinicialização automática e manutenção do host para a VM.
    2. Opcional: na lista No encerramento da VM , selecione o que acontece quando o Compute Engine interrompe a VM:
      • Para parar a VM durante a preempção, selecione 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. VMs com GPUs não podem migrar em tempo real, certifique-se de definir o sinalizador --maintenance-policy=TERMINATE .

Os seguintes sinalizadores opcionais são mostrados no comando de amostra:

  • O sinalizador --provisioning-model=SPOT que configura suas VMs como VMs Spot. Se sua carga de trabalho for tolerante a falhas e puder suportar uma possível preempção de VM, considere usar VMs spot para reduzir o custo de suas VMs e das GPUs anexadas. Para obter mais informações, consulte GPUs em VMs Spot . Para VMs Spot, os sinalizadores de opções de reinicialização automática e manutenção do host estão desabilitados.
  • O sinalizador --accelerator para especificar uma estação de trabalho virtual. As estações de trabalho virtuais NVIDIA RTX (vWS) são suportadas apenas 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 você selecionou. Escolha um dos seguintes:
    • Uma máquina tipo 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 deve ser um múltiplo de 1.024 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 deve suportar o modelo de GPU selecionado .
  • DISK_SIZE : o tamanho do seu disco de inicialização em GB. Especifique um tamanho de disco de inicialização de pelo menos 40 GB.
  • IMAGE : uma imagem do sistema operacional que suporta GPUs . Se você quiser usar a imagem mais recente em uma família de imagens , substitua o sinalizador --image pelo sinalizador --image-family e defina seu valor para uma família de imagens que suporte GPUs. Por exemplo: --image-family=rocky-linux-8-optimized-gcp .
    Você 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 estiver usando uma imagem personalizada ou imagens de VM de aprendizado profundo, especifique o projeto ao qual essas imagens pertencem.
  • VWS_ACCELERATOR_COUNT : o número de GPUs virtuais necessárias.

DESCANSAR

Envie uma solicitação POST para o método instances.insert . VMs com GPUs não podem migrar em tempo real, certifique-se de definir 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 : seu ID do projeto.
  • ZONE : a zona da VM. Esta zona deve suportar o modelo de GPU selecionado .
  • MACHINE_TYPE : o tipo de máquina que você selecionou. Escolha um dos seguintes:
    • Uma máquina tipo 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 deve ser um múltiplo de 1.024 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 você deseja 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 você especifica uma família de imagens, o Compute Engine cria uma VM a partir da imagem de sistema operacional mais recente e não obsoleta dessa família. Para obter mais informações sobre quando usar famílias de imagens, consulte Práticas recomendadas para famílias de imagens
  • DISK_SIZE : o tamanho do seu disco de inicialização em GB. Especifique um tamanho de disco de inicialização de pelo menos 40 GB.
  • NETWORK : a rede VPC que você deseja usar para a VM. Você pode especificar `default` para usar sua rede padrão.
Configurações adicionais:
  • Se sua carga de trabalho for tolerante a falhas e puder suportar uma possível preempção de VM, considere usar VMs Spot para reduzir o custo de suas VMs e das GPUs anexadas. Para obter mais informações, consulte GPUs em VMs Spot . Para especificar VMs Spot, adicione a opção "provisioningModel": "SPOT" à sua solicitação. Para VMs Spot, os sinalizadores de opções de reinicialização automática e manutenção do host estão desabilitados.
    "scheduling":
      {
        "provisioningModel": "SPOT"
      }
    
  • Para VMs G2, há suporte para estações de trabalho virtuais NVIDIA RTX (vWS). Para especificar uma estação de trabalho virtual, adicione a opção `guestAccelerators` à sua solicitação. Substitua VWS_ACCELERATOR_COUNT pelo número de GPUs virtuais necessárias.
    "guestAccelerators":
      [
        {
          "acceleratorCount": VWS_ACCELERATOR_COUNT,
          "acceleratorType": "projects/PROJECT_ID/zones/ZONEacceleratorTypes/nvidia-l4-vws"
        }
      ]
    

Instalar drivers

Para que a VM use a GPU, você precisa instalar o driver da GPU em sua VM .

Exemplos

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

Os exemplos a seguir mostram como criar VMs usando as seguintes imagens:

COS (borda A3/alta)

Você pode criar VMs a3-edgegpu-8g ou a3-highgpu-8g que tenham GPUs H100 anexadas usando imagens COS (otimizadas para contêineres) .

Para obter instruções detalhadas sobre como criar essas VMs a3-edgegpu-8g ou a3-highgpu-8g que usam o Container-Optimized OS, consulte Criar uma VM A3 com GPUDirect-TCPX ativado .

Imagem pública do sistema operacional (G2)

Você 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 usando a imagem mais recente e não obsoleta do Rocky Linux 8 otimizada para Google Cloud família de imagens que usa o tipo de máquina g2-standard-8 e tem uma estação de trabalho virtual NVIDIA RTX, conclua as etapas a seguir:

  1. Crie a VM. Neste exemplo, sinalizadores opcionais como tipo e tamanho do disco de inicialização também são especificados.

    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 : seu ID do projeto.
    • ZONE : a zona da VM.
  2. Instale o driver NVIDIA e CUDA . Para GPUs NVIDIA L4, é necessária a versão CUDA XX ou superior.

Imagem DLVM (A2)

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

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

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

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

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

  1. Crie uma VM usando a imagem tf2-ent-2-3-cu110 e o tipo de máquina a2-highgpu-1g . Neste exemplo, são especificados sinalizadores opcionais, como tamanho e escopo do disco de inicialização.

    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 : seu ID do projeto.
    • ZONE : a zona da VM
  2. O comando do 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 .

    Acesse a página de notebooks gerenciados pelo usuário

GPU de múltiplas instâncias (somente VMs A3 e A2)

Uma GPU de múltiplas instâncias particiona uma única GPU NVIDIA H100 ou A100 dentro da mesma VM em até sete instâncias de GPU independentes. Eles são executados simultaneamente, cada um com sua própria memória, cache e multiprocessadores de streaming. Esta configuração permite que a GPU NVIDIA H100 ou A100 forneça qualidade de serviço (QoS) garantida com utilização até 7x maior em comparação com modelos de GPU anteriores.

Você pode criar até sete GPUs de múltiplas instâncias. Para GPUs A100 de 40 GB, cada GPU de múltiplas instâncias recebe 5 GB de memória. Com as GPUs A100 de 80 GB e H100 de 80 GB, a memória alocada dobra para 10 GB cada.

Para obter mais informações sobre o uso de GPUs de múltiplas instâncias, consulte Guia do usuário da GPU de múltiplas instâncias NVIDIA .

Para criar GPUs de múltiplas instâncias, conclua as etapas a seguir:

  1. Crie uma VM otimizada para acelerador A3 High, A3 Mega, A3 Edge ou A2.

  2. Habilite os drivers de GPU NVIDIA .

  3. Habilite GPUs de múltiplas instâncias.

    sudo nvidia-smi -mig 1
    
  4. Revise as formas de GPU de múltiplas instâncias disponíveis.

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

    A saída é semelhante à 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 (GI) de múltiplas instâncias e as instâncias de computação (CI) associadas que você deseja. Você pode criar essas instâncias especificando o nome completo ou abreviado do perfil, o ID do perfil ou uma combinação de ambos. Para obter mais informações, consulte Criando instâncias de GPU .

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

    O sinalizador -C também é especificado, 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 multiinstâncias foram criadas:

    sudo nvidia-smi mig -lgi
    
  7. Verifique se os GIs e os ICs correspondentes foram criados.

    sudo nvidia-smi
    

    A saída é semelhante à 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 vem a seguir?