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 per supportare il tipo di workload consigliato.

Workload AI e ML Grafica e visualizzazione
I tipi di macchina della serie A ottimizzati per l'acceleratore sono progettati per workload di computing ad alte prestazioni (HPC), intelligenza artificiale (AI) e machine learning (ML).

Per questi tipi di macchine, il modello di GPU viene collegato automaticamente all'istanza.

I tipi di macchina della serie G ottimizzati per l'acceleratore sono progettati per carichi di lavoro come quelli di simulazione NVIDIA Omniverse, applicazioni ad alta intensità grafica, transcodifica video e desktop virtuali. Questi tipi di macchine supportano le workstation virtuali (vWS) NVIDIA RTX.

Per questi tipi di macchine, il modello di GPU viene collegato automaticamente all'istanza.

  • A4X (NVIDIA GB200 Superchips)
    (nvidia-gb200)
  • A4 (NVIDIA B200)
    (nvidia-b200)
  • A3 Ultra (NVIDIA H200)
    (nvidia-h200-141gb)
  • A3 Mega (NVIDIA H100)
    (nvidia-h100-mega-80gb)
  • A3 High (NVIDIA H100)
    (nvidia-h100-80gb)
  • A3 Edge (NVIDIA H100)
    (nvidia-h100-80gb)
  • A2 Ultra (NVIDIA A100 80GB)
    (nvidia-a100-80gb)
  • A2 Standard (NVIDIA A100)
    (nvidia-a100-40gb)
  • G4 (NVIDIA RTX PRO 6000)
    (nvidia-rtx-pro-6000)
    (nvidia-rtx-pro-6000-vws)
  • G2 (NVIDIA L4)
    (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, G4 e G2

Questa sezione spiega come creare istanze in blocco per le serie di macchine A3 High, A3 Mega, A3 Edge, A2 Standard, A2 Ultra, G4 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.

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

Sostituisci quanto segue:

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

Flag facoltativi

Per configurare ulteriormente l'istanza in base alle esigenze del workload o del sistema operativo, includi uno o più dei seguenti flag quando esegui il comando gcloud compute instances bulk create.

Funzionalità Descrizione
Modello di provisioning Imposta il modello di provisioning per l'istanza. Specifica SPOT o FLEX_START. FLEX_START non è supportato per le istanze G4. Se non specifichi un modello, viene utilizzato il modello standard. Per saperne di più, consulta Modelli di provisioning delle istanze Compute Engine.
--provisioning-model=PROVISIONING_MODEL
Workstation virtuale Specifica una workstation virtuale (vWS) NVIDIA RTX per i workload grafici. Questa funzionalità è supportata solo per le istanze G4 e G2.
--accelerator=type=VWS_ACCELERATOR_TYPE,count=VWS_ACCELERATOR_COUNT

Sostituisci quanto segue:

  • Per VWS_ACCELERATOR_TYPE, scegli una delle seguenti opzioni:
    • Per le istanze G4, specifica nvidia-rtx-pro-6000-vws
    • Per le istanze G2, specifica nvidia-l4-vws
  • Per VWS_ACCELERATOR_COUNT, specifica il numero di GPU virtuali di cui hai bisogno.
SSD locale Collega una o più unità SSD locali all'istanza. Gli SSD locali possono essere utilizzati per dischi temporanei veloci o per inviare dati alle GPU evitando al contempo i colli di bottiglia I/O.
    --local-ssd=interface=nvme \
    --local-ssd=interface=nvme \
    --local-ssd=interface=nvme ...
Per il numero massimo di dischi SSD locali che puoi collegare per istanza VM, vedi Limiti degli SSD locali.
Interfaccia di rete Collega più interfacce di rete all'istanza. Per le istanze g4-standard-384, puoi collegare fino a due interfacce di rete. Puoi utilizzare questo flag per creare un'istanza con due interfacce di rete (2 x 200 Gbps). Ogni interfaccia di rete deve trovarsi in una rete VPC unica.

   --network-interface=network=VPC_NAME_1,subnet=SUBNET_NAME_1,nic-type=GVNIC \
   --network-interface=network=VPC_NAME_2,subnet=SUBNET_NAME_2,nic-type=GVNIC
   

Le interfacce di rete dual sono supportate solo sui tipi di macchine g4-standard-384.

Sostituisci quanto segue:

  • VPC_NAME: il nome della tua rete VPC.
  • SUBNET_NAME: il nome della subnet che fa parte della rete VPC specificata.

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:

Flag facoltativi

Per configurare ulteriormente l'istanza in base alle esigenze del workload o del sistema operativo, includi uno o più dei seguenti flag quando esegui il metodo instances.bulkInsert.

Funzionalità Descrizione
Modello di provisioning Per ridurre i costi, puoi specificare un modello di provisioning diverso aggiungendo il campo "provisioningModel": "PROVISIONING_MODEL" all'oggetto scheduling nella richiesta. Se specifichi di creare VM spot, i campi onHostMaintenance e automaticRestart vengono ignorati. Per saperne di più, consulta Modelli di provisioning delle istanze Compute Engine.
    "scheduling":
     {
       "onHostMaintenance": "terminate",
       "provisioningModel": "PROVISIONING_MODEL"
     }
  

Sostituisci PROVISIONING_MODEL con una delle seguenti opzioni:

  • STANDARD: (Valore predefinito) Un'istanza standard.
  • SPOT: una VM spot.
  • FLEX_START: una VM con avvio flessibile. Le VM con avvio flessibile vengono eseguite per un massimo di sette giorni e possono aiutarti ad acquisire risorse molto richieste come le GPU a un prezzo scontato. Questo modello di provisioning non è supportato per le istanze G4.
Workstation virtuale Specifica una workstation virtuale (vWS) NVIDIA RTX per i workload grafici. Questa funzionalità è supportata solo per le istanze G4 e G2.
   "guestAccelerators":
     [
       {
         "acceleratorCount": VWS_ACCELERATOR_COUNT,
         "acceleratorType": "projects/PROJECT_ID/zones/ZONE/acceleratorTypes/VWS_ACCELERATOR_TYPE"
       }
     ]
    

Sostituisci quanto segue:

  • Per VWS_ACCELERATOR_TYPE, scegli una delle seguenti opzioni:
    • Per le istanze G4, specifica nvidia-rtx-pro-6000-vws
    • Per le istanze G2, specifica nvidia-l4-vws
  • Per VWS_ACCELERATOR_COUNT, specifica il numero di GPU virtuali di cui hai bisogno.
SSD locale Collega una o più unità SSD locali all'istanza. Gli SSD locali possono essere utilizzati per dischi temporanei veloci o per inviare dati alle GPU evitando al contempo i colli di bottiglia I/O.
   {
     "type": "SCRATCH",
     "autoDelete": true,
     "initializeParams": {
       "diskType": "projects/PROJECT_ID/zones/ZONE/diskTypes/local-nvme-ssd"
     }
   }
  
Per il numero massimo di dischi SSD locali che puoi collegare per istanza VM, vedi Limiti degli SSD locali.
Interfaccia di rete Collega più interfacce di rete all'istanza. Per le istanze g4-standard-384, puoi collegare fino a due interfacce di rete. In questo modo viene creata un'istanza con due interfacce di rete (2 x 200 Gbps). Ogni interfaccia di rete deve trovarsi in una rete VPC unica.

   "networkInterfaces":
   [
     {
       "network": "projects/PROJECT_ID/global/networks/VPC_NAME_1",
       "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME_1",
       "nicType": "GVNIC"
     },
     {
       "network": "projects/PROJECT_ID/global/networks/VPC_NAME_2",
       "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME_2",
       "nicType": "GVNIC"
     }
   ]
  

Le interfacce di rete dual sono supportate solo sui tipi di macchine g4-standard-384.

Sostituisci quanto segue:

  • VPC_NAME: il nome della tua rete VPC.
  • SUBNET_NAME: il nome della subnet che fa parte della rete VPC specificata.

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