Questo documento spiega come creare ed eseguire un job Batch che utilizza istanze di macchine virtuali (VM) con Tensor Processing Unit (TPU). Le TPU sono circuiti integrati per applicazioni specifiche (ASIC) sviluppati da Google e progettati per accelerare i workload di machine learning (ML) e intelligenza artificiale (AI). Quando crei un job Batch, puoi facoltativamente specificare un tipo di macchina TPU per accelerare i workload di inferenza, valutazione, ottimizzazione e addestramento di AI e ML containerizzati o basati su script.
Per scoprire di più sulle TPU, consulta Informazioni sulle TPU su Google Cloud e Tipi di macchine TPU nella documentazione di Compute Engine. In alternativa, puoi accelerare i workload di elaborazione dati, AI e ML utilizzando le GPU.
Prima di iniziare
- Se non hai mai utilizzato Batch, consulta Inizia a utilizzare Batch e abilita Batch completando i prerequisiti per progetti e utenti.
-
Per ottenere le autorizzazioni necessarie per creare un job, chiedi all'amministratore di concederti i seguenti ruoli IAM:
- Editor job batch (
roles/batch.jobsEditor) sul progetto - Utente dell'account di servizio (
roles/iam.serviceAccountUser) sul service account del job, che per impostazione predefinita è il service account Compute Engine predefinito
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
- Editor job batch (
Limitazioni
Quando un job utilizza le TPU, si applicano tutte le seguenti limitazioni, oltre alle limitazioni di Compute Engine per le TPU.
Solo sezioni TPU a host singolo: Batch supporta solo VM TPU indipendenti, chiamate sezioni TPU a host singolo. Le sezioni TPU multi-host, ciascuna composta da più VM interconnesse, non sono supportate.
Un job può essere eseguito su una o più sezioni TPU single-host. Ad esempio, se un job imposta
taskCountsu4etaskCountPerNodesu1, il numero di VM su cui viene eseguito il job è 4 o meno. A differenza delle sezioni TPU multi-host, le sezioni TPU single-host funzionano ciascuna come una VM indipendente e non forniscono il networking Inter-Chip Interconnect (ICI) per una comunicazione a larghezza di banda elevata e bassa latenza.Scopri di più sulle sezioni TPU single-host e multi-host nella documentazione di Compute Engine.
Versioni TPU e tipi di macchine supportati: Batch supporta solo le sezioni TPU a host singolo (VM TPU indipendenti) per le seguenti versioni TPU e tipi di macchine:
- TPU7x (Ironwood):
tpu7x-standard-4t v6e (Trillium):
ct6e-standard-1t,ct6e-standard-4tect6e-standard-8tv5p:
ct5p-hightpu-4tOpzioni di consumo supportate: Batch non supporta le VM Flex-start (modello di provisioning
FLEX_START) per i job che utilizzano le TPU. Ad eccezione delle VM Flex-start, puoi specificare qualsiasi opzione di consumo supportata dalla versione TPU del tuo job in base alla Disponibilità delle opzioni di consumo per versioni TPU nella documentazione di Compute Engine.È richiesta una località a zona singola: quando crei un job che utilizza le TPU, devi limitare il job a una zona specifica impostando le località consentite del job (campo
allowedLocations[]) su una zona che contiene la tua versione della TPU o, se applicabile, la tua prenotazione.Funzionalità non supportate: i job che utilizzano le TPU non supportano le seguenti funzionalità:
- flessibilità delle istanze
(campo
instanceFlexibilityPolicy) - Policy di posizionamento compatto
(campo
collocation)
- flessibilità delle istanze
(campo
Per ulteriori informazioni su ciascun tipo di macchina TPU, ad esempio i dischi supportati, consulta Tipi di macchine TPU nella documentazione di Compute Engine.
Crea un job che utilizza le TPU
Per creare un job che utilizza le TPU, segui questi passaggi:
- Pianifica la configurazione di un job che utilizza le TPU.
- Crea un job con la configurazione che hai identificato. Per esempi di come creare un job che utilizza le TPU, consulta Crea un job che utilizza le TPU in questo documento.
Pianifica la configurazione di un job che utilizza le TPU
Prima di procedere alla creazione di un job che utilizza le TPU, devi:
Scegli la versione della TPU: seleziona la versione della TPU adatta al tuo workload. Per un elenco delle versioni di TPU in base al tipo di workload, consulta Versioni di TPU consigliate in base ai tipi di workload.
Assicurati di selezionare una delle versioni di TPU supportate.
Scegli un'opzione di consumo di TPU: seleziona un'opzione di consumo più adatta al tuo workload, alla sua durata e alle tue esigenze di costo. Assicurati di selezionare una delle opzioni di consumo supportate. I casi d'uso e i requisiti dei job per ogni opzione di consumo sono riepilogati nella tabella seguente.
Opzioni di consumo e requisiti dei job Vincolate alla prenotazione (prenotazioni future in modalità calendario o prenotazioni future per i blocchi di capacità)
Caso d'uso: consigliamo le opzioni di consumo con prenotazione per i job che richiedono un livello molto elevato di garanzia della disponibilità delle risorse TPU per un periodo di tempo specifico. In Compute Engine, queste sono descritte come prenotazioni future in modalità calendario (da 1 a 90 giorni) e prenotazioni future per blocchi di capacità (per 1 anno o più).
Dettagli: prima di creare un job, devi ottenere o identificare una prenotazione per la versione TPU scelta e il modello di provisioning
RESERVATION_BOUND. Dopo aver creato una prenotazione, vengono addebitati i costi delle VM specificate allo stesso prezzo dell'esecuzione delle VM fino a quando non elimini la prenotazione. Le VM che utilizzano una prenotazione non comportano costi separati, ma le prenotazioni comportano costi indipendentemente dall'utilizzo.Per saperne di più, consulta Scegli un tipo di prenotazione nella documentazione di Compute Engine.
Batch utilizza le prenotazioni con ambito di prenotazione per i job che soddisfano tutte le seguenti condizioni:
- Imposta il campo
provisioningModelsuRESERVATION_BOUND. - Scegli come target specifico una prenotazione compatibile. Imposta il campo
reservationsul nome breve (se la prenotazione si trova nello stesso progetto e nella stessa zona) o sul percorso completo della risorsa della prenotazione, del blocco di prenotazione o del blocco secondario di prenotazione.
On demand
Caso d'uso: on demand è un'opzione rapida e semplice da provare, quindi è l'opzione di consumo predefinita per la maggior parte dei job. Tuttulavia, non consigliamo on demand se un'altra opzione di consumo si adatta meglio alle tue priorità o se riscontri ripetutamente problemi con l'ottenibilità delle risorse.
Dettagli: on demand è in genere il modo predefinito per accedere alle VM di Compute Engine. On demand ti consente di accedere alle risorse (se disponibili) quando richiesto. Le risorse non vengono eliminate finché il job non termina o non viene raggiunto il limite di tempo di esecuzione.
Per impostazione predefinita, Batch utilizza on demand per la maggior parte dei job. Se vuoi assicurarti che un job utilizzi on-demand, esegui tutte le seguenti operazioni:
- Imposta il campo
provisioningModelsuSTANDARD. - Previeni il consumo delle prenotazioni. Per impedire a un job di utilizzare automaticamente le prenotazioni compatibili, imposta il campo
reservationsuNO_RESERVATION. Per saperne di più, consulta Crea ed esegui un job che non può utilizzare le VM prenotate.
VM spot
Caso d'uso: ti consigliamo di utilizzare le VM spot per ridurre i costi per i workload a tolleranza di errore.
Dettagli: se una richiesta di creazione di un job che utilizza VM spot viene soddisfatta, alle VM vengono addebitati i prezzi delle VM spot, che possono cambiare spesso e potrebbero fornire lo sconto maggiore, fino al 91% di sconto sui prezzi on demand. Tuttavia, le VM spot potrebbero non essere sempre disponibili e possono essere prerilasciate in qualsiasi momento.
Scopri di più sulle VM spot e sui suggerimenti per i job con VM spot.
Batch utilizza VM spot per i job che soddisfano tutte le seguenti condizioni:
- Imposta il campo
provisioningModelsuSPOT. - (Facoltativo) Previeni il consumo delle prenotazioni. Non puoi utilizzare le VM spot con le prenotazioni. In particolare, il job può facoltativamente impostare il campo
reservationsuNO_RESERVATION. Per saperne di più, consulta Crea ed esegui un job che non può utilizzare le VM prenotate.
Seleziona una zona in cui sono disponibili le TPU scelte: per utilizzare una versione TPU, il campo
allowedLocations[]di un job deve essere impostato su una zona che contiene le TPU scelte come segue:- Se hai scelto un'opzione di consumo che utilizza le prenotazioni, devi utilizzare la zona in cui si trova la prenotazione.
- In caso contrario, seleziona una zona che contiene la tua versione di TPU in base alla disponibilità di TPU.
In entrambi i casi, la zona deve trovarsi anche in una delle regioni supportate per Batch.
Assicurati che il tuo progetto disponga di una quota di TPU sufficiente: se stai creando un job che utilizza TPU con VM on demand o VM spot, devi disporre di una quota di TPU sufficiente nella regione che vuoi utilizzare. La creazione di un job che utilizza TPU che consumano una prenotazione di TPU non richiede alcuna quota di TPU, poiché la quota viene utilizzata al momento della creazione della prenotazione. Per un elenco dei nomi delle quote TPU, consulta Quota TPU e per istruzioni su come visualizzare la quota, consulta Visualizza e gestisci le quote.
Scegli un tipo di macchina TPU: seleziona un tipo di macchina TPU per la versione TPU scelta. Se hai scelto un'opzione di consumo che utilizza le prenotazioni, devi utilizzare il tipo di macchina della prenotazione. Per un elenco dei tipi di macchine disponibili per ogni versione di TPU, consulta Tipi di macchine TPU.
A causa delle limitazioni, devi utilizzare la topologia single-host per il tipo di macchina TPU.
Crea un job che utilizza le TPU
Le sezioni seguenti spiegano come creare un job di esempio che utilizza le TPU per ogni opzione di consumo.
| Opzione di consumo | Esempi di istruzioni per i job |
|---|---|
| Vincolate alla prenotazione (prenotazioni future in modalità calendario o prenotazioni future per i blocchi di capacità) | |
| VM on demand o VM spot |
Utilizza le TPU con VM on demand o VM spot
Puoi creare un job che utilizza TPU con VM on demand o VM spot utilizzando gcloud CLI o l'API Batch.
gcloud
Crea un file di configurazione JSON che specifichi un tipo di macchina TPU single-host supportato, imposti il modello di provisioning su
STANDARDoSPOTe venga eseguito in una località che offre il tipo di macchina TPU.Ad esempio, per creare un job di script di base, crea un file JSON con i seguenti contenuti:
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from TPU task ${BATCH_TASK_INDEX}." } } ] }, "taskCount": 3, "parallelism": 1 } ], "allocationPolicy": { "instances": [ { "policy": { "provisioningModel": "PROVISIONING_MODEL", "machineType": "MACHINE_TYPE" } } ], "location": { "allowedLocations": [ "ALLOWED_LOCATIONS" ] } }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }Sostituisci quanto segue:
PROVISIONING_MODEL: il modello di provisioning per la tua opzione di consumo, ovveroSTANDARDper on demand oSPOTper le VM spot.MACHINE_TYPE: un tipo di macchina TPU single-host supportato, ad esempioct5p-hightpu-4t.ALLOWED_LOCATIONS: le località consentite per il job. Per un job che utilizza TPU, devi impostare il campoallowedLocations[]su una zona che offre il tipo di macchina TPU, ad esempiozones/us-central1-aoffre il tipo di macchina TPUct5p-hightpu-4t.
Per creare ed eseguire il job, utilizza il comando
gcloud batch jobs submit:gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILESostituisci quanto segue:
JOB_NAME: il nome del job.LOCATION: la località del job.JSON_CONFIGURATION_FILE: il percorso di un file JSON con i dettagli di configurazione del job.
API
Invia una richiesta POST al metodo jobs.create che specifica un tipo di macchina TPU single-host supportato, imposta il modello di provisioning su STANDARD o SPOT e viene eseguita in una località che offre il tipo di macchina TPU.
Ad esempio, per creare un job di script di base, invia la seguente richiesta:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world from TPU task ${BATCH_TASK_INDEX}."
}
}
]
},
"taskCount": 3,
"parallelism": 1
}
],
"allocationPolicy": {
"instances": [
{
"policy": {
"provisioningModel": "PROVISIONING_MODEL",
"machineType": "MACHINE_TYPE"
}
}
],
"location": {
"allowedLocations": [
"ALLOWED_LOCATIONS"
]
}
},
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
Sostituisci quanto segue:
PROJECT_ID: l'ID progetto del tuo progetto.LOCATION: la località del job.JOB_NAME: il nome del job.PROVISIONING_MODEL: il modello di provisioning per la tua opzione di consumo, ovveroSTANDARDper on demand oSPOTper le VM spot.MACHINE_TYPE: un tipo di macchina TPU single-host supportato, ad esempioct5p-hightpu-4t.ALLOWED_LOCATIONS: le località consentite per il job. Per un job che utilizza TPU, devi impostare il campoallowedLocations[]su una zona che offre il tipo di macchina TPU, ad esempiozones/us-central1-aoffre il tipo di macchina TPUct5p-hightpu-4t.
Utilizza le TPU con opzioni di consumo con prenotazione
Puoi creare un job che utilizza TPU con un'opzione di consumo per il modello di provisioning con prenotazione (RESERVATION_BOUND), ovvero prenotazioni future per blocchi di capacità o prenotazioni future in modalità calendario, utilizzando gcloud CLI o l'API Batch.
gcloud
Crea un file di configurazione JSON che specifichi una prenotazione per un tipo di macchina TPU single-host, imposti il modello di provisioning su
RESERVATION_BOUNDe venga eseguito nella zona della prenotazione.Ad esempio, per creare un job di script di base, crea un file JSON con i seguenti contenuti:
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from TPU task ${BATCH_TASK_INDEX}." } } ] }, "taskCount": 3, "parallelism": 1 } ], "allocationPolicy": { "instances": [ { "policy": { "provisioningModel": "RESERVATION_BOUND", "reservation": "RESERVATION", "machineType": "MACHINE_TYPE" } } ], "location": { "allowedLocations": [ "ALLOWED_LOCATIONS" ] } }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }Sostituisci quanto segue:
RESERVATION: sostituisci con uno dei seguenti percorsi della prenotazione:Se vuoi utilizzare una prenotazione futura in modalità calendario o una parte della prenotazione per una prenotazione futura per i blocchi di capacità, specifica la prenotazione:
projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAMESe vuoi utilizzare un blocco specifico di una prenotazione futura per i blocchi di capacità, specifica il blocco di prenotazione:
projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME/reservationBlocks/BLOCK_NAMESe vuoi utilizzare un blocco secondario specifico di una prenotazione futura per i blocchi di capacità, specifica il blocco secondario della prenotazione:
projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME/reservationSubBlocks/SUB_BLOCK_NAME
MACHINE_TYPE: il tipo di macchina TPU della tua prenotazione, ad esempioct5p-hightpu-4t.ALLOWED_LOCATIONS: le località consentite per il job. Per un job che utilizza TPU prenotate, devi impostare il campoallowedLocations[]sulla zona della prenotazione, ad esempiozones/us-central1-aoffre il tipo di macchina TPUct5p-hightpu-4t.
Per creare ed eseguire il job, utilizza il comando
gcloud batch jobs submit:gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILESostituisci quanto segue:
JOB_NAME: il nome del job.LOCATION: la località del job.JSON_CONFIGURATION_FILE: il percorso di un file JSON con i dettagli di configurazione del job.
API
Invia una richiesta POST al
metodo jobs.create
che specifica una prenotazione per un tipo di macchina TPU single-host, imposta il
modello di provisioning su RESERVATION_BOUND e viene eseguita nella zona della
prenotazione.
Ad esempio, per creare un job di script di base, invia la seguente richiesta:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world from TPU task ${BATCH_TASK_INDEX}."
}
}
]
},
"taskCount": 3,
"parallelism": 1
}
],
"allocationPolicy": {
"instances": [
{
"policy": {
"provisioningModel": "RESERVATION_BOUND",
"reservation": "RESERVATION",
"machineType": "MACHINE_TYPE"
}
}
],
"location": {
"allowedLocations": [
"ALLOWED_LOCATIONS"
]
}
},
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
Sostituisci quanto segue:
PROJECT_ID: l'ID progetto del tuo progetto.LOCATION: la località del job.JOB_NAME: il nome del job.RESERVATION: sostituisci con uno dei seguenti percorsi per la prenotazione:Se vuoi utilizzare una prenotazione futura in modalità calendario o una parte della prenotazione per una prenotazione futura per i blocchi di capacità, specifica la prenotazione:
projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAMESe vuoi utilizzare un blocco specifico di una prenotazione futura per i blocchi di capacità, specifica il blocco di prenotazione:
projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME/reservationBlocks/BLOCK_NAMESe vuoi utilizzare un blocco secondario specifico di una prenotazione futura per i blocchi di capacità, specifica il blocco secondario della prenotazione:
projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME/reservationSubBlocks/SUB_BLOCK_NAME
MACHINE_TYPE: il tipo di macchina TPU della tua prenotazione, ad esempioct5p-hightpu-4t.ALLOWED_LOCATIONS: le località consentite per il job. Per un job che utilizza TPU prenotate, devi impostare il campoallowedLocations[]sulla zona della prenotazione, ad esempiozones/us-central1-aoffre il tipo di macchina TPUct5p-hightpu-4t.
Per saperne di più sulla creazione di job che utilizzano le prenotazioni, consulta Garantisci la disponibilità delle risorse utilizzando le prenotazioni di VM.
Passaggi successivi
- Se hai problemi con la creazione o l'esecuzione di un job, consulta Risoluzione dei problemi.
- Visualizza job e attività.
- Scopri di più sulle opzioni di creazione dei job.