Crea richieste di ridimensionamento in un MIG


Questo documento descrive come creare richieste di ridimensionamento in un gruppo di istanze gestite (MIG) di macchine virtuali (VM) con GPU collegate. Per creare una richiesta di ridimensionamento in un gruppo di istanze gestite che può utilizzare le funzionalità e i servizi disponibili in Cluster Director, vedi Crea un gruppo di istanze gestite e una richiesta di ridimensionamento nella documentazione di AI Hypercomputer.

La creazione di richieste di ridimensionamento in un gruppo di istanze gestite ti consente di ottenere risorse molto richieste, come le GPU, e di ottimizzare i costi creando in una volta il numero esatto di VM.

Prima di iniziare

  • Esamina come funzionano le richieste di ridimensionamento.
  • Per assicurarti di disporre di una quota GPU sufficiente per le risorse che stai richiedendo, effettua i relativi controlli.
  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione è il processo mediante il quale la tua identità viene verificata per l'accesso a servizi e API di Google Cloud 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:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI. After installation, initialize the Google Cloud CLI by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    2. Set a default region and zone.

    REST

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

      Install the Google Cloud CLI. After installation, initialize the Google Cloud CLI by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    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 richieste di ridimensionamento in un gruppo di istanze gestite, chiedi all'amministratore di concederti il ruolo IAM Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) sul 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 richieste di ridimensionamento in un gruppo di istanze gestite. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per creare richieste di ridimensionamento in un gruppo di istanze gestite sono necessarie le seguenti autorizzazioni:

  • Per creare un template di istanza: compute.instanceTemplates.create sul progetto
  • Per creare un gruppo di istanze gestite a livello di zona: compute.instanceGroupManagers.create sul progetto
  • Per creare richieste di ridimensionamento in un gruppo di istanze gestite: compute.instanceGroupManagers.update sul progetto

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

Prepara un gruppo di istanze gestite per le richieste di ridimensionamento

Per creare richieste di ridimensionamento in un gruppo di istanze gestite, devi configurare un template di istanza e il gruppo di istanze gestite come descritto nelle sezioni seguenti.

Crea un template di istanza

Se vuoi creare richieste di ridimensionamento in un gruppo di istanze gestite, il gruppo deve utilizzare un template di istanza con le seguenti configurazioni:

Per generare un template di istanza configurato per creare richieste di ridimensionamento in un gruppo di istanze gestite, seleziona una delle seguenti opzioni:

Console

  1. Nella console Google Cloud , vai alla pagina Template di istanza.

    Vai a Template di istanza

  2. Fai clic su Crea template di istanza.

  3. Nel campo Nome, inserisci un nome per il template di istanza.

  4. Nella sezione Località, seleziona una delle seguenti opzioni:

    • Per creare un template di istanza globale, seleziona Globale, se non è già selezionato.

    • Per creare un template di istanza regionale, seleziona Regionale e la regione in cui creare il template di istanza.

  5. Nella sezione Configurazione macchina, segui questi passaggi:

    1. Fai clic sulla scheda GPU.

    2. Nell'elenco Tipo di GPU, seleziona il tipo di GPU.

    3. Nell'elenco Numero di GPU, seleziona il numero di GPU.

    4. Facoltativo: se il modello di GPU supporta le workstation virtuali (vWS) NVIDIA RTX per i workload grafici, e prevedi di eseguire workload ad alta intensità di grafica, seleziona Abilita workstation virtuale (NVIDIA GRID).

    5. Nella sezione Tipo di macchina, seleziona un tipo di macchina.

  6. Facoltativo: per modificare il tipo o l'immagine del disco di avvio predefinito, fai clic su Modifica nella sezione Disco di avvio. Dopodiché segui le istruzioni per modificare il disco di avvio.

  7. Espandi la sezione Opzioni avanzate e segui questi passaggi:

    1. Espandi la sezione Gestione.

    2. Nell'elenco Prenotazioni, seleziona Non utilizzare.

  8. Fai clic su Crea.

gcloud

Per creare un template di istanza configurato per generare richieste di ridimensionamento in un gruppo di istanze gestite, utilizza il comando instance-templates create con i seguenti flag:

  • Il flag --maintenance-policy impostato su TERMINATE.

  • Il flag --reservation-affinity impostato su none.

Ad esempio, per creare un template di istanza regionale, utilizza il seguente comando: Se vuoi creare un template di istanza globale, utilizza lo stesso comando senza il flag --instance-template-region.

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --image-project=IMAGE_PROJECT \
    --image-family=IMAGE_FAMILY \
    --instance-template-region=REGION \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE \
    --reservation-affinity=none

Sostituisci quanto segue:

  • INSTANCE_TEMPLATE_NAME: il nome del template di istanza da creare

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

  • IMAGE_FAMILY: una famiglia di immagini. In questo modo, viene specificata l'immagine del sistema operativo più recente e non deprecata. Ad esempio, se specifichi debian-12, viene utilizzata l'ultima versione della famiglia di immagini Debian 12. Per ulteriori informazioni sull'utilizzo delle famiglie di immagini, consulta le rispettive best practice.

    Se vuoi utilizzare una versione specifica dell'immagine del sistema operativo, ad esempio debian-12-buster-v20240701, sostituisci il flag --image-family con il flag --image.

  • REGION: la regione in cui creare il template di istanza

  • MACHINE_TYPE: un tipo di macchina che supporta le GPU. Se specifichi un tipo di macchina N1, includi il flag --accelerator per specificare il numero e il tipo di GPU da collegare alle VM.

REST

Per creare un template di istanza configurato per generare richieste di ridimensionamento in un gruppo di istanze gestite, invia una richiesta POST a uno dei seguenti metodi:

Nel corpo della richiesta, esegui queste operazioni:

  • Includi il campo scheduling.onHostMaintenance e impostalo su TERMINATE.

  • Includi il campo reservationAffinity.consumeReservationType e impostalo su NO_RESERVATION.

Ad esempio, per creare un template di istanza regionale, effettua una richiesta POST come segue:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "reservationAffinity": {
      "consumeReservationType": "NO_RESERVATION"
    },
    "scheduling": {
      "onHostMaintenance": "TERMINATE"
    }
  }
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto in cui creare il template di istanza

  • REGION: la regione in cui creare il template di istanza

  • INSTANCE_TEMPLATE_NAME: il nome del template di istanza da creare

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

  • IMAGE: specifica una delle seguenti opzioni:

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

    • Una famiglia di immagini, che deve essere formattata come family/IMAGE_FAMILY. In questo modo, viene specificata l'immagine del 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.

  • MACHINE_TYPE: un tipo di macchina che supporta le GPU. Se specifichi un tipo di macchina N1, includi il campo guestAccelerators nel corpo della richiesta per specificare il numero e il tipo di GPU da collegare alle VM.

Per ulteriori informazioni sulla creazione di un template di istanza, vedi Crea template di istanze.

Crea o aggiorna un gruppo di istanze gestite

Dopo aver creato il template di istanza come descritto nella sezione precedente, utilizzalo per generare un gruppo di istanze gestite o per aggiornarlo. Inoltre, per preparare il gruppo di istanze gestite per le richieste di ridimensionamento, devi eseguire queste operazioni:

Per creare un gruppo di istanze gestite compatibile con le richieste di ridimensionamento, seleziona una delle seguenti opzioni:

Console

  1. Nella console Google Cloud , vai alla pagina Gruppi di istanze.

    Vai a Gruppi di istanze

  2. Fai clic su Crea gruppo di istanze.

    Viene visualizzata la pagina Crea gruppo di istanze.

  3. Nel campo Nome, inserisci un nome per il gruppo di istanze gestite.

  4. Nell'elenco Template di istanza, seleziona il template di istanza creato nella sezione precedente. Se selezioni un template di istanza a livello di regione, l'elenco Regione viene impostato sulla regione del template di istanza.

  5. Nella sezione Località, specifica se vuoi creare un gruppo di istanze gestite a livello di zona o di regione come segue:

    1. Per creare un gruppo di istanze gestite a livello di zona, seleziona Zona singola. In alternativa, per creare un gruppo di istanze gestite a livello di regione, seleziona Più zone.

    2. Seleziona la regione e le zone del gruppo di istanze gestite.

    3. Se stai creando un gruppo di istanze gestite a livello di regione, procedi nel seguente modo:

      1. Nel campo Forma di distribuzione target, seleziona Qualsiasi zona singola. Puoi selezionare questa opzione solo dopo aver eliminato la configurazione di scalabilità automatica nei passaggi successivi.

      2. Dopo aver selezionato l'opzione Qualsiasi zona singola, nella finestra di dialogo visualizzata fai clic su Disattiva ridistribuzione istanze.

  6. Elimina la configurazione della scalabilità automatica nel seguente modo:

    1. Nella sezione Scalabilità automatica, fai clic sull'elenco Modalità di scalabilità automatica, quindi su Elimina configurazione di scalabilità automatica.

    2. Nella finestra di dialogo di conferma, fai clic su Elimina.

  7. Disattiva le riparazioni nel seguente modo:

    1. Nella sezione Ciclo di vita dell'istanza VM, fai clic sull'elenco Azione predefinita in caso di errore.

    2. Seleziona Nessuna azione.

  8. Esegui una di queste operazioni:

    • A questo punto, per creare una richiesta di ridimensionamento:

      1. Nel campo Numero di istanze, inserisci il numero di VM che vuoi creare in una volta.

        Il campo Numero di istanze nella pagina Crea gruppo di istanze.

      2. Seleziona la casella di controllo Utilizza la richiesta di ridimensionamento per creare tutte le VM in una volta.

      3. Nel campo Durata esecuzione richiesta e nell'elenco Unità, specifica la durata di esecuzione delle VM. La durata deve essere compresa tra 1 ora e 7 giorni.

    • In caso contrario, inserisci 0 nel campo Numero di istanze. Puoi in seguito aggiungere VM al gruppo creando richieste di ridimensionamento.

  9. Fai clic su Crea.

gcloud

Utilizza il comando instance-groups managed create con il flag --default-action-on-vm-failure impostato su do_nothing. Se stai creando un gruppo di istanze gestite a livello di regione, devi includere anche il flag --target-distribution-shape impostato su any-single-zone e il flag --instance-redistribution-type impostato su none.

  • Per creare un gruppo di istanze gestite a livello di zona, esegui questo comando:

    gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
      --template=INSTANCE_TEMPLATE_NAME \
      --size=0 \
      --zone=ZONE \
      --default-action-on-vm-failure=do_nothing
    
  • Per creare un gruppo di istanze gestite a livello di regione, esegui questo comando:

    gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
        --template=INSTANCE_TEMPLATE_URL \
        --size=0 \
        --region=REGION \
        --target-distribution-shape=any-single-zone \
        --instance-redistribution-type=none \
        --default-action-on-vm-failure=do_nothing
    

Sostituisci quanto segue:

  • INSTANCE_GROUP_NAME: il nome del gruppo di istanze gestite da creare

  • INSTANCE_TEMPLATE_URL: l'URL parziale del template di istanza che hai creato nella sezione precedente. Se vuoi utilizzare un template di istanza a livello regionale per creare il gruppo di istanze gestite, puoi farlo solo all'interno della regione del template. Specifica uno tra i seguenti valori:

    • Per un template di istanza regionale: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_NAME

    • Per un template di istanza globale: INSTANCE_TEMPLATE_NAME

  • ZONE: la zona in cui creare il gruppo di istanze gestite

  • REGION: la regione in cui creare il gruppo di istanze gestite

REST

  • Per creare un gruppo di istanze gestite a livello di zona, invia una richiesta POST utilizzando il metodo instanceGroupManagers.insert come segue:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers
    
    {
      "versions": [
        {
          "instanceTemplate": "INSTANCE_TEMPLATE_URL"
        }
      ],
      "name": "INSTANCE_GROUP_NAME",
      "targetSize": 0,
      "instanceLifecyclePolicy": {
        "defaultActionOnFailure": "DO_NOTHING"
      }
    }
    
  • Per creare un gruppo di istanze gestite a livello di regione, invia una richiesta POST utilizzando il metodo regionInstanceGroupManagers.insert come segue:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers
    
    {
      "versions": [
        {
          "instanceTemplate": "INSTANCE_TEMPLATE_URL"
        }
      ],
      "name": "INSTANCE_GROUP_NAME",
      "targetSize": 0,
      "distributionPolicy": {
        "targetShape": "ANY_SINGLE_ZONE"
      },
      "updatePolicy": {
        "instanceRedistributionType": "NONE"
      },
      "instanceLifecyclePolicy": {
        "defaultActionOnFailure": "DO_NOTHING"
      }
    }
    

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto in cui si trova il template di istanza creato nella sezione precedente

  • INSTANCE_TEMPLATE_URL: l'URL parziale del template di istanza che hai creato nella sezione precedente. Se vuoi utilizzare un template di istanza a livello regionale per creare il gruppo di istanze gestite, puoi farlo solo all'interno della regione del template. Specifica uno tra i seguenti valori:

    • Per un template di istanza regionale: regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_NAME

    • Per un template di istanza globale: global/instanceTemplates/INSTANCE_TEMPLATE_NAME

  • ZONE: la zona in cui creare il gruppo di istanze gestite

  • REGION: la regione in cui creare il gruppo di istanze gestite

  • INSTANCE_GROUP_NAME: il nome del gruppo di istanze gestite da creare

Crea una richiesta di ridimensionamento in un gruppo di istanze gestite

Prima di creare richieste di ridimensionamento, assicurati di aver preparato il gruppo di istanze gestite come descritto nella sezione precedente.

Dopo la creazione di una richiesta di ridimensionamento e quando tutte le risorse richieste diventano disponibili, il gruppo di istanze gestite crea in una volta il numero richiesto di VM. Le VM vengono eseguite fino a quando il gruppo di istanze gestite non le elimina al termine della durata di esecuzione specificata o fino a quando non le elimini tu manualmente.

Per creare una richiesta di ridimensionamento in un gruppo di istanze gestite, seleziona una delle seguenti opzioni. Per aggiungere VM con nomi specifici al gruppo di istanze gestite tramite una richiesta di ridimensionamento, utilizza gcloud CLI o l'API REST.

Console

  1. Nella console Google Cloud , vai alla pagina Gruppi di istanze.

    Vai a Gruppi di istanze

  2. Nella colonna Nome, fai clic sul nome del gruppo di istanze gestite in cui creare la richiesta di ridimensionamento.

    Si apre la pagina di riepilogo del gruppo di istanze gestite.

  3. Nella riga Richieste di ridimensionamento, fai clic su Modifica richieste di ridimensionamento.

  4. Fai clic su Nuova richiesta di ridimensionamento.

    Viene visualizzato il riquadro Nuove richieste di ridimensionamento.

  5. Nel campo Nome, inserisci il nome della richiesta di ridimensionamento.

  6. Nel campo Numero di istanze aggiuntive necessarie, inserisci il numero di VM da aggiungere al gruppo di istanze gestite contemporaneamente.

  7. Nei campi Durata esecuzione richiesta e Unità, specifica la durata di esecuzione delle VM richieste. La durata deve essere compresa tra 1 ora e 7 giorni.

  8. Fai clic su Crea.

gcloud

  • Per creare una richiesta di ridimensionamento in un gruppo di istanze gestite a livello di zona, utilizza il comando instance-groups managed resize-requests create.

    gcloud compute instance-groups managed resize-requests create INSTANCE_GROUP_NAME \
        --resize-request=RESIZE_REQUEST_NAME \
        --resize-by=COUNT \
        --requested-run-duration=RUN_DURATION \
        --zone=ZONE
    
  • Per creare una richiesta di ridimensionamento in un gruppo di istanze gestite a livello di regione, utilizza il comando beta instance-groups managed resize-requests create.

    gcloud beta compute instance-groups managed resize-requests create INSTANCE_GROUP_NAME \
        --resize-request=RESIZE_REQUEST_NAME \
        --resize-by=COUNT \
        --requested-run-duration=RUN_DURATION \
        --region=REGION
    

Sostituisci quanto segue:

  • INSTANCE_GROUP_NAME: il nome del gruppo di istanze gestite configurato per la creazione di richieste di ridimensionamento

  • RESIZE_REQUEST_NAME: il nome della richiesta di ridimensionamento, che deve essere univoco, all'interno del gruppo di istanze gestite specificato. Se così non fosse, la creazione della richiesta di ridimensionamento non va a buon fine.

  • COUNT: il numero di VM da aggiungere al gruppo di istanze gestite contemporaneamente

  • RUN_DURATION: la durata per cui vuoi eseguire le VM richieste. Il valore deve essere formattato come numero di giorni, ore, minuti o secondi seguito rispettivamente da d, h, m e s. Ad esempio, specifica 30m per 30 minuti o 1d2h3m4s per un giorno, due ore, tre minuti e quattro secondi. Il valore deve essere compreso tra 10 minuti e sette giorni.

  • ZONE: la zona in cui esiste il gruppo di istanze gestite

  • REGION: la regione in cui esiste il gruppo di istanze gestite

Se il tuo workload richiede determinati nomi per la VM, puoi specificare un elenco di nomi delle VM da creare utilizzando il comando beta instance-groups managed resize-requests create. Nel comando, sostituisci il flag --resize-request con il flag --instances.

REST

  • Per creare una richiesta di ridimensionamento in un gruppo di istanze gestite a livello di zona, invia una richiesta POST utilizzando il metodo instanceGroupManagerResizeRequests.insert.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME/resizeRequests
    
  • Per creare una richiesta di ridimensionamento in un gruppo di istanze gestite a livello di regione, invia una richiesta POST utilizzando il metodo beta.regionInstanceGroupManagerResizeRequests.insert.

    POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/resizeRequests
    

Nel corpo della richiesta, includi quanto segue:

{
  "name": "RESIZE_REQUEST_NAME",
  "resizeBy": COUNT,
  "requestedRunDuration": {
    "seconds": "RUN_DURATION"
  }
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto in cui esiste il gruppo di istanze gestite specificato

  • ZONE: la zona in cui esiste il gruppo di istanze gestite

  • REGION: la regione in cui esiste il gruppo di istanze gestite

  • INSTANCE_GROUP_NAME: il nome del gruppo di istanze gestite configurato per la creazione di richieste di ridimensionamento

  • RESIZE_REQUEST_NAME: il nome della richiesta di ridimensionamento, che deve essere univoco, all'interno del gruppo di istanze gestite specificato. Se così non fosse, la creazione della richiesta di ridimensionamento non va a buon fine.

  • COUNT: il numero di VM da aggiungere contemporaneamente al gruppo di istanze gestite

  • RUN_DURATION: la durata, in secondi, per cui vuoi eseguire le VM richieste. Il valore deve essere compreso tra 600, ovvero 600 secondi (10 minuti), e 604800, ovvero 604.800 secondi (sette giorni).

Se il tuo workload richiede determinati nomi VM, puoi specificare un elenco di nomi VM da creare. A tale scopo, invia una richiesta POST al metodo beta.regionInstanceGroupManagerResizeRequests.insert per un gruppo di istanze gestite a livello di regione o al metodo beta.instanceGroupManagerResizeRequests.insert per un gruppo di istanze gestite a livello di zona. Nel corpo della richiesta, sostituisci il campo resizeBy con il campo instanceNames.

Passaggi successivi