Crea VM GPU collettivamente

Puoi creare un gruppo di macchine virtuali (VM) che hanno unità di elaborazione grafica (GPU) collegate utilizzando il processo di creazione in blocco. Con il processo di creazione in blocco, ottieni una convalida immediata grazie alla quale la richiesta viene rapidamente respinta se non è idonea. Inoltre, se utilizzi il flag regione, l'API di creazione in blocco sceglie automaticamente la zona che ha la capacità di soddisfare la richiesta.

Per scoprire di più sulla creazione in blocco, consulta Informazioni sulla creazione in blocco delle VM. Per scoprire di più sulla creazione delle VM con GPU collegate, consulta la Panoramica della creazione di un'istanza con GPU collegate.

Prima di iniziare

  • Per esaminare le limitazioni e i passaggi preliminari aggiuntivi per la creazione di istanze con GPU collegate, ad esempio la selezione di un'immagine sistema operativo e il controllo della quota di GPU, consulta la Panoramica della creazione di un'istanza con GPU collegate.
  • Per esaminare le limitazioni per la creazione in blocco, consulta Informazioni sulla creazione in blocco delle VM.
  • 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, 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. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per creare VM 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.

Panoramica

Quando crei VM con GPU collegate utilizzando il metodo di creazione in blocco, puoi scegliere di creare VM in una regione (ad esempio us-central1) o in una zona specifica come (us-central1-a).

Se scegli di specificare una regione, Compute Engine posiziona le VM in qualsiasi zona all'interno della regione che supporta le GPU.

Tipi di macchine

La famiglia di macchine ottimizzate per l'acceleratore contiene più tipi di macchine.

A ogni tipo di macchina ottimizzata per l'acceleratore è collegato un modello specifico di GPU NVIDIA. Se hai workload ad alta intensità grafica, come la visualizzazione 3D, puoi anche creare workstation virtuali che utilizzano le workstation virtuali (vWS) NVIDIA RTX. La workstation virtuale NVIDIA RTX è disponibile per alcuni modelli di GPU.

Tipo di macchina Modello di GPU Modello di workstation virtuale (vWS) NVIDIA RTX
A4X NVIDIA GB200 Grace Blackwell Superchips (nvidia-gb200).

Ogni superchip contiene quattro GPU NVIDIA B200 Blackwell.

A4 GPU NVIDIA B200 Blackwell (nvidia-b200)
A3 Ultra GPU NVIDIA H200 SXM (nvidia-h200-141gb)
A3 Mega GPU NVIDIA H100 SXM (nvidia-h100-mega-80gb)
A3 High, A3 Edge GPU NVIDIA H100 SXM (nvidia-h100-80gb)
A2 Ultra GPU NVIDIA A100 da 80 GB (nvidia-a100-80gb)
A2 Standard GPU NVIDIA A100 da 40 GB (nvidia-a100-40gb)
G4 (anteprima) NVIDIA RTX PRO 6000 Blackwell Server Edition (nvidia-rtx-pro-6000)
G2 GPU NVIDIA L4 (nvidia-l4) GPU per workstation virtuali NVIDIA L4 (nvidia-l4-vws)

Crea gruppi di A4X, A4 e A3 Ultra

Per creare istanze collettivamente per le serie di macchine A4X, A4 e A3 Ultra, consulta la Panoramica delle opzioni di deployment nella documentazione di AI Hypercomputer.

Crea gruppi di VM A3, A2 e G2

Questa sezione spiega come creare istanze in blocco per le serie di macchine A3 High, A3 Mega, A3 Edge, A2 e G2 utilizzando Google Cloud CLI o REST.

gcloud

Per creare un gruppo di VM, utilizza il comando gcloud compute instances bulk create. Per saperne di più sui parametri e su come utilizzare questo comando, consulta Crea più VM in blocco.

I seguenti flag facoltativi sono mostrati nel comando di esempio:

  • --provisioning-model=SPOT è un flag facoltativo che configura le VM come VM spot. Se il tuo workload è a tolleranza di errore e può essere sottoposto a eventuali prerilasci delle VM, valuta l'utilizzo delle VM spot per ridurre il costo delle VM e delle GPU collegate. Per ulteriori informazioni, consulta GPU sulle VM spot. Per le VM spot, i flag delle opzioni di riavvio automatico e di manutenzione dell'host sono disattivati.

  • Il flag --accelerator per specificare una workstation virtuale. Le workstation virtuali (vWS) NVIDIA RTX sono supportate solo per le VM G2.

Esempio

Questo esempio crea due VM con GPU collegate utilizzando le seguenti specifiche:

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 \
    [--provisioning-model=SPOT] \
    [--accelerator=type=nvidia-l4-vws,count=VWS_ACCELERATOR_COUNT]

Sostituisci quanto segue:

  • REGION: la regione delle VM. Questa regione deve supportare il modello di GPU selezionato.
  • MACHINE_TYPE: il tipo di macchina selezionato. Scegli una delle seguenti opzioni:

    • Un tipo di macchina A3.
    • Un tipo di macchina A2.
    • Un tipo di macchina G2. Anche i tipi di macchine G2 supportano la memoria personalizzata. La memoria deve essere un multiplo di 1024 MB e rientrare nell'intervallo di memoria supportato. Ad esempio, per creare una VM con 4 vCPU e 19 GB di memoria, specifica --machine-type=g2-custom-4-19456.
  • IMAGE: un'immagine sistema operativo che supporta le GPU.

    Se vuoi utilizzare l'immagine più recente in una famiglia di immagini, sostituisci il flag --image con il flag --image-family e imposta il relativo valore su una famiglia di immagini che supporta le GPU. Ad esempio: --image-family=rocky-linux-8-optimized-gcp.

    Puoi anche specificare un'immagine personalizzata o delle Deep Learning VM Image.

  • IMAGE_PROJECT: il progetto di immagini di Compute Engine a cui appartiene l'immagine sistema operativo. Se utilizzi un'immagine personalizzata o delle Deep Learning VM Images, specifica il progetto a cui appartengono queste immagini.

  • VWS_ACCELERATOR_COUNT: il numero di GPU virtuali di cui hai bisogno.

Se l'esito è positivo, l'output è simile al seguente:

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

Utilizza il metodo instances.bulkInsert con i parametri richiesti per creare più VM in una zona. Per saperne di più sui parametri e su come utilizzare questo comando, consulta Crea più VM in blocco.

Esempio

Questo esempio crea due VM con GPU collegate utilizzando le seguenti specifiche:

  • Nomi VM: my-test-vm-1, my-test-vm-2
  • A ogni VM sono collegate due GPU, specificate utilizzando il tipo di macchina ottimizzato per l'acceleratore appropriato.

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

Sostituisci quanto segue:

  • PROJECT_ID: il tuo ID progetto.
  • REGION: la regione delle VM. Questa regione deve supportare il modello di GPU selezionato.
  • MACHINE_TYPE: il tipo di macchina selezionato. Scegli una delle seguenti opzioni:

    • Un tipo di macchina A2.
    • Un tipo di macchina G2. Anche i tipi di macchine G2 supportano la memoria personalizzata. La memoria deve essere un multiplo di 1024 MB e rientrare nell'intervallo di memoria supportato. Ad esempio, per creare una VM con 4 vCPU e 19 GB di memoria, specifica --machine-type=g2-custom-4-19456.
  • SOURCE_IMAGE_URI: l'URI per l'immagine o la famiglia di immagini specifica che vuoi utilizzare.

    Ad esempio:

    • Immagine specifica: "sourceImage": "projects/rocky-linux-cloud/global/images/rocky-linux-8-optimized-gcp-v20220719"
    • Famiglia di immagini: "sourceImage": "projects/rocky-linux-cloud/global/images/family/rocky-linux-8-optimized-gcp"

    Quando specifichi una famiglia di immagini, Compute Engine crea una VM dall'immagine più recente non deprecata del sistema operativo all'interno di quella famiglia. Per ulteriori informazioni su quando utilizzare le famiglie di immagini, consulta le rispettive best practice.

Impostazioni aggiuntive

  • Se il tuo workload è a tolleranza di errore e può essere sottoposto a eventuali prerilasci delle VM, valuta l'utilizzo delle VM spot per ridurre il costo delle VM e delle GPU collegate. Per ulteriori informazioni, consulta GPU sulle VM spot. Per utilizzare una VM spot, aggiungi l'opzione "provisioningModel": "SPOT alla richiesta. Per le VM spot, i flag delle opzioni di riavvio automatico e di manutenzione dell'host sono disattivati.

    "scheduling":
      {
        "provisioningModel": "SPOT"
      }
    
  • Per le VM G2, sono supportate le workstation virtuali (vWS) NVIDIA RTX. Per specificare una workstation virtuale, aggiungi l'opzione guestAccelerators alla richiesta. Sostituisci VWS_ACCELERATOR_COUNT con il numero di GPU virtuali di cui hai bisogno.

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

Crea gruppi di VM N1 per uso generico

Puoi creare un gruppo di VM con GPU collegate utilizzando Google Cloud CLI o REST.

Questa sezione descrive come creare più VM utilizzando i seguenti tipi di GPU:

GPU NVIDIA:

  • NVIDIA T4: nvidia-tesla-t4
  • NVIDIA P4: nvidia-tesla-p4
  • NVIDIA P100: nvidia-tesla-p100
  • NVIDIA V100: nvidia-tesla-v100

Workstation virtuale (vWS) NVIDIA RTX (precedentemente nota come 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-vws

    Per queste workstation virtuali, all'istanza viene aggiunta automaticamente una licenza per workstation virtuale (vWS) NVIDIA RTX.

gcloud

Per creare un gruppo di VM, utilizza il comando gcloud compute instances bulk create. Per ulteriori informazioni sui parametri e su come utilizzare questo comando, consulta Crea più VM in blocco.

Esempio

L'esempio seguente crea due VM con GPU collegate utilizzando le seguenti specifiche:

  • Nomi VM: my-test-vm-1, my-test-vm-2
  • VM create in qualsiasi zona in us-central1 che supporta le GPU
  • A ogni VM sono collegate due GPU T4, specificate utilizzando i flag di tipo di acceleratore e di conteggio degli acceleratori
  • In ogni VM sono installati i driver GPU
  • Ogni VM utilizza la 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

Se l'esito è positivo, l'output è simile al seguente:

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

Utilizza il metodo instances.bulkInsert con i parametri richiesti per creare più VM in una zona. Per ulteriori informazioni sui parametri e su come utilizzare questo comando, consulta Crea più VM in blocco.

Esempio

L'esempio seguente crea due VM con GPU collegate utilizzando le seguenti specifiche:

  • Nomi VM: my-test-vm-1, my-test-vm-2
  • VM create in qualsiasi zona in us-central1 che supporta le GPU
  • A ogni VM sono collegate due GPU T4, specificate utilizzando i flag di tipo di acceleratore e di conteggio degli acceleratori
  • In ogni VM sono installati i driver GPU
  • Ogni VM utilizza la Deep Learning VM image pytorch-latest-gpu-v20211028-debian-10

Sostituisci PROJECT_ID con l'ID progetto.

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

Passaggi successivi