Crie VMs com GPU em massa

Pode criar um grupo de máquinas virtuais (VMs) que têm unidades de processamento gráfico (GPUs) anexadas através do processo de criação em massa. Com o processo de criação em massa, recebe uma validação antecipada em que o pedido falha rapidamente se não for viável. Além disso, se usar a flag de região, a API de criação em massa escolhe automaticamente a zona que tem capacidade para satisfazer o pedido.

Para saber mais sobre a criação em massa, consulte o artigo Acerca da criação em massa de VMs. 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.
  • Para rever as limitações da criação em massa, consulte o artigo Acerca da criação em massa de VMs.
  • 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:

    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.

Vista geral

Quando cria VMs com GPUs anexadas através do método de criação em massa, pode optar por criar VMs numa região (como us-central1) ou numa zona específica, como (us-central1-a).

Se optar por especificar uma região, o Compute Engine coloca as VMs em qualquer zona na região que suporte GPUs.

Tipos de máquinas

A família de máquinas otimizadas para aceleradores contém vários tipos de máquinas.

Cada tipo de máquina otimizado para aceleradores tem um modelo específico de GPUs NVIDIA anexado para suportar o tipo de carga de trabalho recomendado.

Cargas de trabalho de IA e ML Gráficos e visualização
Os tipos de máquinas da série A otimizados para aceleradores foram concebidos para cargas de trabalho de computação de elevado desempenho (HPC), inteligência artificial (IA) e aprendizagem automática (ML).

Para estes tipos de máquinas, o modelo de GPU é anexado automaticamente à instância.

Os tipos de máquinas da série G otimizados para aceleradores foram concebidos para cargas de trabalho como cargas de trabalho de simulação do NVIDIA Omniverse, aplicações com utilização intensiva de gráficos, transcodificação de vídeo e computadores virtuais. Estes tipos de máquinas suportam as estações de trabalho virtuais (vWS) NVIDIA RTX.

Para estes tipos de máquinas, o modelo de GPU é anexado automaticamente à instância.

  • A4X (NVIDIA GB200 Superchips)
    (nvidia-gb200)
  • A4 (NVIDIA B200)
    (nvidia-b200)
  • A3 Ultra (NVIDIA H200)
    (nvidia-h200-141gb)
  • A3 Mega (NVIDIA H100)
    (nvidia-h100-mega-80gb)
  • A3 High (NVIDIA H100)
    (nvidia-h100-80gb)
  • A3 Edge (NVIDIA H100)
    (nvidia-h100-80gb)
  • A2 Ultra (NVIDIA A100 80GB)
    (nvidia-a100-80gb)
  • A2 Standard (NVIDIA A100)
    (nvidia-a100-40gb)
  • G4 (NVIDIA RTX PRO 6000)
    (nvidia-rtx-pro-6000)
    (nvidia-rtx-pro-6000-vws)
  • G2 (NVIDIA L4)
    (nvidia-l4)
    (nvidia-l4-vws)

Crie grupos de A4X, A4 e A3 Ultra

Para criar instâncias em massa para as séries de máquinas A4X, A4 e A3 Ultra, consulte a vista geral das opções de implementação na documentação do AI Hypercomputer.

Crie grupos de VMs A3, A2, G4 e G2

Esta secção explica como pode criar instâncias em massa para as séries de máquinas A3 High, A3 Mega, A3 Edge, A2 Standard, A2 Ultra, G4 e G2 através da CLI do Google Cloud ou da REST.

gcloud

Para criar um grupo de VMs, use o gcloud compute instances bulk create comando. Para mais informações sobre os parâmetros e como usar este comando, consulte Crie VMs em massa.

Exemplo

Este exemplo cria duas VMs com GPUs anexadas através das seguintes especificações:

gcloud compute instances bulk create \
    --name-pattern="my-test-vm-#" \
    --region=REGION \
    --count=2 \
    --machine-type=MACHINE_TYPE \
    --boot-disk-size=200 \
    --image=IMAGE \
    --image-project=IMAGE_PROJECT \
    --on-host-maintenance=TERMINATE

Substitua o seguinte:

Se for bem-sucedido, o resultado é semelhante ao seguinte:

NAME          ZONE
my-test-vm-1  us-central1-b
my-test-vm-2  us-central1-b
Bulk create request finished with status message: [VM instances created: 2, failed: 0.]

Sinalizações opcionais

Para configurar ainda mais a sua instância de forma a satisfazer as necessidades da carga de trabalho ou do sistema operativo, inclua uma ou mais das seguintes flags quando executar o comando gcloud compute instances bulk create.

Funcionalidade Descrição
Modelo de aprovisionamento Define o modelo de aprovisionamento para a instância. Especifique SPOT ou FLEX_START. O FLEX_START não é suportado para instâncias G4. Se não especificar um modelo, é usado o modelo padrão. Para mais informações, consulte o artigo Modelos de aprovisionamento de instâncias do Compute Engine.
--provisioning-model=PROVISIONING_MODEL
Estação de trabalho virtual Especifica uma NVIDIA RTX Virtual Workstation (vWS) para cargas de trabalho de gráficos. Esta funcionalidade só é suportada para instâncias G4 e G2.
--accelerator=type=VWS_ACCELERATOR_TYPE,count=VWS_ACCELERATOR_COUNT

Substitua o seguinte:

  • Para VWS_ACCELERATOR_TYPE, escolha uma das seguintes opções:
    • Para instâncias G4, especifique nvidia-rtx-pro-6000-vws
    • Para instâncias G2, especifique nvidia-l4-vws
  • Para VWS_ACCELERATOR_COUNT, especifique o número de GPUs virtuais de que precisa.
SSD local Associa um ou mais SSDs locais à sua instância. Os SSDs locais podem ser usados para discos de memória temporária rápidos ou para introduzir dados nas GPUs, evitando gargalos de E/S.
    --local-ssd=interface=nvme \
    --local-ssd=interface=nvme \
    --local-ssd=interface=nvme ...
Para saber o número máximo de discos SSD locais que pode associar por instância de VM, consulte os limites de SSD local.
Interface de rede Anexa várias interfaces de rede à sua instância. Para instâncias g4-standard-384, pode anexar até duas interfaces de rede. Pode usar esta flag para criar uma instância com interfaces de rede duplas (2x 200 Gbps). Cada interface de rede tem de estar numa rede VPC única.

   --network-interface=network=VPC_NAME_1,subnet=SUBNET_NAME_1,nic-type=GVNIC \
   --network-interface=network=VPC_NAME_2,subnet=SUBNET_NAME_2,nic-type=GVNIC
   

As interfaces de rede duplas só são suportadas em tipos de máquinas g4-standard-384.

Substitua o seguinte:

  • VPC_NAME: o nome da sua rede VPC.
  • SUBNET_NAME: o nome da sub-rede que faz parte da rede VPC especificada.

REST

Use o instances.bulkInsertmétodo com os parâmetros necessários para criar várias VMs numa zona. Para mais informações sobre os parâmetros e como usar este comando, consulte Crie VMs em massa.

Exemplo

Este exemplo cria duas VMs com GPUs anexadas através das seguintes especificações:

  • Nomes das VMs: my-test-vm-1, my-test-vm-2
  • Cada VM tem duas GPUs anexadas, especificadas através do tipo de máquina otimizado para aceleradores adequado

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert
    {
    "namePattern":"my-test-vm-#",
    "count":"2",
    "instanceProperties": {
      "machineType":MACHINE_TYPE,
      "disks":[
        {
          "type":"PERSISTENT",
          "initializeParams":{
            "diskSizeGb":"200",
            "sourceImage":SOURCE_IMAGE_URI
          },
          "boot":true
        }
      ],
      "name": "default",
      "networkInterfaces":
      [
        {
          "network": "projects/PROJECT_ID/global/networks/default"
        }
      ],
      "scheduling":{
        "onHostMaintenance":"TERMINATE",
        ["automaticRestart":true]
      }
    }
    }
    

Substitua o seguinte:

Sinalizações opcionais

Para configurar ainda mais a sua instância de forma a satisfazer as necessidades da carga de trabalho ou do sistema operativo, inclua uma ou mais das seguintes flags quando executar o método instances.bulkInsert.

Funcionalidade Descrição
Modelo de aprovisionamento Para reduzir os custos, pode especificar um modelo de aprovisionamento diferente adicionando o campo "provisioningModel": "PROVISIONING_MODEL" ao objeto scheduling no seu pedido. Se especificar a criação de VMs do Spot, os campos onHostMaintenance e automaticRestart são ignorados. Para mais informações, consulte o artigo Modelos de aprovisionamento de instâncias do Compute Engine.
    "scheduling":
     {
       "onHostMaintenance": "terminate",
       "provisioningModel": "PROVISIONING_MODEL"
     }
  

Substitua PROVISIONING_MODEL por uma das seguintes opções:

  • STANDARD: (predefinição) Uma instância padrão.
  • SPOT: uma VM do Spot.
  • FLEX_START: Uma VM Flex Start. As VMs de início flexível são executadas durante um máximo de sete dias e podem ajudar a adquirir recursos de elevada procura, como GPUs, a um preço com desconto. Este modelo de aprovisionamento não é suportado para instâncias G4.
Estação de trabalho virtual Especifica uma NVIDIA RTX Virtual Workstation (vWS) para cargas de trabalho de gráficos. Esta funcionalidade só é suportada para instâncias G4 e G2.
   "guestAccelerators":
     [
       {
         "acceleratorCount": VWS_ACCELERATOR_COUNT,
         "acceleratorType": "projects/PROJECT_ID/zones/ZONE/acceleratorTypes/VWS_ACCELERATOR_TYPE"
       }
     ]
    

Substitua o seguinte:

  • Para VWS_ACCELERATOR_TYPE, escolha uma das seguintes opções:
    • Para instâncias G4, especifique nvidia-rtx-pro-6000-vws
    • Para instâncias G2, especifique nvidia-l4-vws
  • Para VWS_ACCELERATOR_COUNT, especifique o número de GPUs virtuais de que precisa.
SSD local Associa um ou mais SSDs locais à sua instância. Os SSDs locais podem ser usados para discos de memória temporária rápidos ou para introduzir dados nas GPUs, evitando gargalos de E/S.
   {
     "type": "SCRATCH",
     "autoDelete": true,
     "initializeParams": {
       "diskType": "projects/PROJECT_ID/zones/ZONE/diskTypes/local-nvme-ssd"
     }
   }
  
Para saber o número máximo de discos SSD locais que pode associar por instância de VM, consulte os limites de SSD local.
Interface de rede Anexa várias interfaces de rede à sua instância. Para instâncias g4-standard-384, pode anexar até duas interfaces de rede. Isto cria uma instância com interfaces de rede duplas (2x 200 Gbps). Cada interface de rede tem de estar numa rede VPC única.

   "networkInterfaces":
   [
     {
       "network": "projects/PROJECT_ID/global/networks/VPC_NAME_1",
       "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME_1",
       "nicType": "GVNIC"
     },
     {
       "network": "projects/PROJECT_ID/global/networks/VPC_NAME_2",
       "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME_2",
       "nicType": "GVNIC"
     }
   ]
  

As interfaces de rede duplas só são suportadas em tipos de máquinas g4-standard-384.

Substitua o seguinte:

  • VPC_NAME: o nome da sua rede VPC.
  • SUBNET_NAME: o nome da sub-rede que faz parte da rede VPC especificada.

Crie grupos de VMs de uso geral N1

Cria um grupo de VMs com GPUs anexadas através da Google Cloud CLI ou da REST.

Esta secção descreve como criar várias VMs com os seguintes tipos de GPUs:

GPUs NVIDIA:

  • NVIDIA T4: nvidia-tesla-t4
  • NVIDIA P4: nvidia-tesla-p4
  • NVIDIA P100: nvidia-tesla-p100
  • NVIDIA V100: nvidia-tesla-v100

NVIDIA RTX Virtual Workstation (vWS) (anteriormente conhecida como NVIDIA GRID):

  • Estação de trabalho virtual NVIDIA T4: nvidia-tesla-t4-vws
  • Estação de trabalho virtual NVIDIA P4: nvidia-tesla-p4-vws
  • NVIDIA P100 Virtual Workstation: nvidia-tesla-p100-vws

    Para estas estações de trabalho virtuais, é adicionada automaticamente uma licença da estação de trabalho virtual (vWS) NVIDIA RTX à sua instância.

gcloud

Para criar um grupo de VMs, use o gcloud compute instances bulk create comando. Para mais informações sobre os parâmetros e como usar este comando, consulte o artigo Crie VMs em massa.

Exemplo

O exemplo seguinte cria duas VMs com GPUs anexadas usando as seguintes especificações:

  • Nomes das VMs: my-test-vm-1, my-test-vm-2
  • VMs criadas em qualquer zona no us-central1 que suporte GPUs
  • Cada VM tem duas GPUs T4 anexadas, especificadas através das flags de tipo de acelerador e de número de aceleradores
  • Cada VM tem controladores de GPU instalados
  • Cada VM usa a Deep Learning VM Image pytorch-latest-gpu-v20211028-debian-10
gcloud compute instances bulk create \
    --name-pattern="my-test-vm-#" \
    --count=2 \
    --region=us-central1 \
    --machine-type=n1-standard-2 \
    --accelerator type=nvidia-tesla-t4,count=2 \
    --boot-disk-size=200 \
    --metadata="install-nvidia-driver=True" \
    --scopes="https://www.googleapis.com/auth/cloud-platform" \
    --image=pytorch-latest-gpu-v20211028-debian-10 \
    --image-project=deeplearning-platform-release \
    --on-host-maintenance=TERMINATE --restart-on-failure

Se for bem-sucedido, o resultado é semelhante ao seguinte:

NAME          ZONE
my-test-vm-1  us-central1-b
my-test-vm-2  us-central1-b
Bulk create request finished with status message: [VM instances created: 2, failed: 0.]

REST

Use o instances.bulkInsertmétodo com os parâmetros necessários para criar várias VMs numa zona. Para mais informações sobre os parâmetros e como usar este comando, consulte o artigo Crie VMs em massa.

Exemplo

O exemplo seguinte cria duas VMs com GPUs anexadas usando as seguintes especificações:

  • Nomes das VMs: my-test-vm-1, my-test-vm-2
  • VMs criadas em qualquer zona no us-central1 que suporte GPUs
  • Cada VM tem duas GPUs T4 anexadas, especificadas através das flags de tipo de acelerador e de número de aceleradores
  • Cada VM tem controladores de GPU instalados
  • Cada VM usa a Deep Learning VM Image pytorch-latest-gpu-v20211028-debian-10

Substitua PROJECT_ID pelo ID do seu projeto.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-central1/instances/bulkInsert

{
    "namePattern":"my-test-vm-#",
    "count":"2",
    "instanceProperties": {
      "machineType":"n1-standard-2",
      "disks":[
        {
          "type":"PERSISTENT",
          "initializeParams":{
            "diskSizeGb":"200",
            "sourceImage":"projects/deeplearning-platform-release/global/images/pytorch-latest-gpu-v20211028-debian-10"
          },
          "boot":true
        }
      ],
      "name": "default",
      "networkInterfaces":
      [
        {
          "network": "projects/PROJECT_ID/global/networks/default"
        }
      ],
      "guestAccelerators":
      [
        {
          "acceleratorCount": 2,
          "acceleratorType": "nvidia-tesla-t4"
        }
      ],
      "scheduling":{
        "onHostMaintenance":"TERMINATE",
        "automaticRestart":true
      },
      "metadata":{
        "items":[
          {
            "key":"install-nvidia-driver",
            "value":"True"
          }
        ]
      }
  }
 }

O que se segue?