Criar VMs de GPU em massa

É possível criar um grupo de máquinas virtuais (VMs) que tenham unidades de processamento gráfico (GPUs) anexadas usando o processo de criação em massa. Com o processo de criação em massa, você tem uma validação antecipada em que a solicitação falha rapidamente se não for viável. Além disso, se você usar a sinalização de região, a API da instância em massa escolherá automaticamente a zona que tem capacidade para atender à solicitação.

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

    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 .

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.

Visão geral

Ao criar VMs com GPUs anexadas usando a API de instância em massa, é possível optar por criar VMs em uma região (como us-central1) ou em uma zona específica, como (us-central1-a).

Se você especificar uma região, o Compute Engine colocará as VMs em qualquer zona dentro da região compatível com GPUs.

Tipos de máquina

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

Cada tipo de máquina com otimização de acelerador tem um modelo específico de GPUs NVIDIA anexado para oferecer suporte ao tipo de carga de trabalho recomendado.

Cargas de trabalho de IA e ML Gráficos e visualização
Os tipos de máquina da série A otimizados para aceleradores foram projetados para cargas de trabalho de computação de alto desempenho (HPC), inteligência artificial (IA) e machine learning (ML).

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

Os tipos de máquina da série G otimizados para aceleradores são projetados para cargas de trabalho como as de simulação do NVIDIA Omniverse, aplicativos com muitos gráficos, transcodificação de vídeo e desktops virtuais. Esses tipos de máquina são compatíveis com NVIDIA RTX Virtual Workstations (vWS).

Para esses tipos de máquina, 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)

Criar 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 Visão geral das opções de implantação na documentação do AI Hypercomputer.

Criar grupos de VMs A3, A2, G4 e G2

Nesta seção, explicamos como 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 usando a CLI gcloud ou REST.

gcloud

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

Exemplo

Neste exemplo, criamos duas VMs que anexaram GPUs usando as 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:

Quando bem-sucedida, a saída será assim:

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

Flags opcionais

Para configurar ainda mais a instância e atender às necessidades da sua carga de trabalho ou do sistema operacional, inclua uma ou mais das seguintes flags ao executar o comando gcloud compute instances bulk create.

Recurso Descrição
Modelo de provisionamento Define o modelo de provisionamento da instância. Especifique SPOT ou FLEX_START. O FLEX_START não é compatível com instâncias G4. 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.
--provisioning-model=PROVISIONING_MODEL
Estação de trabalho virtual Especifica uma estação de trabalho virtual NVIDIA RTX (vWS) para cargas de trabalho de gráficos. Esse recurso é compatível apenas com instâncias G4 e G2.
--accelerator=type=VWS_ACCELERATOR_TYPE,count=VWS_ACCELERATOR_COUNT

Substitua:

  • 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 necessárias.
SSD local Anexa um ou mais SSDs locais à sua instância. Os SSDs locais podem ser usados como discos de trabalho rápidos ou para alimentar dados nas GPUs, evitando os 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 podem ser anexados por instância de VM, consulte Limites de SSD local.
Interface de rede Anexa várias interfaces de rede à sua instância. Para instâncias g4-standard-384, é possível anexar até duas interfaces de rede. É possível usar essa flag para criar uma instância com interfaces de rede dupla (2x 200 Gbps). Cada interface de rede precisa estar em uma rede VPC exclusiva.

   --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 dupla são compatíveis apenas com tipos de máquinas g4-standard-384.

Substitua:

  • 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 método instances.bulkInsert com os parâmetros necessários para criar várias VMs em uma zona. Para mais informações sobre os parâmetros e como usar esse comando, consulte Criar VMs em massa.

Exemplo

Neste exemplo, criamos duas VMs que anexaram GPUs usando as seguintes especificações:

  • nomes das VMs: my-test-vm-1, my-test-vm-2
  • Cada VM tem duas GPUs anexadas, especificadas pelo tipo de máquina otimizador de otimização apropriado.

    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:

Flags opcionais

Para configurar ainda mais sua instância e atender às necessidades da carga de trabalho ou do sistema operacional, inclua uma ou mais das seguintes flags ao executar o método instances.bulkInsert.

Recurso Descrição
Modelo de provisionamento 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. Para mais informações, consulte Modelos de provisionamento de instâncias do Compute Engine.
    "scheduling":
     {
       "onHostMaintenance": "terminate",
       "provisioningModel": "PROVISIONING_MODEL"
     }
  

Substitua PROVISIONING_MODEL por um dos seguintes:

  • STANDARD: (padrão) uma instância padrão.
  • SPOT: uma VM spot.
  • FLEX_START: uma VM de início flexível. As VMs de início flexível são executadas por até sete dias e podem ajudar você a adquirir recursos de alta demanda, como GPUs, a um preço com desconto. Esse modelo de provisionamento não é compatível com instâncias G4.
Estação de trabalho virtual Especifica uma estação de trabalho virtual NVIDIA RTX (vWS) para cargas de trabalho de gráficos. Esse recurso é compatível apenas com instâncias G4 e G2.
   "guestAccelerators":
     [
       {
         "acceleratorCount": VWS_ACCELERATOR_COUNT,
         "acceleratorType": "projects/PROJECT_ID/zones/ZONE/acceleratorTypes/VWS_ACCELERATOR_TYPE"
       }
     ]
    

Substitua:

  • 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 necessárias.
SSD local Anexa um ou mais SSDs locais à sua instância. Os SSDs locais podem ser usados como discos de trabalho rápidos ou para alimentar dados nas GPUs, evitando os 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 podem ser anexados por instância de VM, consulte Limites de SSD local.
Interface de rede Anexa várias interfaces de rede à sua instância. Para instâncias g4-standard-384, é possível anexar até duas interfaces de rede. Isso cria uma instância com interfaces de rede duplas (2x 200 Gbps). Cada interface de rede precisa estar em uma rede VPC exclusiva.

   "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 dupla são compatíveis apenas com tipos de máquinas g4-standard-384.

Substitua:

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

Criar grupos de VMs de uso geral N1

Para criar um grupo de VMs com GPUs anexadas, use a CLI do Google Cloud ou REST.

Nesta seção, descrevemos como criar várias VMs usando os seguintes tipos de GPU:

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

  • NVIDIA T4 Virtual Workstation: nvidia-tesla-t4-vws
  • NVIDIA P4 Virtual Workstation: nvidia-tesla-p4-vws
  • NVIDIA P100 Virtual Workstation: nvidia-tesla-p100-vws

    Para essas estações de trabalho virtuais, uma licença da NVIDIA RTX Virtual Workstation (vWS) é adicionada automaticamente à instância.

gcloud

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

Exemplo

O exemplo a seguir 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 em us-central1 compatível com GPUs
  • Cada VM tem duas GPUs T4 anexadas, especificadas usando o tipo e as sinalizações de contagem de aceleradores
  • Cada VM tem drivers 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

Quando bem-sucedida, a saída será assim:

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 método instances.bulkInsert com os parâmetros necessários para criar várias VMs em uma zona. Para mais informações sobre os parâmetros e como usar esse comando, consulte Criar VMs em massa.

Exemplo

O exemplo a seguir 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 em us-central1 compatível com GPUs
  • Cada VM tem duas GPUs T4 anexadas, especificadas usando o tipo e as sinalizações de contagem de aceleradores
  • Cada VM tem drivers de GPU instalados
  • Cada VM usa a Deep Learning VM Image pytorch-latest-gpu-v20211028-debian-10.

Substitua PROJECT_ID pela 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"
          }
        ]
      }
  }
 }

A seguir