Crie VMs com GPU em massa


Pode criar um grupo de máquinas virtuais (VMs) que tenham 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. Se tiver cargas de trabalho com muitos gráficos, como a visualização 3D, também pode criar estações de trabalho virtuais que usam estações de trabalho virtuais (vWS) NVIDIA RTX. A estação de trabalho virtual NVIDIA RTX está disponível para alguns modelos de GPU.

Tipo de máquina Modelo da GPU Modelo NVIDIA RTX Virtual Workstation (vWS)
A4X Superchips NVIDIA GB200 Grace Blackwell (nvidia-gb200).

Cada Superchip contém quatro GPUs NVIDIA B200 Blackwell.

A4 GPUs NVIDIA B200 Blackwell (nvidia-b200)
A3 Ultra GPUs NVIDIA H200 SXM (nvidia-h200-141gb)
A3 Mega GPUs NVIDIA H100 SXM (nvidia-h100-mega-80gb)
A3 High, A3 Edge GPUs NVIDIA H100 SXM (nvidia-h100-80gb)
A2 Ultra GPUs NVIDIA A100 de 80 GB (nvidia-a100-80gb)
A2 Standard GPUs NVIDIA A100 de 40 GB (nvidia-a100-40gb)
G4 (pré-visualização) NVIDIA RTX PRO 6000 Blackwell Server Edition (nvidia-rtx-pro-6000)
G2 GPUs NVIDIA L4 (nvidia-l4) GPUs NVIDIA L4 Virtual Workstation (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 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 e G2 através da CLI 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.

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

  • O --provisioning-model=SPOT é uma flag opcional 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 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 em VMs Spot. Para VMs de preço especial, 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.

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 \
    [--provisioning-model=SPOT] \
    [--accelerator=type=nvidia-l4-vws,count=VWS_ACCELERATOR_COUNT]

Substitua o seguinte:

  • REGION: a região das VMs. Esta região tem de suportar 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.
  • 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.

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

  • PROJECT_ID: o ID do seu projeto
  • REGION: a região das VMs. Esta região tem de suportar 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 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 não descontinuada mais recente nessa família. Para mais informações sobre quando usar famílias de imagens, consulte as práticas recomendadas para famílias de imagens.

Definições adicionais:

  • Se a sua carga de trabalho for tolerante a falhas e puder suportar uma possível remoção preventiva de VMs, 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 usar uma VM de spot, adicione a opção "provisioningModel": "SPOT ao seu pedido. Para VMs de 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"
       }
     ]
    

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?