Criar uma instância A3 Ultra ou A4


Este documento descreve como criar instâncias com GPUs anexadas da série de máquinas A3 Ultra ou A4. Para saber mais sobre como criar instâncias com GPUs anexadas, consulte Visão geral de como criar uma instância com GPUs anexadas.

Antes de começar

  • Para analisar as 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 da 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. A autenticação é o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud . Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se 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.

Antes de começar

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. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Set a default region and zone.

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 exigidas

Para receber as permissões necessárias para criar instâncias, 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 instâncias. Para conferir 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 instâncias:

  • 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
  • Atribuir uma rede legada à VM: compute.networks.use no projeto
  • 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 legada: compute.networks.useExternalIp no projeto
  • Especificar uma sub-rede para a VM: compute.subnetworks.use no projeto ou na sub-rede escolhida
  • Atribuir um endereço IP externo à VM ao usar uma rede VPC: compute.subnetworks.useExternalIp no projeto ou na sub-rede escolhida
  • 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 instância A3 Ultra ou A4

As instâncias A3 Ultra ou A4 estão disponíveis nas seguintes opções de criação, cada uma com procedimentos de criação, disponibilidade de recursos e preços diferentes. Identifique qual opção você quer usar com base na sua carga de trabalho.

  • Se você estiver executando cargas de trabalho de IA e ML de longa duração, como treinamento e inferência de modelos grandes que exigem a menor latência, recomendamos usar o cluster do Hypercompute (pré-lançamento). Com o Hypercompute Cluster, é possível reservar máquinas com alocação densa que oferecem programação compatível com a topologia e monitoramento e manutenção aprimorados dessa capacidade reservada. Para saber mais sobre o cluster de hipercomputação, consulte Cluster de hipercomputação na documentação do hipercomputador de IA.

    Para instruções sobre como criar instâncias A3 Ultra ou A4 usando o cluster de hipercomputação, consulte Visão geral da criação de VMs e clusters na documentação do Hypercomputer de IA.

  • Se você estiver executando cargas de trabalho de IA e ML de prioridade mais baixa que toleram interrupções de disponibilidade, poderá receber descontos significativos usando VMs spot. Embora seja possível criar e excluir VMs spot conforme necessário, elas são recursos finitos que nem sempre estão disponíveis. O Compute Engine pode forçar a interrupção (interromper ou excluir automaticamente) as VMs spot a qualquer momento. Para saber mais sobre as VMs spot, consulte VMs spot.

    Para instruções sobre como criar instâncias A3 Ultra ou A4 usando VMs Spot, consulte a seção Criar uma instância A3 Ultra ou A4 usando VMs Spot neste documento.

Criar uma instância A3 Ultra ou A4 usando VMs Spot

Para criar uma instância A3 Ultra ou A4 usando VMs Spot, siga as etapas nas seções a seguir:

  1. Crie redes VPC.
  2. Crie a VM do Spot.
  3. Prepare uma VM do Spot com GPUs anexadas para uso.

Criar redes VPC

Com base no tipo de máquina que você quer usar e no número de interfaces de rede no tipo de máquina, é necessário criar redes de nuvem privada virtual (VPC) da seguinte maneira:

Tipo de máquina Contagem de NICs físicas* Interfaces de rede Número de redes VPC a serem criadas
a4-highgpu-8g 10
  • Duas interfaces de rede gVNIC usadas para comunicação entre hosts
  • Uma interface de rede RDMA (anexada a uma rede com 8 sub-redes) para comunicação entre GPUs
3
a3-ultragpu-8g 10
  • Duas interfaces de rede gVNIC usadas para a comunicação entre hosts.
  • Uma interface de rede RDMA (anexada a uma rede com 8 sub-redes) para comunicação entre GPUs.
3

*Para mais informações sobre a organização da NIC, consulte Analisar o balanceamento de NIC e a largura de banda da rede.
Para mais informações sobre as interfaces de rede, consulte Como usar a NIC virtual do Google e Perfis de rede RDMA.

Configure as redes manualmente seguindo os guias de instruções ou automaticamente usando o script fornecido.

Guias de instruções

Para criar as redes, siga estas instruções:

Script

Para criar as redes, use o script abaixo.

  #!/bin/bash

  # Create standard VPCs (network and subnets) for the gVNICs
  for N in $(seq 0 1); do
    gcloud beta compute networks create GVNIC_NAME_PREFIX-net-$N \
      --subnet-mode=custom

    gcloud beta compute networks subnets create GVNIC_NAME_PREFIX-sub-$N \
      --network=GVNIC_NAME_PREFIX-net-$N \
      --region=REGION \
      --range=10.$N.0.0/16

    gcloud beta compute firewall-rules create GVNIC_NAME_PREFIX-internal-$N \
      --network=GVNIC_NAME_PREFIX-net-$N \
      --action=ALLOW \
      --rules=tcp:0-65535,udp:0-65535,icmp \
      --source-ranges=10.0.0.0/8
  done

  # Create SSH firewall rules
  gcloud beta compute firewall-rules create GVNIC_NAME_PREFIX-ssh \
    --network=GVNIC_NAME_PREFIX-net-0 \
    --action=ALLOW \
    --rules=tcp:22 \
    --source-ranges=IP_RANGE

  # Assumes that an external IP is only created for vNIC 0
  gcloud beta compute firewall-rules create GVNIC_NAME_PREFIX-allow-ping-net-0 \
    --network=GVNIC_NAME_PREFIX-net-0 \
    --action=ALLOW \
    --rules=icmp \
    --source-ranges=IP_RANGE

  # List and make sure network profiles exist
  gcloud beta compute network-profiles list

  # Create network for CX-7
  gcloud beta compute networks create RDMA_NAME_PREFIX-mrdma \
    --network-profile=ZONE-vpc-roce \
    --subnet-mode custom

  # Create subnets.
  for N in $(seq 0 7); do
    gcloud beta compute networks subnets create RDMA_NAME_PREFIX-mrdma-sub-$N \
      --network=RDMA_NAME_PREFIX-mrdma \
      --region=REGION \
      --range=10.$((N+2)).0.0/16  # offset to avoid overlap with gVNICs
  done
  

Substitua:

  • GVNIC_NAME_PREFIX: o prefixo de nome a ser usado para as redes VPC e sub-redes padrão que usam NICs gVNIC.
  • RDMA_NAME_PREFIX: o prefixo de nome a ser usado para as redes e sub-redes da VPC que usam NICs RDMA.
  • ZONE: especifique uma zona em que o tipo de máquina que você quer usar esteja disponível. Para informações sobre regiões, consulte Regiões e zonas de GPU.
  • REGION: a região em que você quer criar as redes. Ele precisa corresponder à zona especificada. Por exemplo, se a zona for europe-west1-b, a região será europe-west1.
  • IP_RANGE: o intervalo de IP a ser usado para as regras de firewall SSH.

Criar a VM do Spot

Para criar a VM spot, use um dos seguintes métodos:

Console

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

    Acesse "Criar uma instância"

    A tela Criar uma instância aparece e mostra o painel Configuração da máquina.

  2. No painel Configuração da máquina, siga estas etapas:

    1. Especifique um Nome para sua instância. Consulte a Convenção de nomenclatura de recursos.
    2. Selecione a Região e a Zona em que você quer reservar a capacidade. Confira a lista de regiões e zonas de GPU disponíveis.
    3. Clique na guia GPUs e siga estas etapas:
      1. Na lista Tipo de GPU, selecione o tipo de GPU.
        • Para instâncias A4, selecione NVIDIA B200
        • Para instâncias A3 Ultra, selecione NVIDIA H200 141GB
      2. Na lista Número de GPUs, selecione 8.
  3. No menu de navegação, clique em SO e armazenamento. No painel SO e armazenamento que aparece, siga estas etapas:

    1. Clique em Alterar. O painel Configuração do disco de inicialização é aberto.
    2. Na guia Imagens públicas, selecione uma imagem recomendada. Para uma lista de imagens recomendadas, consulte Sistemas operacionais.
    3. Para confirmar as opções do disco de inicialização, clique em Selecionar.
  4. Para criar uma instância com várias NICs, siga estas etapas. Caso contrário, pule estas etapas para criar uma instância de NIC única.

    1. No menu de navegação, clique em Rede. No painel Networking que aparece, siga estas etapas:

      1. Na seção Interfaces de rede, siga estas etapas:

      2. Exclua a interface de rede padrão. Para excluir a interface, clique em Excluir.

      3. Clique em Adicionar uma interface de rede. Use essa opção para adicionar as redes gVNIC e RDMA criadas na seção anterior. Ao adicionar as redes, lembre-se do seguinte:

        • Especifique as redes host nas listas Rede e Sub-rede e defina a lista Card da interface de rede como gVNIC.
        • Especifique suas redes de GPU nas listas Rede e Sub-rede e defina a lista Placa de rede como MRDMA para essas redes.
  5. No menu de navegação, clique em Avançado. No painel Avançado que aparece, siga estas etapas:

    1. Na seção Modelo de provisionamento, selecione Spot na lista Modelo de provisionamento de VM.

    2. Opcional: para especificar a ação a ser realizada quando o Compute Engine interromper a instância (parar ou excluir), siga estas etapas:

      1. Abra a seção Configurações avançadas do modelo de provisionamento de VM.
      2. Na lista No encerramento da VM, selecione uma opção.
  6. Para criar e iniciar a instância, clique em Criar.

gcloud

Para criar a instância, use o comando gcloud beta compute instances create:

gcloud beta compute instance create INSTANCE_NAME  \
    --machine-type=MACHINE_TYPE \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT \
    --provisioning-model=SPOT \
    --instance-termination-action=TERMINATION_ACTION \
    --zone=ZONE \
    --boot-disk-type=hyperdisk-balanced \
    --boot-disk-size=DISK_SIZE \
    --scopes=cloud-platform \
    --network-interface=nic-type=GVNIC,network=GVNIC_NAME_PREFIX-net-0,subnet=GVNIC_NAME_PREFIX-sub-0 \
    --network-interface=nic-type=GVNIC,network=GVNIC_NAME_PREFIX-net-1,subnet=GVNIC_NAME_PREFIX-sub-1,no-address \
    --network-interface=nic-type=MRDMA,network=RDMA_NAME_PREFIX-mrdma,subnet=RDMA_NAME_PREFIX-mrdma-sub-0,no-address \
    --network-interface=nic-type=MRDMA,network=RDMA_NAME_PREFIX-mrdma,subnet=RDMA_NAME_PREFIX-mrdma-sub-1,no-address \
    --network-interface=nic-type=MRDMA,network=RDMA_NAME_PREFIX-mrdma,subnet=RDMA_NAME_PREFIX-mrdma-sub-2,no-address \
    --network-interface=nic-type=MRDMA,network=RDMA_NAME_PREFIX-mrdma,subnet=RDMA_NAME_PREFIX-mrdma-sub-3,no-address \
    --network-interface=nic-type=MRDMA,network=RDMA_NAME_PREFIX-mrdma,subnet=RDMA_NAME_PREFIX-mrdma-sub-4,no-address \
    --network-interface=nic-type=MRDMA,network=RDMA_NAME_PREFIX-mrdma,subnet=RDMA_NAME_PREFIX-mrdma-sub-5,no-address \
    --network-interface=nic-type=MRDMA,network=RDMA_NAME_PREFIX-mrdma,subnet=RDMA_NAME_PREFIX-mrdma-sub-6,no-address \
    --network-interface=nic-type=MRDMA,network=RDMA_NAME_PREFIX-mrdma,subnet=RDMA_NAME_PREFIX-mrdma-sub-7,no-address

Substitua:

  • INSTANCE_NAME: o nome da instância.
  • MACHINE_TYPE: o tipo de máquina a ser usado para a instância, a3-ultragpu-8g ou a4-highgpu-8g.
  • IMAGE_FAMILY: a família de imagens do SO que você quer usar. Para ver as opções, consulte Detalhes do sistema operacional.
  • IMAGE_PROJECT: o ID do projeto da imagem do SO.
  • TERMINATION_ACTION: opcional: especifique qual ação realizar quando o Compute Engine forçar a interrupção da instância, STOP (comportamento padrão) ou DELETE.
  • ZONE: a zona em que você quer criar a instância. Para conferir as opções, consulte Regiões e zonas de GPU.
  • DISK_SIZE: o tamanho do disco de inicialização em GB.

REST

Para criar a instância, faça uma solicitação POST para o método instances.insert da seguinte maneira:

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/
{
  {
    "machineType":"projects/PROJECT_ID/zones/ZONE/machineTypes/MACHINE_TYPE",
    "name":"INSTANCE_NAME",
    "disks":[
        {
          "boot":true,
          "initializeParams":{
              "diskSizeGb":"DISK_SIZE",
              "diskType":"hyperdisk-balanced",
              "sourceImage":"projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
          },
          "mode":"READ_WRITE",
          "type":"PERSISTENT"
        }
    ],
    "networkInterfaces": [
      {
        "accessConfigs": [
          {
            "name": "external-nat",
            "type": "ONE_TO_ONE_NAT"
          }
        ],
        "network": "projects/PROJECT_ID/global/networks/GVNIC_NAME_PREFIX-net-0",
        "nicType": "GVNIC",
        "subnetwork": "projects/PROJECT_ID/region/REGION/subnetworks/GVNIC_NAME_PREFIX-sub-0"
      },
      {
        "network": "projects/PROJECT_ID/global/networks/GVNIC_NAME_PREFIX-net-1",
        "nicType": "GVNIC",
        "subnetwork": "projects/PROJECT_ID/region/REGION/subnetworks/GVNIC_NAME_PREFIX-sub-1"
      },
      {
        "network": "projects/PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-0"
      },
      {
        "network": "projects/PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-1"
      },
      {
        "network": "projects/PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-2"
      },
      {
        "network": "projects/PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-3"
      },
      {
        "network": "projects/PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-4"
      },
      {
        "network": "projects/PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-5"
      },
      {
        "network": "projects/PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-6"
      },
      {
        "network": "projects/PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-7"
      }
      ],
    "scheduling":{
      "provisioningModel":"SPOT",
      "instanceTerminationAction":"TERMINATION_ACTION"
    }
  }
}

Substitua:

  • PROJECT_ID: o ID do projeto em que você quer criar a instância.
  • ZONE: a zona em que você quer criar a instância. Para opções, consulte Regiões e zonas de GPU.
  • MACHINE_TYPE: o tipo de máquina a ser usado para a instância, a3-ultragpu-8g ou a4-highgpu-8g.
  • INSTANCE_NAME: o nome da instância.
  • DISK_SIZE: o tamanho do disco de inicialização em GB.
  • IMAGE_PROJECT: o ID do projeto da imagem do SO.
  • IMAGE_FAMILY: a família de imagens do SO que você quer usar. Para ver as opções, consulte Detalhes do sistema operacional.
  • TERMINATION_ACTION: opcional: especifique qual ação realizar quando o Compute Engine forçar a interrupção da instância, STOP (comportamento padrão) ou DELETE.

Preparar uma VM do Spot com GPUs anexadas para uso

Para preparar uma VM do Spot com GPUs anexadas para uso, siga estas etapas:

  1. Para permitir que uma instância use as GPUs anexadas, ela precisa de drivers de GPU. A menos que você tenha especificado uma imagem que já inclua os drivers de GPU necessários, siga as etapas para Instalar drivers de GPU.
  2. Para preparar uma VM Spot para uso, siga estas etapas:

A seguir