Creare VM GPU collettivamente


Puoi creare un gruppo di macchine virtuali (VM) che hanno unità di elaborazione grafica (GPU) collegate utilizzando la procedura di creazione collettiva. Con la procedura di creazione collettiva, viene eseguita una convalida preliminare in cui la richiesta non riesce rapidamente se non è fattibile. Inoltre, se utilizzi il flag regione, l'API di creazione collettiva sceglie automaticamente la zona che ha la capacità di soddisfare la richiesta.

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

Prima di iniziare

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per creare VM, chiedi all'amministratore di concederti il ruolo IAM Amministratore istanze Compute (v1) (roles/compute.instanceAdmin.v1) nel progetto. Per ulteriori informazioni sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

Questo ruolo predefinito contiene le autorizzazioni necessarie per creare VM. Per visualizzare le autorizzazioni esatte richieste, 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 sull'immagine
  • Per utilizzare uno snapshot per creare la VM: compute.snapshots.useReadOnly sullo snapshot
  • Per utilizzare un modello di istanza per creare la VM: compute.instanceTemplates.useReadOnly nel modello di istanza
  • Per assegnare una rete legacy alla VM: compute.networks.use nel progetto
  • Per specificare un indirizzo IP statico per la VM: compute.addresses.use nel progetto
  • Per assegnare un indirizzo IP esterno alla VM quando utilizzi una rete legacy: compute.networks.useExternalIp nel progetto
  • Per specificare una subnet per la VM: compute.subnetworks.use nel progetto o nella subnet scelta
  • Per assegnare un indirizzo IP esterno alla VM quando utilizzi una rete VPC: compute.subnetworks.useExternalIp nel progetto o nella subnet scelta
  • Per impostare i metadati dell'istanza VM per la VM: compute.instances.setMetadata nel 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 da utilizzare per la VM: compute.instances.setServiceAccount sulla VM
  • Per creare un nuovo disco per la VM: compute.disks.create nel 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 collettiva, 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 macchina

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

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

Creare gruppi di VM A3, A2 e G2

Questa sezione spiega come creare istanze collettivamente 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 gcloud compute instances bulk create comando. Per ulteriori informazioni sui parametri e su come utilizzare questo comando, consulta Creare più VM contemporaneamente.

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 carico di lavoro è a tolleranza di errore e può resistere a un possibile prerilascio delle VM, valuta la possibilità di utilizzare le VM spot per ridurre il costo delle VM e delle GPU collegate. Per ulteriori informazioni, consulta GPU su VM spot. Per le VM spot, i flag delle opzioni di riavvio automatico e 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 per le 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 del sistema operativo che supporta le GPU.

    Se vuoi utilizzare l'immagine più recente in una famiglia di immagini, sostituisci il --image con il --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 Deep Learning VM Images.

  • IMAGE_PROJECT: il progetto di immagini di Compute Engine a cui appartiene l'immagine del sistema operativo. Se utilizzi un'immagine personalizzata o Immagini VM per il deep learning, specifica il progetto a cui appartengono queste immagini.

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

Se l'operazione è riuscita, 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 Creare più VM contemporaneamente.

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 per le 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 della immagine o della 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 dalla più recente immagine del sistema operativo non deprecata della famiglia. Per maggiori informazioni su quando utilizzare le famiglie di immagini, consulta le best practice per le famiglie di immagini.

Impostazioni aggiuntive:

  • Se il tuo carico di lavoro è a tolleranza di errore e può essere sottoposto a eventuali prerilasci delle VM, valuta la possibilità di utilizzare le VM spot per ridurre il costo delle VM e delle GPU collegate. Per ulteriori informazioni, consulta GPU su VM spot. Per utilizzare una VM spot, aggiungi l'opzione "provisioningModel": "SPOT alla richiesta. Per le VM spot, i flag 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"
       }
     ]
    

Creare gruppi di VM N1 per uso generale

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, alla VM viene aggiunta automaticamente una licenza per workstation virtuale (vWS) NVIDIA RTX.

gcloud

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

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 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'operazione è riuscita, 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 Creare più VM contemporaneamente.

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

Passaggi successivi