Como criar VMs com GPUs anexadas


O Compute Engine fornece unidades de processamento gráfico (GPUs, na sigla em inglês) que podem ser adicionadas às máquinas virtuais (VMs). É possível usar essas GPUs para acelerar cargas de trabalho específicas nas suas VMs, como aprendizado de máquina e processamento de dados.

Nesta página, explicamos como criar uma VM com GPUs anexadas. Se quiser adicionar GPUs a VMs atuais, consulte Como adicionar ou remover GPUs.

Para mais informações sobre o que pode ser feito com as GPUs e que tipos de hardware de GPU estão disponíveis, leia GPUs no Compute Engine.

Antes de começar

  • Para usar os exemplos de linha de comando deste guia, faça o seguinte:
    1. Instale a ferramenta de linha de comando gcloud ou a atualize para a versão mais recente.
    2. Defina uma região e uma zona padrão.
  • Para usar os exemplos da API deste guia, configure o acesso a ela.
  • Leia sobre preços de GPU no Compute Engine para entender o custo do uso de GPUs nas VMs.
  • Leia sobre restrições para VMs com GPUs.
  • Verifique sua cota de GPU.
  • Escolha uma imagem do sistema operacional:
    • Se você estiver usando GPUs para o aprendizado de máquina, poderá utilizar uma imagem de VM de aprendizado profundo para sua VM. As imagens de VM de aprendizado profundo têm drivers de GPU pré-instalados e incluem pacotes como o TensorFlow e o PyTorch. Você também pode usar as imagens de VM de aprendizado profundo para cargas de trabalho gerais de GPU. Para informações sobre as imagens disponíveis e os pacotes instalados nas imagens, consulte Como escolher uma imagem.
    • Use qualquer imagem pública ou personalizada, mas algumas podem exigir um driver exclusivo ou processo de instalação não abordado neste documento. É preciso identificar quais drivers são apropriados para as imagens. Consulte Como instalar drivers de GPU para conhecer as etapas de instalação.

Como verificar a cota da GPU

Para proteger os usuários e sistemas do Compute Engine, novos projetos têm uma cota global de GPU, o que limita o número total de GPUs que podem ser criadas em qualquer zona compatível.

Use o comando regions describe para garantir que você tenha uma cota de GPU suficiente na região em que quer criar VMs com GPUs.

gcloud compute regions describe REGION

Substitua REGION pela região que você quer verificar a cota de GPU.

Se você precisar de uma cota extra de GPU, solicite um aumento de cota. Quando você solicita uma cota de GPU, precisa pedir uma cota para os tipos de GPU que você quer criar em cada região e outra cota global para o número total de GPUs de todos os tipos em todas as zonas.

Se seu projeto tiver um histórico de faturamento estabelecido, ele receberá cota automaticamente depois que você enviar a solicitação.

Limitações

As seguintes limitações se aplicam a VMs do Windows com GPUs anexadas (A100):

  • Tipos de máquina a2-megagpu-16g não são compatíveis com o sistema operacional Windows. Ao usar sistemas operacionais Windows, escolha um tipo de máquina diferente. Para ver uma lista de tipos de máquina, consulte GPUs NVIDIA® A100.
  • Para VMs do Windows que usam tipos de máquina A2, não é possível fazer um formato rápido dos SSDs locais anexados. Para formatar esses SSDs locais, é preciso usar o utilitário diskpart e especificar format fs=ntfs label=tmpfs.

Criar VMs com GPUs anexadas

Para criar uma VM com GPUs anexadas, siga estas etapas:

  1. Crie a VM. O método usado para criar uma VM depende do modelo de GPU.

  2. Para que a VM use a GPU, é necessário instalar o driver da GPU na VM.

  3. Se você ativou as estações de trabalho virtuais NVIDIA® GRID, instale drivers GRID® para estações de trabalho virtuais.

Como criar VMs com GPUs anexadas (GPUs A100)

Nesta seção, você aprenderá como criar VMs com GPUs NVIDIA® A100 anexadas. Para outros tipos de GPU, consulte Como criar VMs com GPUs anexadas (outros tipos de GPU).

Se você estiver criando VMs do Windows com GPUs, consulte Limitações neste documento.

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. Consulte a lista de zonas de GPU A100 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 NVIDIA Tesla A100. A série do tipo de máquina é definida com base no tipo de GPU.

      Quando você seleciona NVIDIA Tesla A100, a Série do tipo de máquina é definida como A2 e o Tipo de máquina é definido como A2 tipo de máquina

    2. Na lista Número de GPUs, selecione o número de GPUs.

  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 uma Deep Learning VM Image.
    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 Salvar.
  7. Defina quaisquer outras configurações de VM necessárias. Por exemplo, altere as configurações de Preempção para definir a VM como preemptiva. Isso reduz o custo da VM e das GPUs anexadas. Para mais informações, consulte GPUs em instâncias preemptivas.

  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. As VMs com GPUs não podem migrar em tempo real. Defina a sinalização --maintenance-policy TERMINATE.

O --preemptible é uma sinalização opcional que configura sua VM como uma instância preemptiva. Isso reduz o custo da VM e das GPUs anexadas. Para mais informações, consulte GPUs em instâncias preemptivas.

gcloud compute instances create VM_NAME \
    --machine-type MACHINE_TYPE \
    --zone ZONE \
    --boot-disk-size DISK_SIZE \
    [--image IMAGE | --image-family IMAGE_FAMILY] \
    --image-project IMAGE_PROJECT \
    --maintenance-policy TERMINATE --restart-on-failure \
    [--preemptible]

Substitua:

  • VM_NAME: o nome da nova VM;
  • MACHINE_TYPE: o tipo de máquina A2 que você selecionou para a VM.
  • ZONE: a zona para a VM. Essa zona precisa ser compatível com GPUs A100.
  • 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 uma Deep Learning VM Image

  • 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 imagem de VM de aprendizado profundo, especifique o projeto a que essas imagens pertencem.

API

Na API, crie uma solicitação POST para o método instances.insert. As VMs com GPUs não podem migrar em tempo real. Defina o parâmetro onHostMaintenance como TERMINATE.

O "preemptible": true é um parâmetro opcional que configura sua VM como uma instância preemptiva. Isso reduz o custo da VM e das GPUs anexadas. Para mais informações, consulte GPUs em instâncias preemptivas.

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"
    }
  ],
  "scheduling":
  {
    "onHostMaintenance": "terminate",
    "automaticRestart": true,
    ["preemptible": true]
  },
}

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 GPUs A100.
  • MACHINE_TYPE: um tipo de máquina A2 que você selecionou para a VM.
  • 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 uma Deep Learning VM Image

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

Em seguida: instale o driver da GPU na VM para que o sistema possa usar o dispositivo. Para GPUs A100, o CUDA 11 é necessário.

Exemplos (GPUs A100)

Nestes exemplos, as VMs são criadas com GPUs NVIDIA® A100 anexadas usando a ferramenta de linha de comando gcloud. No entanto, também é possível usar o Console do Google Cloud ou a API do Compute Engine para criar essas VMs.

Os exemplos a seguir mostram como criar VMs usando as seguintes imagens:

Imagem DLVM

Usar imagens de DLVM é a maneira mais fácil de começar, porque essas imagens já têm os drivers NVIDIA e bibliotecas CUDA pré-instaladas.

Essas imagens também fornecem otimizações de desempenho.

As seguintes imagens de DLVM são compatíveis com NVIDIA® A100:

  • common-cu110: driver NVIDIA e CUDA pré-instalados
  • tf-ent-1-15-cu110: driver NVIDIA, CUDA, TensorFlow Enterprise 1.15.3 pré-instalados
  • tf2-ent-2-1-cu110: driver NVIDIA, CUDA, TensorFlow Enterprise 2.1.1 pré-instalados
  • tf2-ent-2-3-cu110: driver NVIDIA, CUDA, TensorFlow Enterprise 2.3.1 pré-instalados
  • pytorch-1-6-cu110: driver NVIDIA, CUDA, Pytorch 1.6

Para mais informações sobre as imagens de DLVM disponíveis e os pacotes instalados nas imagens, consulte a documentação sobre VMs de aprendizado profundo.

  1. Crie uma VM usando a imagem tf2-ent-2-3-cu110 e o tipo de máquina a2-highgpu-1g. Neste exemplo, são especificadas as sinalizações opcionais, como tamanho e escopo do disco de inicialização.

    gcloud compute instances create VM_NAME \
       --project PROJECT_ID \
       --zone us-central1-c \
       --machine-type a2-highgpu-1g \
       --maintenance-policy TERMINATE --restart-on-failure \
       --image-family tf2-ent-2-3-cu110 \
       --image-project deeplearning-platform-release \
       --boot-disk-size 200GB \
       --metadata "install-nvidia-driver=True,proxy-mode=project_editors" \
       --scopes https://www.googleapis.com/auth/cloud-platform
    

    Substitua:

    • VM_NAME: o nome da VM.
    • PROJECT_ID: o ID do projeto.
  2. O exemplo de comando anterior também gera um AI Platform Notebook para a VM. Para acessar o notebook, acesse a página do AI Platform no Console do Google Cloud.

    Acesse a página do AI Platform

Imagem pública ou personalizada

É possível criar VMs com GPUs anexadas que usam uma imagem pública disponível no Compute Engine ou uma imagem personalizada.

Para criar uma VM usando a imagem mais recente e não obsoleta da família de imagens CentOS 7 e do tipo de máquina a2-highgpu-1g. , siga estas etapas:

  1. Crie a VM. Neste exemplo, as sinalizações opcionais, como o tipo e o tamanho do disco de inicialização, também são especificadas.

    gcloud compute instances create VM_NAME \
        --project PROJECT_ID \
        --zone us-central1-c \
        --machine-type a2-highgpu-1g \
        --maintenance-policy TERMINATE --restart-on-failure \
        --image-family centos-7 \
        --image-project centos-cloud \
        --boot-disk-size 200GB \
        --boot-disk-type pd-ssd
    

    Substitua:

    • VM_NAME: o nome da VM.
    • PROJECT_ID: o ID do projeto.
  2. Instale o driver NVIDIA e o CUDA. Para GPUs NVIDIA® A100, o CUDA versão 11 ou mais recente é obrigatório.

COS

É possível criar VMs com GPUs anexadas que usam imagens otimizadas para contêiner (COS).

Para criar uma VM usando a imagem cos-85-lts e o tipo de máquina a2-highgpu-1g, conclua as etapas a seguir do cliente local: Os exemplos abaixo podem ser executados em um cliente Mac ou Linux:

  1. Se ainda não tiver um, crie um diretório /tmp.

    mkdir /tmp
  2. Adicione um arquivo de configuração /cloud-init.yaml ao diretório /tmp.

    Essas informações são necessárias para configurar a VM otimizada para contêineres e também instalar o driver NVIDIA e o CUDA quando a VM for inicializada.

    cat <<'EOF' > /tmp/cloud-init.yaml
    #cloud-config
    
    write_files:
      - path: /etc/systemd/system/cos-gpu-installer.service
        permissions: 0755
        owner: root
        content: |
          [Unit]
          Description=Run the GPU driver installer container
          Requires=network-online.target gcr-online.target
          After=network-online.target gcr-online.target
    
          [Service]
          User=root
          Type=oneshot
          RemainAfterExit=true
          Environment=INSTALL_DIR=/var/lib/nvidia
          ExecStartPre=/bin/mkdir -p ${INSTALL_DIR}
          ExecStartPre=/bin/mount --bind ${INSTALL_DIR} ${INSTALL_DIR}
          ExecStartPre=/bin/mount -o remount,exec ${INSTALL_DIR}
          ExecStart=/usr/bin/docker run --privileged \
                                        --net=host  \
                                        --pid=host \
                                        --volume ${INSTALL_DIR}:/usr/local/nvidia \
                                        --volume /dev:/dev \
                                        --volume /:/root \
                                        --env NVIDIA_DRIVER_VERSION=450.80.02 \
                                        gcr.io/cos-cloud/cos-gpu-installer:v20200701
          StandardOutput=journal+console
          StandardError=journal+console
    
    runcmd:
      - systemctl daemon-reload
      - systemctl enable cos-gpu-installer.service
      - systemctl start cos-gpu-installer.service
    
    EOF
    
  3. Crie uma VM otimizada para contêiner usando a família de imagens cos-85-lts e o a2-highgpu-1g.

    Você precisa fornecer o arquivo de configuração usando a sinalização -metadata-from-file user-data.

    Neste exemplo, o tamanho opcional do disco de inicialização de sinalização também é especificado.

    gcloud compute instances create VM_NAME \
       --project PROJECT_ID \
       --zone us-central1-a \
       --machine-type a2-highgpu-1g \
       --maintenance-policy TERMINATE --restart-on-failure \
       --image-family cos-85-lts \
       --image-project cos-cloud \
       --boot-disk-size 200GB \
       --metadata-from-file user-data=/tmp/cloud-init.yaml
    

    Substitua:

    • VM_NAME: o nome da VM.
    • PROJECT_ID: o ID do projeto.

    Depois que a VM for criada, faça login na VM e execute o seguinte comando para verificar se o driver NVIDIA está instalado.

    /var/lib/nvidia/bin/nvidia-smi

    O driver leva cerca de cinco minutos para ser instalado.

GPUs com várias instâncias (A100)

Uma GPU com várias instâncias particiona uma GPU NVIDIA A100 dentro da mesma VM em até sete instâncias de GPU independentes. Elas são executados simultaneamente, cada uma com sua própria memória, caches e multiprocessadores de streaming. Essa configuração permite que a GPU A100 ofereça qualidade de serviço garantida (QoS) até sete vezes mais alta em comparação com os modelos de GPU anteriores.

Para mais informações sobre o uso de GPUs de várias instâncias, consulte o Guia do usuário de GPU com várias instâncias NVIDIA.

Para criar GPUs de várias instâncias, conclua as seguintes etapas:

  1. Crie uma VM com GPUs A100 anexadas.

  2. Ative os drivers de GPU NVIDIA.

  3. Ative as GPUs com várias instâncias e reinicie a VM.

    sudo nvidia-smi -mig 1
    sudo reboot
    
  4. Revise os formatos de GPU com várias instâncias disponíveis.

    sudo nvidia-smi mig --list-gpu-instance-profiles
    

    A resposta será semelhante a:

    +--------------------------------------------------------------------------+
    | GPU instance profiles:                                                   |
    | GPU   Name          ID    Instances   Memory     P2P    SM    DEC   ENC  |
    |                           Free/Total   GiB              CE    JPEG  OFA  |
    |==========================================================================|
    |   0  MIG 1g.5gb     19     7/7        4.75       No     14     0     0   |
    |                                                          1     0     0   |
    +--------------------------------------------------------------------------+
    |   0  MIG 2g.10gb    14     3/3        9.75       No     28     1     0   |
    |                                                          2     0     0   |
    +--------------------------------------------------------------------------+
    |   0  MIG 3g.20gb     9     2/2        19.62      No     42     2     0   |
    |                                                          3     0     0   |
    +--------------------------------------------------------------------------+
    |   0  MIG 4g.20gb     5     1/1        19.62      No     56     2     0   |
    |                                                          4     0     0   |
    +--------------------------------------------------------------------------+
    |   0  MIG 7g.40gb     0     1/1        39.50      No     98     5     0   |
    |                                                          7     1     1   |
    +--------------------------------------------------------------------------+
    
  5. Crie a GPU de várias instâncias (GI, na sigla em inglês) e as instâncias de computação (CI, na sigla em inglês) associadas que você quer. Para criar essas instâncias, especifique o nome completo ou abreviado do perfil, o ID do perfil ou uma combinação de ambos. Para saber mais, consulte Como criar instâncias de GPU.

    O exemplo a seguir cria duas instâncias de GPU MIG 3g.20gb usando uma combinação do nome do perfil abreviado (3g.20gb) e do ID do perfil (9).

    A sinalização -C também é especificada, o que cria as instâncias de computação associadas para o perfil necessário.

    sudo nvidia-smi mig -cgi 9,3g.20gb -C
    

    A resposta será semelhante a:

    Successfully created GPU instance ID  2 on GPU  0 using profile MIG 3g.20gb (ID  9)
    Successfully created compute instance ID  0 on GPU  0 GPU instance ID  2 using profile MIG 3g.20gb (ID  2)
    Successfully created GPU instance ID  1 on GPU  0 using profile MIG 3g.20gb (ID  9)
    Successfully created compute instance ID  0 on GPU  0 GPU instance ID  1 using profile MIG 3g.20gb (ID  2)
    
  6. Verifique se as duas GPUs de várias instâncias foram criadas:

    sudo nvidia-smi mig -lgi
    

    A resposta será semelhante a:

    +----------------------------------------------------+
    | GPU instances:                                     |
    | GPU   Name          Profile  Instance   Placement  |
    |                       ID       ID       Start:Size |
    |====================================================|
    |   0  MIG 3g.20gb       9        1          0:4     |
    +----------------------------------------------------+
    |   0  MIG 3g.20gb       9        2          4:4     |
    +----------------------------------------------------+
    
  7. Verifique se as GIs e as CIs correspondentes foram criadas.

    sudo nvidia-smi
    

    A resposta será semelhante a:

    Tue May 18 18:32:22 2021
    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 450.80.02    Driver Version: 450.80.02    CUDA Version: 11.0     |
    |-------------------------------+----------------------+----------------------+
    | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
    |                               |                      |               MIG M. |
    |===============================+======================+======================|
    |   0  A100-SXM4-40GB      Off  | 00000000:00:04.0 Off |                   On |
    | N/A   43C    P0    52W / 350W |     22MiB / 40537MiB |     N/A      Default |
    |                               |                      |              Enabled |
    +-------------------------------+----------------------+----------------------+
    +-----------------------------------------------------------------------------+
    | MIG devices:                                                                |
    +------------------+----------------------+-----------+-----------------------+
    | GPU  GI  CI  MIG |         Memory-Usage |        Vol|         Shared        |
    |      ID  ID  Dev |           BAR1-Usage | SM     Unc| CE  ENC  DEC  OFA  JPG|
    |                  |                      |        ECC|                       |
    |==================+======================+===========+=======================|
    |  0    1   0   0  |     11MiB / 20096MiB | 42      0 |  3   0    2    0    0 |
    |                  |      0MiB / 32767MiB |           |                       |
    +------------------+----------------------+-----------+-----------------------+
    |  0    2   0   1  |     11MiB / 20096MiB | 42      0 |  3   0    2    0    0 |
    |                  |      0MiB / 32767MiB |           |                       |
    +------------------+----------------------+-----------+-----------------------+
    
    +-----------------------------------------------------------------------------+
    | Processes:                                                                  |
    |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
    |        ID   ID                                                   Usage      |
    |=============================================================================|
    |  No running processes found                                                 |
    +-----------------------------------------------------------------------------+
    

Como criar VMs com GPUs anexadas (outros tipos de GPU)

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

  • NVIDIA® T4: nvidia-tesla-t4
  • NVIDIA® T4 Virtual Workstation com NVIDIA® GRID®: nvidia-tesla-t4-vws
  • NVIDIA® V100: nvidia-tesla-v100
  • NVIDIA® P100: nvidia-tesla-p100.
  • NVIDIA® P100 Virtual Workstation com NVIDIA® GRID®: nvidia-tesla-p100-vws

  • NVIDIA® P4: nvidia-tesla-p4

  • NVIDIA® P4 Virtual Workstation com NVIDIA® GRID®: nvidia-tesla-p4-vws

  • NVIDIA® K80: nvidia-tesla-k80

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. Saiba mais em Convenção de nomenclatura de recursos.

  3. Selecione uma região e uma zona compatível com o modelo de GPU.

    Para saber mais sobre os modelos de GPU compatíveis com diferentes regiões e zonas, consulte Disponibilidade e regiões de GPU.

  4. Na seção Configuração da máquina:

    1. Em Série, selecione N1.
    2. Em Tipo de máquina, selecione um tipo de máquina N1. Outra opção é especificar as configurações de tipo de máquina personalizado.
    3. Expanda a seção Plataforma de CPU e GPU.

      1. Clique em Adicionar GPU.
      2. Especifique o Tipo de GPU e o Número de GPUs.
      3. Se o modelo de GPU for compatível com estações de trabalho virtuais e você planeja executar cargas de trabalho com muitos gráficos nessa VM, selecione Ativar Virtual Workstation (NVIDIA GRID).

        Para informações sobre estações de trabalho virtuais NVIDIA® GRID, consulte GPUs NVIDIA® GRID® para cargas de trabalho de gráficos.

  5. Para selecionar o sistema operacional, 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 uma Deep Learning VM Image.
    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 Salvar.
  7. Defina quaisquer outras configurações de VM necessárias. Por exemplo, altere as configurações de Preempção para definir a VM como preemptiva. Isso reduz o custo da VM e das GPUs anexadas. Para mais informações, consulte GPUs em VMs preemptivas.

  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.

O --preemptible é uma sinalização opcional que configura sua VM como uma instância preemptiva. Isso reduz o custo da VM e das GPUs anexadas. Para mais informações, consulte GPUs em instâncias preemptivas.

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 --restart-on-failure \
    [--preemptible]

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 uma Deep Learning VM Image

  • 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 image, 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:

    • NVIDIA® T4: nvidia-tesla-t4
    • NVIDIA® T4 Virtual Workstation com NVIDIA® GRID®: nvidia-tesla-t4-vws
    • NVIDIA® P4: nvidia-tesla-p4
    • NVIDIA® P4 Virtual Workstation com NVIDIA® GRID®: nvidia-tesla-p4-vws
    • NVIDIA® P100: nvidia-tesla-p100
    • NVIDIA® P100 Virtual Workstation com NVIDIA® GRID®: nvidia-tesla-p100-vws
    • NVIDIA® V100: nvidia-tesla-v100
    • NVIDIA® K80: nvidia-tesla-k80

Exemplo

Por exemplo, é possível usar o seguinte comando gcloud para iniciar uma VM do Ubuntu 16.04 com uma GPU NVIDIA K80 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-k80,count=1 \
    --image-family ubuntu-1604-lts \
    --image-project ubuntu-os-cloud \
    --maintenance-policy TERMINATE --restart-on-failure

API

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.

O "preemptible": true é um parâmetro opcional que configura sua VM como uma instância preemptiva. Isso reduz o custo da VM e das GPUs anexadas. Para mais informações, consulte GPUs em instâncias preemptivas.

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.

Na API, crie uma solicitação POST para o 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":
  {
    "onHostMaintenance": "terminate",
    "automaticRestart": true,
    ["preemptible": true]
  },
}

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 uma Deep Learning VM Image

  • 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 image, 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:

    • NVIDIA® T4: nvidia-tesla-t4
    • NVIDIA® T4 Virtual Workstation com NVIDIA® GRID®: nvidia-tesla-t4-vws
    • NVIDIA® P4: nvidia-tesla-p4
    • NVIDIA® P4 Virtual Workstation com NVIDIA® GRID®: nvidia-tesla-p4-vws
    • NVIDIA® P100: nvidia-tesla-p100
    • NVIDIA® P100 Virtual Workstation com NVIDIA® GRID®: nvidia-tesla-p100-vws
    • NVIDIA® V100: nvidia-tesla-v100
    • NVIDIA® K80: nvidia-tesla-k80

Próxima: para garantir que seu sistema possa usar as GPUs, conclua as seguintes etapas:

A seguir