Crie uma VM de início flexível

Este documento explica como criar uma instância de máquina virtual (VM) de início flexível. As VMs de início flexível são executadas durante um máximo de sete dias e ajudam a adquirir recursos de elevada procura, como GPUs, a um preço com desconto. Estas funcionalidades tornam as VMs de início flexível numa solução económica para executar cargas de trabalho de curta duração, como o ajuste fino de modelos e a inferência em lote.

Para saber mais sobre as principais caraterísticas das VMs de início flexível, incluindo os requisitos e as limitações que aplica quando as cria, consulte o artigo Acerca das VMs de início flexível.

Antes de começar

  • Com base no tipo de máquina que quer usar, reveja um dos seguintes requisitos de configuração:

  • 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 de que precisa para criar VMs de início flexível, peça ao seu administrador para lhe conceder a função 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 de início flexível. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:

Autorizações necessárias

São necessárias as seguintes autorizações para criar VMs de início flexível:

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

Crie uma VM de início flexível

Para criar uma VM de início flexível, selecione uma das seguintes opções:

gcloud

Para criar uma VM de início flexível, use o comando gcloud compute instances create com as seguintes flags:

  • A bandeira de --request-valid-for-duration

  • A bandeira de --provisioning-model=FLEX_START

  • A bandeira de --instance-termination-action

  • A bandeira de --max-run-duration

  • A bandeira de --maintenance-policy=TERMINATE

  • A bandeira de --reservation-affinity=none

Para criar uma VM de início flexível, execute o seguinte comando:

gcloud compute instances create VM_NAME \
    --machine-type=MACHINE_TYPE \
    --zone=ZONE \
    --request-valid-for-duration=VALID_FOR_DURATION \
    --provisioning-model=FLEX_START \
    --instance-termination-action=TERMINATION_ACTION \
    --max-run-duration=RUN_DURATION \
    --maintenance-policy=TERMINATE \
    --reservation-affinity=none

Substitua o seguinte:

  • VM_NAME: o nome da nova VM.

  • MACHINE_TYPE: o tipo de máquina a usar para a VM de início flexível. Se especificar um tipo de máquina G2 ou N1, considere o seguinte:

    • Para os tipos de máquinas G2, pode especificar opcionalmente uma NVIDIA RTX Virtual Workstations (vWS) para usar em cargas de trabalho com utilização intensiva de gráficos. Para o fazer, inclua a flag --accelerator no comando da seguinte forma:

      --accelerator=count=VWS_ACCELERATOR_COUNT,type=nvidia-l4-vws
      

      Substitua VWS_ACCELERATOR_COUNT pelo número de NVIDIA RTX vWS que a sua carga de trabalho requer.

    • Para os tipos de máquinas N1, tem de especificar o número e o tipo de GPUs a anexar à sua VM. Caso contrário, a criação da VM falha. Para anexar GPUs a uma VM N1, inclua a flag --accelerator no comando da seguinte forma:

      --accelerator=count=NUMBER_OF_ACCELERATORS,type=ACCELERATOR_TYPE
      

      Substitua o seguinte:

  • ZONE: a zona onde quer criar a VM. Para verificar se o tipo de máquina especificado está disponível na zona onde quer criar a VM, consulte o artigo Regiões e zonas disponíveis.

  • VALID_FOR_DURATION: o tempo máximo de espera para o aprovisionamento dos recursos pedidos, formatado como um número seguido de uma unidade (s, m, h ou d). Por exemplo, um valor de 30m define um tempo de 30 minutos e um valor de 1h2m3s define um tempo de uma hora, dois minutos e três segundos. Com base nos requisitos zonais da sua carga de trabalho, recomendamos que especifique uma das seguintes durações para ajudar a aumentar as probabilidades de o pedido de criação de VM ser bem-sucedido:

    • Se a sua carga de trabalho exigir que crie a VM numa zona específica, especifique uma duração entre 90 segundos (90s) e duas horas (2h). As durações mais longas aumentam as suas hipóteses de obter recursos.

    • Se a VM puder ser executada em qualquer zona na região, especifique uma duração de zero segundos (0s). Este valor especifica que o Compute Engine só atribui recursos se estiverem imediatamente disponíveis. Se o pedido de criação falhar porque os recursos não estão disponíveis, tente novamente o pedido numa zona diferente.

  • TERMINATION_ACTION: se deve parar ou eliminar a VM no final da respetiva duração de execução. Especifique um dos seguintes valores:

    • Para parar a VM: STOP

    • Para eliminar a VM: DELETE

  • RUN_DURATION: o tempo máximo de execução da VM antes de o Compute Engine a eliminar, formatado como um número seguido de uma unidade (s, m, h ou d). O valor tem de estar entre 10 minutos e sete dias.

REST

Para criar uma VM de início flexível, faça um pedido POST ao método instances.insert. No corpo do pedido, inclua os seguintes campos:

  • O campo params.requestValidForDuration.

  • O campo scheduling.provisioningModel está definido como FLEX_START.

  • O campo scheduling.instanceTerminationAction.

  • O campo scheduling.maxRunDuration.

  • O campo scheduling.onHostMaintenance está definido como TERMINATE.

  • O reservationAffinity.consumeReservationType está definido como NO_RESERVATION.

Para criar uma VM de início flexível, faça um pedido POST da seguinte forma:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
  "name": "VM_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "disks": [
    {
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      },
      "boot": true
    }
  ],
  "networkInterfaces": [
    {
      "network": "global/networks/default"
    }
  ],
  "params": {
    "requestValidForDuration": {
      "seconds": VALID_FOR_DURATION
    }
  },
  "scheduling": {
    "provisioningModel": "FLEX_START",
    "instanceTerminationAction": "TERMINATION_ACTION",
    "maxRunDuration": {
      "seconds": RUN_DURATION
    },
    "onHostMaintenance": "TERMINATE"
  },
  "reservationAffinity": {
    "consumeReservationType": "NO_RESERVATION"
  }
}

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto no qual criar a VM.

  • ZONE: a zona onde quer criar a VM. Para verificar se um tipo de máquina está disponível na zona onde quer criar a VM, consulte o artigo Regiões e zonas disponíveis.

  • VM_NAME: o nome da nova VM.

  • MACHINE_TYPE: o tipo de máquina a usar para a VM de início flexível. Se especificar um tipo de máquina G2 ou N1, considere o seguinte:

    • Para os tipos de máquinas G2, pode especificar opcionalmente uma NVIDIA RTX Virtual Workstations (vWS) para usar em cargas de trabalho com utilização intensiva de gráficos. Para tal, inclua o campo guestAccelerators no corpo do pedido da seguinte forma:

      "guestAccelerators": [
        {
          "acceleratorCount": VWS_ACCELERATOR_COUNT,
          "acceleratorType": "projects/PROJECT_ID/zones/ZONE/acceleratorTypes/nvidia-l4-vws"
        }
      ]
      

      Substitua VWS_ACCELERATOR_COUNT pelo número de NVIDIA RTX vWS que a sua carga de trabalho requer.

    • Para os tipos de máquinas N1, tem de especificar o número e o tipo de GPUs a anexar à sua VM. Caso contrário, a criação da VM falha. Para anexar GPUs a uma VM N1, inclua o campo guestAccelerators no corpo do pedido da seguinte forma:

      "guestAccelerators": [
        {
          "acceleratorCount": ACCELERATOR_COUNT,
          "acceleratorType": "projects/PROJECT_ID/zones/ZONE/acceleratorTypes/ACCELERATOR_TYPE"
        }
      ]
      

      Substitua o seguinte:

  • IMAGE_PROJECT: o projeto de imagem que contém a imagem, por exemplo, debian-cloud. Para mais informações sobre os projetos de imagens suportados, consulte o artigo Imagens públicas.

  • IMAGE: especifique uma das seguintes opções:

    • Uma versão específica da imagem do SO, por exemplo, debian-12-bookworm-v20240617.

    • Uma família de imagens, que tem de estar formatada como family/IMAGE_FAMILY. Este valor especifica a utilização da imagem do SO mais recente e não descontinuada. Por exemplo, se especificar family/debian-12, é usada a versão mais recente na família de imagens do Debian 12. Para mais informações sobre a utilização de famílias de imagens, consulte o artigo Práticas recomendadas para famílias de imagens.

  • VALID_FOR_DURATION: o tempo máximo em segundos para aguardar o aprovisionamento da VM. Com base nos requisitos zonais para a sua carga de trabalho, recomendamos que especifique uma das seguintes durações para ajudar a aumentar as probabilidades de o seu pedido de criação de VM ser bem-sucedido:

    • Se a sua carga de trabalho exigir que crie a VM numa zona específica, especifique uma duração entre 90 segundos (90) e duas horas (7200). As durações mais longas aumentam as suas hipóteses de obter recursos.

    • Se a VM puder ser executada em qualquer zona na região, especifique uma duração de zero segundos (0). Este valor especifica que o Compute Engine só atribui recursos se estiverem imediatamente disponíveis. Se o pedido de criação falhar porque os recursos não estão disponíveis, tente novamente o pedido numa zona diferente.

  • TERMINATION_ACTION: se deve parar ou eliminar a VM no final da respetiva duração de execução. Especifique um dos seguintes valores:

    • Para parar a VM: STOP

    • Para eliminar a VM: DELETE

  • RUN_DURATION: o tempo máximo em segundos que a VM é executada antes de o Compute Engine a eliminar. Este valor tem de estar entre 600 segundos (10 minutos) e 604 800 segundos (sete dias).

O que se segue?

Experimente

Se está a usar o Google Cloud pela primeira vez, crie uma conta para avaliar o desempenho do Compute Engine em cenários reais. Os novos clientes também recebem 300 USD em créditos gratuitos para executar, testar e implementar cargas de trabalho.

Experimente o Compute Engine gratuitamente