Crea gruppi di VM GPU collettivamente

Puoi creare un gruppo di macchine virtuali (VM) a cui sono collegate GPU (Graphic Processing Unit) utilizzando il processo di creazione in blocco. Con il processo di creazione in blocco, ottieni una convalida iniziale in cui la richiesta non riesce velocemente se non è fattibile. Inoltre, se utilizzi il flag regione, l'API di creazione collettiva sceglie automaticamente la zona con la capacità per soddisfare la richiesta. Per saperne di più sulla creazione collettiva, consulta Informazioni sulla creazione collettiva delle VM.

Prima di iniziare

  • Per rivedere i passaggi preliminari aggiuntivi come la selezione di un'immagine del sistema operativo e la verifica della quota GPU, consulta il documento della panoramica.
  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione è il processo mediante il quale viene verificata l'identità per l'accesso ai servizi e alle API Google Cloud. Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti in Compute Engine nel seguente modo.

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

    gcloud

    1. Installa Google Cloud CLI, quindi initialize eseguendo questo comando:

      gcloud init
    2. Set a default region and zone.
    3. 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.

        Installa Google Cloud CLI, quindi initialize eseguendo questo comando:

        gcloud init

      Per maggiori informazioni, consulta Autenticazione per REST nella documentazione sull'autenticazione di Google Cloud.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per creare le VM, chiedi all'amministratore di concederti il ruolo IAM Amministratore istanze Compute (v1) (roles/compute.instanceAdmin.v1) per il progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

Questo ruolo predefinito contiene le autorizzazioni necessarie per creare le VM. Per visualizzare le autorizzazioni esatte necessarie, espandi la sezione Autorizzazioni richieste:

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 nell'immagine
  • Per utilizzare uno snapshot per creare la VM: compute.snapshots.useReadOnly nello snapshot
  • Per utilizzare un modello di istanza per creare la VM: compute.instanceTemplates.useReadOnly sul modello di istanza
  • Per assegnare una rete legacy alla VM: compute.networks.use sul progetto
  • 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 legacy: compute.networks.useExternalIp sul progetto
  • Per specificare una subnet per la tua VM: compute.subnetworks.use sul progetto o nella subnet scelta
  • Per assegnare un indirizzo IP esterno alla VM quando utilizzi una rete VPC: compute.subnetworks.useExternalIp sul progetto o nella subnet scelta
  • 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 account di servizio per la VM da 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 lettura/scrittura: compute.disks.use sul disco
  • Per collegare un disco esistente in modalità di sola lettura: compute.disks.useReadOnly sul disco

Potresti anche essere in grado di ottenere queste autorizzazioni con i ruoli personalizzati o altri ruoli predefiniti.

Panoramica

Quando crei VM con GPU collegate utilizzando il metodo di creazione collettiva, puoi scegliere di creare VM in una regione (ad esempio us-central1) o in una zona specifica, ad esempio (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.

Crea gruppi di VM ottimizzate per l'acceleratore

La famiglia di macchine ottimizzate per l'acceleratore è disponibile nei tipi di macchina A3 standard, A2 standard, ultra e G2 standard.

A ogni tipo di macchina ottimizzata per l'acceleratore è collegato un modello specifico di GPU NVIDIA.

  • Per i tipi di macchine ottimizzate per l'acceleratore A3, sono collegate le GPU NVIDIA H100 da 80 GB.
  • Per i tipi di macchine ottimizzate per l'acceleratore A2, sono collegate le GPU NVIDIA A100. Questi sono disponibili nelle opzioni A100 da 40 GB e A100 da 80 GB.
  • Per i tipi di macchine ottimizzate per l'acceleratore G2, sono collegate le GPU NVIDIA L4.

Puoi creare un gruppo di VM ottimizzate per l'acceleratore 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 Creare VM in blocco.

I seguenti flag facoltativi sono mostrati nel comando di esempio:

  • Il flag --preemptible che configura la VM come istanza VM prerilasciabile. Questo riduce il costo della VM e delle GPU collegate. Per ulteriori informazioni, consulta GPU su istanze prerilasciabili.

  • Il flag --accelerator per specificare una workstation virtuale. Le workstation virtuali NVIDIA RTX (vWS) 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 --restart-on-failure \
    [--preemptible] \
    [--accelerator=type=nvidia-l4-vws,count=VWS_ACCELERATOR_COUNT]

Sostituisci quanto segue:

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

    • Un tipo di macchina A3.
    • Un tipo di macchina A2.
    • Un tipo di macchina G2. I tipi di macchine G2 supportano anche la memoria personalizzata. La memoria deve essere un multiplo di 1024 MB e deve 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 del 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 supporti le GPU. Ad esempio: --image-family=rocky-linux-8-optimized-gcp.

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

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

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

Se l'esito è positivo, l'output sarà 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 Creare 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 mediante 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 GPU selezionato.
  • MACHINE_TYPE: il tipo di macchina selezionato. Scegli una delle opzioni seguenti:

    • Un tipo di macchina A2.
    • Un tipo di macchina G2. I tipi di macchine G2 supportano anche la memoria personalizzata. La memoria deve essere un multiplo di 1024 MB e deve 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 della specifica famiglia di immagini o immagini 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 del sistema operativo più recente non deprecata in quella famiglia. Per ulteriori informazioni su quando utilizzare le famiglie di immagini, consulta le best practice per le famiglie di immagini.

Impostazioni aggiuntive:

  • Puoi ridurre il costo della VM e delle GPU collegate utilizzando VM prerilasciabili. Per ulteriori informazioni, consulta GPU su VM prerilasciabile prerilasciabili. Per impostare la VM come prerilasciabile, aggiungi l'opzione "preemptible": true alla richiesta.

    "scheduling":
      {
        "onHostMaintenance": "terminate",
        "automaticRestart": true,
        "preemptible": true
      }
    
  • Per le VM G2, sono supportate le workstation virtuali NVIDIA RTX (vWS). 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"
       }
     ]
    

Limitazioni

Standard A3

  • Non ricevi sconti per utilizzo sostenuto e sconti per impegno di utilizzo flessibili per le VM che utilizzano i tipi di macchine standard A3.
  • Puoi utilizzare i tipi di macchina standard A3 solo in determinate regioni e zone.
  • Non puoi utilizzare i dischi permanenti a livello di regione sulle VM che utilizzano i tipi di macchine standard A3.
  • Il tipo di macchina standard A3 è disponibile solo sulla piattaforma Sapphire Rapids.
  • Se la tua VM utilizza un tipo di macchina standard A3, non puoi cambiare il tipo di macchina. Se devi utilizzare un altro tipo di macchina, devi creare una nuova VM.
  • Non puoi cambiare nessun altro tipo di macchina in un tipo di macchina standard A3. Se devi creare una VM che utilizza un tipo di macchina standard A3, devi crearne una nuova.
  • I tipi di macchina standard A3 non supportano la modalità single-tenancy.
  • Non puoi eseguire i tipi di macchina standard A3 sui sistemi operativi Windows.

Standard A2

  • Non ricevi sconti per utilizzo sostenuto e sconti per impegno di utilizzo flessibili per le VM che utilizzano i tipi di macchine standard A2.
  • Puoi utilizzare i tipi di macchina standard A2 solo in determinate regioni e zone.
  • Non puoi utilizzare i dischi permanenti a livello di regione sulle VM che utilizzano i tipi di macchine standard A2.
  • Il tipo di macchina standard A2 è disponibile solo sulla piattaforma Cascade Lake.
  • Se la tua VM utilizza un tipo di macchina standard A2, puoi passare solo da un tipo di macchina standard A2 a un altro tipo di macchina standard A2. Non puoi passare a nessun altro tipo di macchina. Per saperne di più, consulta Modificare le VM ottimizzate per l'acceleratore.
  • Non puoi utilizzare il tipo di macchina standard a2-megagpu-16g A2 sui sistemi operativi Windows. Se utilizzi i sistemi operativi Windows, scegli un tipo di macchina standard A2 diverso.
  • Non puoi eseguire una formattazione rapida delle unità SSD locali collegate sulle VM Windows che utilizzano tipi di macchine standard A2. Per formattare queste unità SSD locali, devi creare un formato completo utilizzando l'utilità diskpart e specificando format fs=ntfs label=tmpfs.
  • I tipi di macchina standard A2 non supportano la modalità single-tenancy.

A2 Ultra

  • Non ricevi sconti per utilizzo sostenuto e sconti per impegno di utilizzo flessibili per le VM che utilizzano i tipi di macchine A2 Ultra.
  • Puoi utilizzare i tipi di macchina A2 Ultra solo in determinate regioni e zone.
  • Non puoi utilizzare i dischi permanenti a livello di regione sulle VM che utilizzano i tipi di macchine A2 Ultra.
  • Il tipo di macchina A2 ultra è disponibile solo sulla piattaforma Cascade Lake.
  • Se la tua VM utilizza un tipo di macchina A2 Ultra, non puoi cambiarlo. Se devi utilizzare un tipo di macchina A2 Ultra diverso o qualsiasi altro tipo di macchina, devi creare una nuova VM.
  • Non puoi cambiare nessun altro tipo di macchina in un tipo di macchina A2 ultra. Se devi creare una VM che utilizza un tipo di macchina A2 Ultra, devi creare una nuova VM.
  • Non puoi eseguire una formattazione rapida delle unità SSD locali collegate sulle VM Windows che utilizzano tipi di macchine ultra A2. Per formattare queste unità SSD locali, devi creare un formato completo utilizzando l'utilità diskpart e specificando format fs=ntfs label=tmpfs.

Standard G2

  • Non ricevi sconti per utilizzo sostenuto e sconti per impegno di utilizzo flessibili per le VM che utilizzano i tipi di macchine standard G2.
  • Puoi utilizzare i tipi di macchina standard G2 solo in determinate regioni e zone.
  • Non è possibile utilizzare i dischi permanenti a livello di regione sulle VM che utilizzano i tipi di macchina standard G2.
  • Il tipo di macchina standard G2 è disponibile solo sulla piattaforma Cascade Lake.
  • I dischi permanenti standard (pd-standard) non sono supportati sulle VM che utilizzano i tipi di macchine standard G2. Per i tipi di disco supportati, consulta Tipi di disco supportati per G2.
  • Non puoi creare GPU multi-istanza sui tipi di macchine standard G2.
  • Se devi cambiare il tipo di macchina di una VM G2, consulta la pagina Modifica delle VM ottimizzate per l'acceleratore.
  • Non puoi utilizzare Deep Learning VM Image come dischi di avvio per le tue VM che utilizzano i tipi di macchine standard G2.
  • L'attuale driver predefinito per Container-Optimized OS non supporta le GPU L4 in esecuzione sui tipi di macchine G2. Inoltre, Container-Optimized OS supporta solo un insieme selezionato di driver. Se vuoi utilizzare Container-Optimized OS sui tipi di macchine G2, leggi le seguenti note:
    • Utilizza una versione Container-Optimized OS che supporti la versione minima consigliata del driver NVIDIA 525.60.13 o successive. Per saperne di più, consulta le note di rilascio di Container-Optimized OS.
    • Quando installi il driver, specifica la versione più recente disponibile che funziona per le GPU L4. Ad esempio, sudo cos-extensions install gpu -- -version=525.60.13.
  • Devi utilizzare Google Cloud CLI o REST per creare VM G2 per i seguenti scenari:
    • Vuoi specificare valori di memoria personalizzati.
    • Vuoi personalizzare il numero di core della CPU visibili.

Crea gruppi di VM per uso generico N1

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

NVIDIA RTX Virtual Workstation (vWS) (precedentemente nota come NVIDIA GRID):

  • Workstation virtuale NVIDIA T4: nvidia-tesla-t4-vws
  • Workstation virtuale NVIDIA P4: nvidia-tesla-p4-vws
  • Workstation virtuale NVIDIA P100: nvidia-tesla-p100-vws

    Per queste workstation virtuali, alla VM viene aggiunta automaticamente una licenza NVIDIA RTX Virtual Workstation (vWS).

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 Creazione collettiva di VM.

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 di us-central1 che supporta GPU
  • A ogni VM sono collegate due GPU T4, specificate utilizzando il tipo di acceleratore e i flag di conteggio degli acceleratori
  • In ogni VM sono installati driver GPU
  • Ogni VM utilizza l'immagine Deep Learning VM 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 sarà 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 Creazione collettiva di VM.

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 di us-central1 che supporta GPU
  • A ogni VM sono collegate due GPU T4, specificate utilizzando il tipo di acceleratore e i flag di conteggio degli acceleratori
  • In ogni VM sono installati driver GPU
  • Ogni VM utilizza l'immagine Deep Learning VM pytorch-latest-gpu-v20211028-debian-10

Sostituisci PROJECT_ID con l'ID progetto.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/region/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"
          }
        ]
      }
  }
 }

Che cosa succede dopo?