Crea una VM con avvio flessibile

Questo documento spiega come creare un'istanza di macchina virtuale (VM) Flex-start. Le VM con inizio flessibile vengono eseguite per un massimo di sette giorni e ti aiutano ad acquisire risorse molto richieste come le GPU a un prezzo scontato. Queste funzionalità rendono le VM con avvio flessibile una soluzione conveniente per l'esecuzione di workload di breve durata, come l'ottimizzazione dei modelli e l'inferenza batch.

Per scoprire di più sulle caratteristiche principali delle VM Flex-start, inclusi i requisiti e le limitazioni da applicare durante la creazione, consulta Informazioni sulle VM Flex-start.

Prima di iniziare

  • A seconda del tipo di macchina che vuoi utilizzare, esamina uno dei seguenti requisiti di configurazione:

  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione verifica la tua identità per l'accesso a Google Cloud servizi e API. Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine selezionando una delle seguenti opzioni:

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

    gcloud

    1. Installa Google Cloud CLI. Dopo l'installazione, inizializza Google Cloud CLI eseguendo il seguente comando:

      gcloud init

      Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

    2. Set a default region and zone.

    REST

    Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, utilizza le credenziali che fornisci a gcloud CLI.

      Installa Google Cloud CLI. Dopo l'installazione, inizializza Google Cloud CLI eseguendo il seguente comando:

      gcloud init

      Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

    Per saperne di più, consulta Autenticarsi per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud .

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per creare VM con avvio flessibile, chiedi all'amministratore di concederti il ruolo IAM Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) nel progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Questo ruolo predefinito contiene le autorizzazioni necessarie per creare VM con avvio flessibile. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per creare VM Flex-start sono necessarie le seguenti autorizzazioni:

  • compute.instances.create sul progetto
  • Per utilizzare un'immagine personalizzata per creare la VM: compute.images.useReadOnly sull'immagine
  • Per utilizzare uno snapshot per creare la VM: compute.snapshots.useReadOnly sullo snapshot
  • Per utilizzare un template di istanza per creare la VM: compute.instanceTemplates.useReadOnly sul template di istanza
  • Per specificare una subnet per la VM: compute.subnetworks.use sul progetto o sulla subnet scelta
  • Per specificare un indirizzo IP statico per la VM: compute.addresses.use sul progetto
  • Per assegnare un indirizzo IP esterno alla VM quando utilizzi una rete VPC: compute.subnetworks.useExternalIp sul progetto o sulla subnet scelta
  • Per assegnare una rete legacy alla VM: compute.networks.use sul progetto
  • Per assegnare un indirizzo IP esterno alla VM quando utilizzi una rete legacy: compute.networks.useExternalIp sul progetto
  • Per impostare i metadati dell'istanza VM per la VM: compute.instances.setMetadata sul progetto
  • Per impostare i tag per la VM: compute.instances.setTags sulla VM
  • Per impostare le etichette per la VM: compute.instances.setLabels sulla VM
  • Per impostare un service account che la VM possa utilizzare: compute.instances.setServiceAccount sulla VM
  • Per creare un nuovo disco per la VM: compute.disks.create sul progetto
  • Per collegare un disco esistente in modalità di sola lettura o di lettura e scrittura: compute.disks.use sul disco
  • Per collegare un disco esistente in modalità di sola lettura: compute.disks.useReadOnly sul disco

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Crea una VM con avvio flessibile

Per creare una VM con avvio flessibile, seleziona una delle seguenti opzioni:

gcloud

Per creare una VM con avvio flessibile, utilizza il comando gcloud compute instances create con i seguenti flag:

  • Il flag --request-valid-for-duration

  • Il flag --provisioning-model=FLEX_START

  • Il flag --instance-termination-action

  • Il flag --max-run-duration

  • Il flag --maintenance-policy=TERMINATE

  • Il flag --reservation-affinity=none

Per creare una VM con avvio flessibile, esegui questo 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

Sostituisci quanto segue:

  • VM_NAME: il nome della nuova VM.

  • MACHINE_TYPE: il tipo di macchina da utilizzare per la VM con avvio flessibile. Se specifichi un tipo di macchina G2 o N1, considera quanto segue:

    • Per i tipi di macchine G2, puoi specificare facoltativamente una workstation virtuale (vWS) NVIDIA RTX da utilizzare per i workload ad alta intensità di grafica. Per farlo, includi il flag --accelerator nel comando come segue:

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

      Sostituisci VWS_ACCELERATOR_COUNT con il numero di NVIDIA RTX vWS richiesto dal tuo workload.

    • Per i tipi di macchine N1, devi specificare il numero e il tipo di GPU da collegare alla VM. In caso contrario, la creazione della VM non andrà a buon fine. Per collegare GPU a una VM N1, includi il flag --accelerator nel comando come segue:

      --accelerator=count=NUMBER_OF_ACCELERATORS,type=ACCELERATOR_TYPE
      

      Sostituisci quanto segue:

  • ZONE: la zona in cui vuoi creare la VM. Per verificare che il tipo di macchina specificato sia disponibile nella zona in cui vuoi creare la VM, consulta Regioni e zone disponibili.

  • VALID_FOR_DURATION: il tempo massimo di attesa per il provisioning delle risorse richieste, formattato come numero seguito da un'unità (s, m, h o d). Ad esempio, un valore di 30m definisce un tempo di 30 minuti e un valore di 1h2m3s definisce un tempo di un'ora, due minuti e tre secondi. In base ai requisiti zonali per il tuo carico di lavoro, ti consigliamo di specificare una delle seguenti durate per aumentare le probabilità di riuscita della richiesta di creazione della VM:

    • Se il tuo workload richiede la creazione della VM in una zona specifica, specifica una durata compresa tra 90 secondi (90s) e due ore (2h). Durate più lunghe aumentano le probabilità di ottenere risorse.

    • Se la VM può essere eseguita in qualsiasi zona all'interno della regione, specifica una durata di zero secondi (0s). Questo valore specifica che Compute Engine alloca le risorse solo se sono immediatamente disponibili. Se la richiesta di creazione non va a buon fine perché le risorse non sono disponibili, riprova a inviare la richiesta in una zona diversa.

  • TERMINATION_ACTION: indica se arrestare o eliminare la VM al termine della durata di esecuzione. Specifica uno dei seguenti valori:

    • Per arrestare la VM: STOP

    • Per eliminare la VM: DELETE

  • RUN_DURATION: il tempo massimo di esecuzione della VM prima che Compute Engine la elimini, formattato come un numero seguito da un'unità (s, m, h o d). Il valore deve essere compreso tra 10 minuti e sette giorni.

REST

Per creare una VM Flex-start, invia una richiesta POST al metodo instances.insert. Nel corpo della richiesta, includi i seguenti campi:

  • Il campo params.requestValidForDuration.

  • Il campo scheduling.provisioningModel impostato su FLEX_START.

  • Il campo scheduling.instanceTerminationAction.

  • Il campo scheduling.maxRunDuration.

  • Il campo scheduling.onHostMaintenance impostato su TERMINATE.

  • reservationAffinity.consumeReservationType impostato su NO_RESERVATION.

Per creare una VM Flex-start, effettua una richiesta POST come segue:

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"
  }
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto in cui creare la VM.

  • ZONE: la zona in cui vuoi creare la VM. Per verificare che un tipo di macchina sia disponibile nella zona in cui vuoi creare la VM, consulta Regioni e zone disponibili.

  • VM_NAME: il nome della nuova VM.

  • MACHINE_TYPE: il tipo di macchina da utilizzare per la VM con avvio flessibile. Se specifichi un tipo di macchina G2 o N1, considera quanto segue:

    • Per i tipi di macchine G2, puoi specificare facoltativamente una workstation virtuale (vWS) NVIDIA RTX da utilizzare per i workload ad alta intensità di grafica. Per farlo, includi il campo guestAccelerators nel corpo della richiesta come segue:

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

      Sostituisci VWS_ACCELERATOR_COUNT con il numero di NVIDIA RTX vWS richiesto dal tuo workload.

    • Per i tipi di macchine N1, devi specificare il numero e il tipo di GPU da collegare alla VM. In caso contrario, la creazione della VM non andrà a buon fine. Per collegare GPU a una VM N1, includi il campo guestAccelerators nel corpo della richiesta nel seguente modo:

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

      Sostituisci quanto segue:

  • IMAGE_PROJECT: il progetto di immagini che contiene l'immagine, ad esempio debian-cloud. Per saperne di più sui progetti di immagini supportati, consulta Immagini pubbliche.

  • IMAGE: specifica una delle seguenti opzioni:

    • Una versione specifica dell'immagine sistema operativo, ad esempio debian-12-bookworm-v20240617.

    • Una famiglia di immagini, che deve essere formattata come family/IMAGE_FAMILY. Questo valore specifica di utilizzare l'immagine sistema operativo più recente e non deprecata. Ad esempio, se specifichi family/debian-12, viene utilizzata l'ultima versione della famiglia di immagini Debian 12. Per saperne di più sull'utilizzo delle famiglie di immagini, consulta le best practice per le famiglie di immagini.

  • VALID_FOR_DURATION: il tempo massimo in secondi da attendere per il provisioning della VM. In base ai requisiti di zona per il tuo workload, ti consigliamo di specificare una delle seguenti durate per aumentare le probabilità di riuscita della richiesta di creazione della VM:

    • Se il tuo workload richiede la creazione della VM in una zona specifica, specifica una durata compresa tra 90 secondi (90) e due ore (7200). Durate più lunghe aumentano le probabilità di ottenere risorse.

    • Se la VM può essere eseguita in qualsiasi zona all'interno della regione, specifica una durata di zero secondi (0). Questo valore specifica che Compute Engine alloca le risorse solo se sono immediatamente disponibili. Se la richiesta di creazione non va a buon fine perché le risorse non sono disponibili, riprova la richiesta in una zona diversa.

  • TERMINATION_ACTION: indica se arrestare o eliminare la VM al termine della durata di esecuzione. Specifica uno dei seguenti valori:

    • Per arrestare la VM: STOP

    • Per eliminare la VM: DELETE

  • RUN_DURATION: il tempo massimo in secondi in cui la VM viene eseguita prima che Compute Engine la elimini. Questo valore deve essere compreso tra 600 secondi (10 minuti) e 604.800 secondi (sette giorni).

Passaggi successivi

Provalo

Se non conosci Google Cloud, crea un account per valutare le prestazioni di Compute Engine in scenari reali. I nuovi clienti ricevono anche 300 $ di crediti per l'esecuzione, il test e il deployment di workload senza costi aggiuntivi.

Fai una prova senza costi di Compute Engine