Criar uma VM A3, A2 ou G2

Neste documento, explicamos como criar uma instância de máquina virtual (VM) que usa um tipo de máquina das séries A3 High, A3 Mega, A3 Edge, A2 e G2. Você pode criar essas VMs como VMs sob demanda ou reduzir os custos criando VMs spot ou de início flexível. 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 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 Trusted Cloud by S3NS . 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 Trusted Cloud console to access Trusted Cloud by S3NS services and APIs, you don't need to set up authentication.

    gcloud

    1. Instale a CLI do Google Cloud e faça login na gcloud CLI com sua identidade federada. Depois de fazer login, inicialize a CLI do Google Cloud executando o seguinte comando:

      gcloud init
    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 e faça login na gcloud CLI com sua identidade federada. Depois de fazer login, inicialize a CLI do Google Cloud executando o seguinte comando:

      gcloud init

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

Funções exigidas

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 da computação (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 conferir as permissões exatas necessárias, expanda 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 a fim de 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 ao usar 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 A3 High, A3 Mega, A3 Edge, A2 ou G2 usando o Trusted Cloud console, a Google Cloud CLI ou REST.

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

Console

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

    Acesse "Criar uma instância"

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

  3. Selecione uma região e uma zona em que as GPUs estejam disponíveis. Confira 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. Siga uma destas etapas para selecionar um tipo de máquina predefinido ou personalizado com base na série:

      • Para todas as séries de máquinas com GPU, é possível selecionar um tipo de máquina predefinido da seguinte maneira:

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

          • Para VMs com otimização de aceleradores A3 High, A3 Mega ou A3 Edge, selecione NVIDIA H100 80GB ou NVIDIA H100 80GB MEGA.
          • Para VMs com otimização de aceleradores 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, é possível selecionar um tipo de máquina personalizado da seguinte forma:

        1. Na lista Tipo 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 à medida que você altera o número de vCPUs e a memória.
    2. Opcional: a série de máquinas G2 é compatível com estações de trabalho virtuais (vWS) NVIDIA RTX para cargas de trabalho de gráficos. Se você planeja executar cargas de trabalho com muitos gráficos na VM G2, selecione Ativar estação de trabalho virtual (NVIDIA GRID).

  5. Na seção Disco de inicialização, clique em Alterar. A página Configuração do disco de inicialização será aberta.

  6. 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.
    2. Especifique um tamanho do disco de inicialização de pelo menos 40 GiB.
    3. Para confirmar as opções do disco de inicialização, clique em Selecionar.
  7. Opcional: configure um modelo de provisionamento diferente para reduzir os custos. Na seção Opções avançadas, em Modelo de provisionamento de VM, selecione uma das seguintes opções:

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

  8. Opcional: na lista No encerramento da VM, selecione o que acontece quando o Compute Engine força a interrupção das VMs do Spot ou as VMs de início flexível atingem o fim da duração da execução:

    + To stop the VM during preemption, select **Stop** (default).
    + To delete the VM during preemption, select **Delete**.
    
  9. 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 sinalização --maintenance-policy=TERMINATE.

As seguintes sinalizações opcionais são mostradas no comando de amostra:

  • A flag --provisioning-model. Essa flag define o modelo de provisionamento da VM. Especifique SPOT ou FLEX_START. Se você não especificar um modelo, o padrão será usado. Para mais informações, consulte Modelos de provisionamento de instâncias do Compute Engine.
  • A sinalização --accelerator para especificar uma estação de trabalho virtual. A NVIDIA RTX Virtual Workstations (vWS) é compatível apenas com VMs do 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=PROVISIONING_MODEL] \
      [--accelerator=type=nvidia-l4-vws,count=VWS_ACCELERATOR_COUNT]
  
Substitua:
  • VM_NAME: o nome da nova VM;
  • MACHINE_TYPE: o tipo de máquina selecionado. 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áquina G2 também oferecem suporte a memória personalizada. A memória precisa ser um múltiplo de 1.024 MB e estar dentro do intervalo de memória compatível. 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 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.
  • VWS_ACCELERATOR_COUNT: o número necessário de GPUs virtuais.

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: o tipo de máquina selecionado. 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áquina G2 também oferecem suporte a memória personalizada. A memória precisa ser um múltiplo de 1.024 MB e estar dentro do intervalo de memória compatível. Por exemplo, para criar uma VM com 4 vCPUs e 19 GB de memória, especifique --machine-type=g2-custom-4-19456.
  • PROVISIONING_MODEL: (opcional) o modelo de provisionamento da VM. Especifique SPOT ou FLEX_START. 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-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 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 reduzir os custos, especifique um modelo de provisionamento diferente adicionando o campo "provisioningModel": "PROVISIONING_MODEL" ao objeto scheduling na sua solicitação. Se você especificar a criação de VMs spot, os campos onHostMaintenance e automaticRestart serão ignorados.
    "scheduling":
      {
        "onHostMaintenance": "terminate",
        "provisioningModel": "PROVISIONING_MODEL"
      }
    
  • Para VMs G2, a NVIDIA RTX Virtual Workstations (vWS) é compatível. 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/ZONE/acceleratorTypes/nvidia-l4-vws"
        }
      ]
    

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 Trusted Cloud console ou REST para criar essas VMs.

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

COS (A3 Edge/High)

É possível criar VMs a3-edgegpu-8g ou a3-highgpu-8g com GPUs H100 conectadas usando imagens do Container-Optimized OS (COS).

Para 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 o GPUDirect-TCPX ativado.

Imagem do SO público (G2)

É possível 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 da família de imagens Rocky Linux 8 otimizada para Trusted Cloud by S3NS 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, as sinalizações opcionais, como o tipo e o tamanho do disco de inicialização, também são especificadas.

    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:

    • VM_NAME: o nome da VM.
    • PROJECT_ID: o ID do projeto.
    • ZONE: a zona para a VM.
  2. Instale o driver NVIDIA e o CUDA. Para GPUs NVIDIA L4, a versão XX de CUDA é necessária.

Imagem de DLVM (A2)

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.

  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 especificadas as sinalizações 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:

    • VM_NAME: o nome da VM.
    • PROJECT_ID: o ID do projeto.
    • ZONE: a zona da VM.
  2. 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 Trusted 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 (somente VMs A3 e A2)

Uma GPU com várias instâncias particiona uma única GPU NVIDIA H100 ou A100 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 a GPU NVIDIA H100 ou A100 ofereça qualidade de serviço (QoS) garantida 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 e H100 de 80 GB, a memória alocada dobra para 10 GB cada.

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

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

  1. Crie uma VM com otimização de aceleradores A3 High, A3 Mega, A3 Edge ou A2.

  2. Ative os drivers de GPU NVIDIA.

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

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

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