Criar uma VM N1 com GPUs anexadas


Neste documento, explicamos como criar uma VM que tenha GPUs anexadas e usa uma família de máquinas N1. É possível usar a maioria dos tipos de máquinas N1, exceto N1 shared-core.

Antes de começar

  • Para analisar outras etapas de pré-requisito, como selecionar uma imagem do SO e verificar a cota da GPU, consulte o documento de visão geral.
  • 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 da seguinte maneira.

    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. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    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.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

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

Visão geral

Os seguintes modelos de GPU podem ser anexados a VMs que usam famílias de máquinas N1.

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 à VM.

Criar uma VM com GPUs anexadas

É possível criar uma VM N1 que tenha GPUs anexadas usando o console do Google Cloud, a CLI do Google Cloud ou a REST.

Console

  1. No console do Google 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. Veja a lista de zonas de GPU disponíveis.

  4. Na seção Configuração da máquina, selecione a família de máquinas GPU e faça o seguinte:

    1. Na lista Tipo de GPU, selecione um dos modelos de GPU compatíveis com a máquina N1.
    2. Na lista Número de GPUs, selecione o número de GPUs.
    3. Se o modelo de GPU for compatível com estação de trabalho virtual NVIDIA RTX (vWS) para cargas de trabalho gráficas e você planeja executar cargas de trabalho com muitos gráficos nessa VM, selecione Ativar Estação de trabalho virtual (NVIDIA GRID)

    4. Na lista Tipo de máquina, selecione um dos tipos de máquina N1 predefinidos. Outra opção é especificar as configurações de tipo de máquina personalizado.

  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 GB.
    3. Para confirmar as opções do disco de inicialização, clique em Selecionar.
  7. Opcional: configure o modelo de provisionamento. Por exemplo, se a carga de trabalho for tolerante a falhas e resistente a possíveis preempções da VM, use as VMs do Spot para reduzir o custo das VMs e das GPUs anexadas. Para mais informações, consulte GPUs em VMs spot. Para isso, siga as seguintes etapas:

    1. Na seção Políticas de disponibilidade, selecione Spot na lista Modelo de provisionamento de VM. Essa configuração desativa as opções de reinicialização automática e manutenção de host para a VM.
    2. Opcional: na lista No encerramento da VM, selecione o que acontecerá quando o Compute Engine encerrar a VM:
      • Para interromper a VM durante a preempção, selecione Parar (padrão).
      • Para excluir a VM durante a preempção, selecione Excluir.
  8. 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.

Se a carga de trabalho for tolerante a falhas e resistente a possíveis preempções da VM, use as VMs spot para reduzir o custo das VMs e das GPUs anexadas. Para mais informações, consulte GPUs em VMs spot. O --provisioning-model=SPOT é uma flag opcional que configura suas VMs como VMs do Spot. Para VMs do Spot, as flags de opções de reinicialização automática e manutenção do host estão desativadas.

gcloud compute instances create VM_NAME \
    --machine-type MACHINE_TYPE \
    --zone ZONE \
    --boot-disk-size DISK_SIZE \
    --accelerator type=ACCELERATOR_TYPE,count=ACCELERATOR_COUNT \
    [--image IMAGE | --image-family IMAGE_FAMILY] \
    --image-project IMAGE_PROJECT \
    --maintenance-policy TERMINATE \
    [--provisioning-model=SPOT]

Substitua:

  • VM_NAME: o nome da nova VM;
  • MACHINE_TYPE: o tipo de máquina selecionado para a VM.
  • ZONE: a zona para a VM. Essa zona precisa ser compatível com o tipo de GPU.
  • DISK_SIZE: o tamanho do disco de inicialização em GB Especifique um tamanho do disco de inicialização de pelo menos 40 GB.
  • IMAGE ou IMAGE_FAMILY compatível com GPUs. Especifique uma destas opções:

    • IMAGE: versão obrigatória de uma imagem pública. Por exemplo, --image debian-10-buster-v20200309.
    • IMAGE_FAMILY: uma família de imagens. Isso cria a VM a partir da imagem do SO mais recente e não obsoleta. Por exemplo, se você especificar --image-family debian-10, o Compute Engine criará uma VM a partir da versão mais recente da imagem do SO na família de imagens Debian 10.

    Também é possível especificar uma imagem personalizada ou Deep Learning VM Images

  • IMAGE_PROJECT: o projeto de imagem do Compute Engine ao qual a família de imagens pertence. Se estiver usando uma imagem personalizada ou uma Deep Learning VM images, especifique o projeto a que essas imagens pertencem.

  • ACCELERATOR_COUNT: o número de GPUs que você quer adicionar à VM. Consulte GPUs no Compute Engine para ver uma lista de limites de GPUs com base no tipo de máquina da VM.

  • ACCELERATOR_TYPE: o modelo de GPU que você quer usar. Se você planeja executar cargas de trabalho com muitos gráficos nesta VM, use um dos modelos de estação de trabalho virtual.

    Escolha um dos seguintes valores:

    • 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 é adicionada automaticamente à VM.

Exemplo

Por exemplo, é possível usar o seguinte comando gcloud para iniciar uma VM do Ubuntu 22.04 com uma GPU NVIDIA T4 e duas vCPUs na zona us-east1-d.

gcloud compute instances create gpu-instance-1 \
    --machine-type n1-standard-2 \
    --zone us-east1-d \
    --boot-disk-size 40GB \
    --accelerator type=nvidia-tesla-t4,count=1 \
    --image-family ubuntu-2204-lts \
    --image-project ubuntu-os-cloud \
    --maintenance-policy TERMINATE

REST

Identifique o tipo de GPU que você quer adicionar à VM. Envie uma solicitação GET para listar os tipos de GPU disponíveis para o projeto em uma zona específica.

Se a carga de trabalho for tolerante a falhas e resistente a possíveis preempções da VM, use as VMs spot para reduzir o custo das VMs e das GPUs anexadas. Para mais informações, consulte GPUs em VMs spot. O "provisioningModel": "SPOT" é um parâmetro opcional que configura suas VMs como VMs spot. Para VMs do Spot, as flags de opções de reinicialização automática e manutenção do host estão desativadas.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/acceleratorTypes

Substitua:

  • PROJECT_ID: ID do projeto.
  • ZONE: zona a partir da qual você quer listar os tipos de GPU disponíveis.

Envie uma solicitação POST ao método instances.insert. Inclua o parâmetro acceleratorType para especificar o tipo de GPU que quer usar e inclua o parâmetro acceleratorCount para especificar quantas GPUs você quer adicionar. Também defina 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": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
      },
      "boot": true
    }
  ],
  "name": "VM_NAME",
  "networkInterfaces":
  [
    {
      "network": "projects/PROJECT_ID/global/networks/NETWORK"
    }
  ],
  "guestAccelerators":
  [
    {
      "acceleratorCount": ACCELERATOR_COUNT,
      "acceleratorType": "projects/PROJECT_ID/zones/ZONE/acceleratorTypes/ACCELERATOR_TYPE"
    }
  ],
  "scheduling":
  {
    ["automaticRestart": true],
    "onHostMaintenance": "TERMINATE",
    ["provisioningModel": "SPOT"]
  },
}

Substitua:

  • VM_NAME: o nome da VM.
  • PROJECT_ID: o ID do projeto.
  • ZONE: a zona para a VM. Essa zona precisa ser compatível com o tipo de GPU.
  • MACHINE_TYPE: o tipo de máquina que você selecionou para a VM. Consulte GPUs no Compute Engine para ver quais tipos de máquinas estão disponíveis com base na quantidade de GPUs que você quer;
  • IMAGE ou IMAGE_FAMILY: especifique uma das seguintes opções:

    • IMAGE: especifique a versão exigida de uma imagem pública. Exemplo: "sourceImage": "projects/debian-cloud/global/images/debian-10-buster-v20200309"
    • IMAGE_FAMILY: uma família de imagens. Isso cria a VM a partir da imagem do SO mais recente e não obsoleta. Por exemplo, se você especificar "sourceImage": "projects/debian-cloud/global/images/family/debian-10", o Compute Engine criará uma VM a partir da versão mais recente da imagem do SO na família de imagens Debian 10.

    Também é possível especificar uma imagem personalizada ou Deep Learning VM Images

  • IMAGE_PROJECT: o projeto de imagem do Compute Engine ao qual a família de imagens pertence. Se estiver usando uma imagem personalizada ou Deep Learning VM Images, especifique o projeto a que essas imagens pertencem.

  • 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 default para usar sua rede padrão.

  • ACCELERATOR_COUNT: o número de GPUs que você quer adicionar à VM. Consulte GPUs no Compute Engine para ver uma lista de limites de GPUs com base no tipo de máquina da VM.

  • ACCELERATOR_TYPE: o modelo de GPU que você quer usar. Se você planeja executar cargas de trabalho com muitos gráficos nesta VM, use um dos modelos de estação de trabalho virtual.

    Escolha um dos seguintes valores:

    • 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 é adicionada automaticamente à VM.

Instalar drivers

Para instalar os drivers, escolha uma das seguintes opções:

A seguir