Criar uma VM de início flexível

Neste documento, explicamos 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 por até sete dias e ajudam você a adquirir recursos de alta demanda, como GPUs, a um preço com desconto. Esses recursos tornam as VMs de início flexível uma solução econômica para executar cargas de trabalho de curta duração, como ajuste fino de modelos e inferência em lote.

Para saber mais sobre as principais características das VMs de início flexível, incluindo os requisitos e limitações aplicados ao criá-las, consulte Sobre as VMs de início flexível.

Antes de começar

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

  • 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ódigo ou exemplos em um ambiente de desenvolvimento local, faça a autenticação no Compute Engine com um destes métodos:

    Select the tab for how you plan to use the samples on this page:

    gcloud

    1. Instale a CLI do Google Cloud. Após a instalação, inicialize a CLI do Google Cloud executando o seguinte comando:

      gcloud init

      Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

    2. Set a default region and zone.

    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. Após a instalação, inicialize a CLI do Google Cloud executando o seguinte comando:

      gcloud init

      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 de início flexível, 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.

Essa função predefinida contém as permissões necessárias para criar VMs flexíveis de início. Para acessar 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 Flex-start:

  • 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
  • Especificar uma sub-rede para a VM: compute.subnetworks.use no projeto ou na sub-rede escolhida
  • 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 VPC: compute.subnetworks.useExternalIp no projeto ou na sub-rede escolhida
  • Atribuir uma rede legada à VM: compute.networks.use no projeto
  • Atribuir um endereço IP externo à VM ao usar uma rede legada: compute.networks.useExternalIp no projeto
  • 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 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 sinalização --request-valid-for-duration

  • A sinalização --provisioning-model=FLEX_START

  • A sinalização --instance-termination-action

  • A sinalização --max-run-duration

  • A sinalização --maintenance-policy=TERMINATE

  • A sinalização --reservation-affinity=none

Para criar uma VM Flex-start, 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:

  • VM_NAME: o nome da nova VM.

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

    • Para tipos de máquina G2, é possível especificar uma estação de trabalho virtual NVIDIA RTX (vWS) para usar em cargas de trabalho com muitos gráficos. Para fazer isso, inclua a flag --accelerator no comando da seguinte maneira:

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

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

    • Para tipos de máquina N1, especifique o número e o tipo de GPUs a serem anexadas à VM. Caso contrário, a criação da VM falhará. Para anexar GPUs a uma VM N1, inclua a flag --accelerator no comando da seguinte maneira:

      --accelerator=count=NUMBER_OF_ACCELERATORS,type=ACCELERATOR_TYPE
      

      Substitua:

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

  • VALID_FOR_DURATION: o tempo máximo de espera para o provisionamento dos recursos solicitados, formatado como um número seguido por 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 você especifique uma das seguintes durações para aumentar as chances de sucesso da solicitação de criação de VM:

    • Se a carga de trabalho exigir que você crie a VM em uma zona específica, especifique uma duração entre 90 segundos (90s) e duas horas (2h). Durações mais longas aumentam as chances de conseguir recursos.

    • Se a VM puder ser executada em qualquer zona da região, especifique uma duração de zero segundos (0s). Esse valor especifica que o Compute Engine só aloca recursos se eles estiverem disponíveis imediatamente. Se a solicitação de criação falhar porque os recursos não estão disponíveis, tente de novo em uma zona diferente.

  • TERMINATION_ACTION: se a VM será interrompida ou excluída ao final da duração da execução. Especifique um dos seguintes valores:

    • Para interromper a VM: STOP

    • Para excluir a VM: DELETE

  • RUN_DURATION: o tempo máximo que a VM é executada antes de ser excluída pelo Compute Engine, formatado como um número seguido por uma unidade (s, m, h ou d). O valor precisa estar entre 10 minutos e sete dias.

REST

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

  • O campo params.requestValidForDuration.

  • O campo scheduling.provisioningModel definido como FLEX_START.

  • O campo scheduling.instanceTerminationAction.

  • O campo scheduling.maxRunDuration.

  • O campo scheduling.onHostMaintenance definido como TERMINATE.

  • O reservationAffinity.consumeReservationType definido como NO_RESERVATION.

Para criar uma VM de início flexível, faça uma solicitação POST da seguinte maneira:

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:

  • PROJECT_ID: o ID do projeto em que a VM será criada.

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

  • VM_NAME: o nome da nova VM.

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

    • Para tipos de máquina G2, é possível especificar uma estação de trabalho virtual NVIDIA RTX (vWS) para usar em cargas de trabalho com muitos gráficos. Para isso, inclua o campo guestAccelerators no corpo da solicitação da seguinte maneira:

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

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

    • Para tipos de máquina N1, especifique o número e o tipo de GPUs a serem anexadas à VM. Caso contrário, a criação da VM falhará. Para anexar GPUs a uma VM N1, inclua o campo guestAccelerators no corpo da solicitação da seguinte maneira:

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

      Substitua:

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

  • IMAGE: especifique uma destas opções:

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

    • Uma família de imagens, que precisa ser formatada como family/IMAGE_FAMILY. Esse valor especifica o uso da imagem do SO mais recente e não obsoleta. Por exemplo, se você especificar family/debian-12, a versão mais recente na família de imagens do Debian 12 será usada. Para mais informações sobre o uso de famílias de imagens, consulte Práticas recomendadas para famílias de imagens.

  • VALID_FOR_DURATION: o tempo máximo em segundos para aguardar o provisionamento da VM. Com base nos requisitos zonais da sua carga de trabalho, recomendamos que você especifique uma das seguintes durações para aumentar as chances de sucesso da solicitação de criação de VM:

    • Se a carga de trabalho exigir que você crie a VM em uma zona específica, especifique uma duração entre 90 segundos (90) e duas horas (7200). Durações mais longas aumentam as chances de conseguir recursos.

    • Se a VM puder ser executada em qualquer zona da região, especifique uma duração de zero segundos (0). Esse valor especifica que o Compute Engine só aloca recursos se eles estiverem disponíveis imediatamente. Se a solicitação de criação falhar porque os recursos não estão disponíveis, tente de novo em uma zona diferente.

  • TERMINATION_ACTION: se a VM será interrompida ou excluída ao final da duração da execução. Especifique um dos seguintes valores:

    • Para interromper a VM: STOP

    • Para excluir a VM: DELETE

  • RUN_DURATION: o tempo máximo em segundos que a VM é executada antes de ser excluída pelo Compute Engine. Esse valor precisa estar entre 600 segundos (10 minutos) e 604.800 segundos (sete dias).

A seguir

Faça um teste

Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho do Compute Engine em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.

Faça uma avaliação gratuita do Compute Engine