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ódigos ou amostras de um ambiente de desenvolvimento local, autentique-se no
Compute Engine selecionando uma das seguintes opções:
Selecione a guia para como planeja usar as amostras nesta página:
gcloud
-
Instale a CLI do Google Cloud. Após a instalação, inicialize a Google Cloud CLI executando o seguinte comando:
gcloud initAo usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
- Defina uma região e uma zona padrão.
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.
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 do Compute (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 acessar as permissões exatas necessárias, abra 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.createno projeto -
Usar uma imagem personalizada para criar a VM:
compute.images.useReadOnlyna imagem -
Usar um snapshot para criar a VM:
compute.snapshots.useReadOnlyno snapshot -
Usar um modelo de instância para criar a VM:
compute.instanceTemplates.useReadOnlyno modelo de instância -
Especificar uma sub-rede para a VM:
compute.subnetworks.useno projeto ou na sub-rede escolhida -
Especificar um endereço IP estático para a VM:
compute.addresses.useno projeto -
Atribuir um endereço IP externo à VM ao usar uma rede VPC:
compute.subnetworks.useExternalIpno projeto ou na sub-rede escolhida -
Atribuir uma rede legada à VM:
compute.networks.useno projeto -
Atribuir um endereço IP externo à VM usando uma rede legada:
compute.networks.useExternalIpno projeto -
Definir os metadados da instância de VM para a VM:
compute.instances.setMetadatano projeto -
Definir tags para a VM:
compute.instances.setTagsna VM -
Definir rótulos para a VM:
compute.instances.setLabelsna VM -
Definir uma conta de serviço a ser usada pela VM:
compute.instances.setServiceAccountna VM -
Criar um disco para a VM:
compute.disks.createno projeto -
Anexar um disco atual no modo somente leitura ou de leitura e gravação:
compute.disks.useno disco -
Anexar um disco atual no modo somente leitura:
compute.disks.useReadOnlyno 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. |
|
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 Hipercomputador de IA.
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 Google Cloud CLI 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:
- 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.
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:
REGION: a região das VMs. Essa região precisa ser compatível com o tipo de máquina otimizado para aceleradores selecionado.MACHINE_TYPE: o tipo de máquina selecionado. Escolha uma das seguintes opções:- Um tipo de máquina A3 High
- Um tipo de máquina A3 Mega
- Um tipo de máquina A3 Edge
- Um tipo de máquina padrão A2
- Um tipo de máquina A2 Ultra
- Um tipo de máquina G4
- Um tipo de máquina G2
Os tipos de máquina G2 também oferecem suporte a memória personalizada. A memória precisa ser um múltiplo de 1.024 MB e estar dentro do intervalo de memória compatível. 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 de sistema operacional compatível com GPUs.Se você quiser usar a imagem mais recente em uma família de imagens, substitua a sinalização
--imagepela sinalização--image-familye defina o valor dela como uma imagem família compatível com GPUs. Por exemplo:--image-family=rocky-linux-8-optimized-gcp.Também é possível especificar uma imagem personalizada ou Deep Learning VM Images
IMAGE_PROJECT: o projeto de imagem do Compute Engine a que a imagem do SO pertence. Se estiver usando uma imagem personalizada ou Deep Learning VM Images, especifique o projeto a que essas imagens pertencem.VWS_ACCELERATOR_COUNT: o número necessário de GPUs virtuais.
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. É possível especificar STANDARD ou
SPOT. Se você não especificar um modelo de provisionamento, o Compute Engine vai definir o valor como STANDARD. Para mais informações, consulte
Modelos de provisionamento de instâncias do Compute Engine.
--provisioning-model=PROVISIONING_MODEL |
| Estação de trabalho virtual | Especifica estações de trabalho virtuais (vWs) NVIDIA RTX 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:
|
| 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 ... |
| 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 Substitua:
|
| Política de posicionamento | Controla o posicionamento da instância em uma zona. É possível especificar uma
política
compacta para minimizar a latência de rede nas instâncias G2 ou uma
política
de distribuição para melhorar a resiliência das instâncias G4 ou G2 contra interrupções específicas da zona.
--resource-policies=POLICY_NAME Substitua |
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:
PROJECT_ID: ID do projetoREGION: a região das VMs. Essa região precisa ser compatível com o modelo de GPU selecionado.MACHINE_TYPE: o tipo de máquina selecionado. Escolha uma das seguintes opções:- Um tipo de máquina A3 High
- Um tipo de máquina A3 Mega
- Um tipo de máquina A3 Edge
- Um tipo de máquina padrão A2
- Um tipo de máquina A2 Ultra
- Um tipo de máquina G4
- Um tipo de máquina G2
Os tipos de máquina G2 também oferecem suporte à memória personalizada. A memória precisa ser um múltiplo de 1.024 MB e estar dentro do intervalo de memória compatível. Por exemplo, o nome do tipo de máquina
para uma instância com 4 vCPUs e 19 GB de memória seria
g2-custom-4-19456.
SOURCE_IMAGE_URI: o URI da imagem ou família de imagens específica que você 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 você especifica uma família de imagens, o Compute Engine cria uma VM a partir da imagem do SO mais recente e não obsoleta nessa família. Para mais informações sobre quando usar famílias de imagens, consulte Práticas recomendadas para famílias de imagens.
- Imagem específica:
Campos 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 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. Para mais informações, consulte
Modelos de provisionamento de instâncias do Compute Engine.
"scheduling":
{
"onHostMaintenance": "TERMINATE",
"provisioningModel": "PROVISIONING_MODEL"
}
Substitua
|
| Estação de trabalho virtual | Especifica estações de trabalho virtuais (vWS) NVIDIA RTX 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:
|
| 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"
}
}
|
| 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 Substitua:
|
| Política de posicionamento | Controla o posicionamento da instância em uma zona. É possível especificar uma
política
compacta para minimizar a latência de rede nas instâncias G2 ou uma
política
de distribuição para melhorar a resiliência das instâncias G4 ou G2 contra interrupções específicas da zona.
"resourcePolicies": [
"projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
]
Substitua:
|
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) (antiga 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-vwsPara essas estações de trabalho virtuais, uma licença da NVIDIA RTX Virtual Workstation (vWS) é adicionada automaticamente à sua 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-central1compatí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-central1compatí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
Saiba como monitorar o desempenho da GPU.
Saiba como usar uma largura de banda de rede maior.
Saiba como processar eventos de manutenção do host da GPU.