Panoramica della creazione e dell'esecuzione dei job

Questo documento illustra il processo di esecuzione e le opzioni di creazione per i job. I job batch ti consentono di eseguire carichi di lavoro di elaborazione batch su Google Cloud. Per informazioni sui componenti di un job e sui prerequisiti per l'utilizzo di Batch, consulta la Guida introduttiva all'utilizzo di Batch.

Come funzionano la creazione e l'esecuzione dei job

Per utilizzare Batch, crei un job che specifichi il carico di lavoro e i relativi requisiti e poi viene eseguito automaticamente da Batch.

I dettagli su come funzionano la creazione e l'esecuzione dei job sono descritti nelle seguenti sezioni:

  • Ciclo di vita del job: comprensione degli stati in cui un job avanza dalla creazione all'eliminazione.
  • Coda e pianificazione dei job: scopri i fattori che influiscono sul tempo necessario per l'avvio di un job.
  • Esecuzione del job: consente di capire come vengono eseguite le attività di un job sulle relative risorse durante l'esecuzione.

Ciclo di vita del job

Questa sezione descrive il ciclo di vita di un job e le sue attività dalla creazione all'eliminazione.

Per ogni carico di lavoro da eseguire su Batch, segui la procedura di base seguente:

  1. Crea un job: definisci il carico di lavoro da eseguire specificando gli elementi eseguibili, le attività e qualsiasi altro requisito del job. I dettagli per la creazione di un job sono presentati nella sezione Opzioni di creazione di job di questo documento.
  2. Monitora e risolvi i problemi del job: quando termini la creazione di un job, il job viene automaticamente messo in coda, pianificato ed eseguito sulle risorse specificate. Puoi visualizzare i dettagli di un job creato o una qualsiasi delle sue attività per vedere lo stato attuale. Dopo che un job è in esecuzione o terminato, puoi anche monitorarlo e analizzarlo utilizzando i log. Se un job non va a buon fine, puoi risolverlo utilizzando messaggi di errore, eventi di stato o log per diagnosticare il problema prima di ricreare il job.
  3. Elimina o esporta il job: i log di un job vengono conservati ed eliminati automaticamente in base al criterio di conservazione di Cloud Logging. Le altre informazioni di un job rimangono disponibili in Batch fino a quando tu o Google Cloud non le eliminano. Google Cloud elimina automaticamente un job 60 giorni dopo il suo completamento. Prima di allora, puoi facoltativamente eliminare il job autonomamente oppure, se hai bisogno di conservare le informazioni, puoi esportare il job prima che venga eliminato.

Una volta creato, il job passa attraverso i seguenti stati:

  1. In coda (QUEUED): la richiesta del job è stata accettata ed è in attesa in coda. Il job rimane in coda fino a quando le risorse richieste sono disponibili e i job precedenti non sono stati valutati.
  2. Pianificato (SCHEDULED): il job è stato selezionato dalla coda per essere eseguito e le risorse sono in fase di allocazione.
  3. In esecuzione (RUNNING): le risorse per il job sono state create correttamente e le relative attività possono essere eseguite.

    Quando un job è in esecuzione, ogni attività avanza tramite i seguenti stati:

    1. In attesa (PENDING): l'attività è in attesa di esecuzione di una VM.
    2. Assegnata (ASSIGNED): all'attività è stata assegnata una VM su cui eseguire.
    3. In esecuzione (RUNNING): l'attività è in esecuzione su una VM.
    4. Un'attività viene completata in uno dei seguenti stati:
      • Riuscito (SUCCEEDED): l'attività ha avuto esito positivo perché ciascuno dei suoi elementi eseguibili è riuscito (restituito un codice di uscita pari a zero) o è stato contrassegnato come non critico utilizzando il campo ignora stato di uscita (ignoreExitStatus).
      • Non riuscita (FAILED): l'attività non è riuscita perché almeno uno degli elementi eseguibili critici ha restituito un codice di uscita diverso da zero.
  4. Un job viene completato in uno dei seguenti stati:

    • Riuscito (SUCCEEDED): tutte le attività per il job sono riuscite.
    • Non riuscita (FAILED): almeno un'attività del job non è riuscita.

Per ulteriori informazioni, consulta gli stati dei job e gli stati delle attività nella documentazione di riferimento.

Coda e pianificazione dei job

In genere, i job hanno maggiori probabilità di essere eseguiti e completati prima se sono più piccoli e richiedono solo alcune risorse comuni. Per l'esempio di job nella documentazione di Batch, che in genere sono molto piccoli e utilizzano risorse minime, l'esecuzione potrebbe avvenire in pochi minuti.

In particolare, il tempo impiegato da un job per completare le code e la pianificazione varia a seconda dei job e in momenti diversi in base ai seguenti fattori:

  • Disponibilità delle risorse del job: la disponibilità delle risorse richieste del job nelle località consentite.

    Innanzitutto, un job non può essere eseguito se specifichi risorse non offerte in quella località: in questo caso il job non riesce e viene visualizzato un errore di disponibilità della zona.

    In secondo luogo, un job ha maggiori probabilità di subire ritardi o errori se una delle risorse richieste ha una capacità ridotta rispetto alla domanda attuale a causa di errori di disponibilità delle risorse. Di conseguenza, il job potrebbe essere eseguito prima se hai bisogno di meno risorse più comuni e non ne limiti l'esecuzione in qualsiasi zona di una regione.

    Per ulteriori informazioni sulle risorse per un job, consulta Esecuzione di job in questo documento. Per ulteriori informazioni sulle località che puoi specificare per un job batch e sulle sue risorse, consulta la pagina Località.

  • Priorità job: la priorità di un job in relazione alle priorità di altri job nel progetto.

    Facoltativamente, puoi specificare la priorità di un job includendo il flag --priority per gcloud CLI o il campo JSON priority. Puoi definire la priorità di un job come un numero compreso tra 0 (priorità più bassa) e 99 (priorità massima). L'impostazione di una priorità più alta può aiutare un job a essere eseguito prima dei job a priorità più bassa nel tuo progetto.

    Se non configuri la priorità di un job, per impostazione predefinita viene utilizzata la priorità più bassa, 0. Se due job in coda hanno la stessa priorità, il job creato per primo ha la priorità più alta.

  • Quote e limiti: le soglie del progetto per le risorse e le richieste Google Cloud.

    Non è possibile eseguire un job se supera un limite o la quota del progetto per una qualsiasi delle risorse o delle richieste richieste. In questo caso, il job potrebbe ritardare un job e riprovare in un secondo momento oppure non riuscire a eseguire il job e visualizzare un errore correlato.

    Puoi evitare ritardi ed errori per il tuo job creando job che rispettino tutti i limiti pertinenti e garantendo che il tuo progetto disponga di una quota pertinente sufficiente. Per ulteriori informazioni, consulta Quote e limiti batch.

Esecuzione del job

Il tempo necessario per l'esecuzione di un job può variare in base alla pianificazione dell'attività e alle risorse del job.

Pianificazione attività

Durante l'esecuzione di un job, le sue attività vengono pianificate in base al campo del criterio di pianificazione (schedulingPolicy), che consente di specificare una delle seguenti opzioni:

  • Il più presto possibile (AS_SOON_AS_POSSIBLE) (impostazione predefinita): le attività vengono eseguite non appena le risorse sono disponibili e possono essere eseguite in parallelo. La quantità di attività eseguite contemporaneamente dipende dalle attività parallele per VM consentite dalle risorse del job e da altre opzioni di configurazione, come spiegato nella sezione Risorse job di questo documento.
  • In ordine (IN_ORDER): le attività vengono eseguite una alla volta in ordine crescente.

Risorse job

Ogni job batch viene eseguito su un gruppo di istanze gestite a livello di regione, ovvero un gruppo di una o più istanze di macchine virtuali (VM) Compute Engine corrispondenti, ciascuna situata in una delle zone incluse. Ogni VM ha un hardware dedicato per i core della CPU (in particolare CPU virtuali (vCPU)) e la memoria, che influiscono sulle prestazioni del job, e un disco di avvio, in cui è archiviata un'immagine del sistema operativo e le istruzioni per eseguire il job.

Durante il tempo di esecuzione di un job, Batch crea ed elimina automaticamente le risorse che soddisfano le tue specifiche. Quando crei un job, per configurare le relative risorse specifichi quanto segue:

  • Devi specificare le risorse di calcolo (vCPU, memoria e, se necessario) spazio di archiviazione aggiuntivo sul disco di avvio, necessarie per l'esecuzione di ogni attività, a meno che i valori predefiniti non siano sufficienti. Per saperne di più, consulta il campo delle risorse di calcolo per attività (computeResource) e i campi secondari.

  • Facoltativamente, puoi anche specificare i tipi di VM da utilizzare e le risorse aggiuntive per ogni VM, ad esempio GPU e volumi di archiviazione. Se non specifichi queste opzioni, Batch seleziona tipi di VM compatibili e non aggiunge altre risorse. Per maggiori informazioni, consulta il campo delle risorse delle istanze VM (instances[]) e i campi secondari.

Il numero di VM e il numero di attività eseguibili contemporaneamente su ogni VM variano a seconda dei job in base alla pianificazione delle attività e ai requisiti hardware specificati. Se specifichi l'esecuzione delle attività di un job IN_ORDER, il job ha una VM e esegue una sola attività alla volta. Altrimenti, se le attività di un job eseguono AS_SOON_AS_POSSIBLE, puoi stimare il numero di VM e il numero di attività simultanee utilizzando la seguente formula:

\[{vmsPerJob}=\frac{taskCount}{ParallelTasksPerVm}\]

Questa formula contiene i seguenti valori:

  • \({vmsPerJob}\): il numero massimo di VM per un job. La quantità effettiva di VM create per un job potrebbe essere inferiore a quella indicata, ad esempio se Batch si aspetta che sia più veloce eseguire un job su meno risorse rispetto ad attendere più risorse. Questo valore è limitato anche dai limiti di VM simultanee per job.
  • \({taskCount}\): il numero totale di attività per il job, che definisci utilizzando il campo del conteggio delle attività (taskCount).
  • \({ParallelTasksPerVM}\): il numero massimo di attività che possono essere eseguite contemporaneamente su una VM.

    Questo valore è determinato da tutti i seguenti criteri:

    • Il valore minimo è 1 attività.

    • Il valore massimo è il numero inferiore tra 20 attività e, se definito, il valore del campo Numero massimo di attività parallele per job (parallelism).

    • Se è definito il campo Numero massimo di attività parallele per VM (taskCountPerNode), viene utilizzato questo valore.

      Altrimenti, se taskCountPerNode non è definito, Batch decide un valore dividendo il numero totale di risorse di calcolo (in particolare vCPU) per VM per la quantità richiesta per ogni attività:

      \[{ParallelTasksPerVm}=\frac{vcpusPerVm}{vcpusPerTask}\]

      Questa formula contiene i seguenti valori:

      • \({vcpusPerVm}\): il numero totale di vCPU per VM, determinato dal tipo di macchina delle VM del job.

      • \({vcpusPerTask}\): il numero di vCPU per attività, che viene determinato convertendo le unità del campo vCPU per attività (cpuMilli).

Opzioni di creazione del job

Crea ed esegui un job di base spiega i concetti fondamentali, incluso come definire un elemento eseguibile utilizzando uno script o un'immagine container e come configurare variabili di ambiente predefinite e personalizzate.

Dopo aver appreso le nozioni di base per la creazione di job, valuta la possibilità di creare un job che utilizzi una o più delle seguenti opzioni di configurazione aggiuntive:

  • Controlla l'accesso per un job:

  • Configura opzioni aggiuntive per un job:

    • La pagina Configura la comunicazione delle attività utilizzando una libreria MPI spiega come configurare un job con attività interdipendenti che comunicano tra loro su diverse VM utilizzando una libreria MPI (Message Passing Interface). Un caso d'uso comune per MPI è costituito da carichi di lavoro HPC (computing ad alte prestazioni) ad alto accoppiamento.

    • Personalizza le risorse su cui viene eseguito un job:

      • Definisci le risorse del job utilizzando un modello di istanza VM. Viene spiegato come specificare un modello di VM di Compute Engine per definire le risorse di un job quando crei un job.

      • Utilizza GPU per un job spiega come definire un job che utilizza una o più GPU (Graphics Processing Unit). I casi d'uso comuni per i job che utilizzano GPU includono carichi di lavoro intensivi di elaborazione dati o di machine learning (ML).

      • Utilizzare volumi di archiviazione per un job spiega come definire un job in grado di accedere a uno o più volumi di archiviazione esterni. Le opzioni di archiviazione includono dischi permanenti nuovi o esistenti, SSD locali nuovi, bucket Cloud Storage esistenti e un file system di rete (NFS) esistente come una condivisione file di Filestore.

      • La panoramica dell'ambiente del sistema operativo VM fornisce una panoramica di quando e come è possibile personalizzare l'ambiente del sistema operativo VM per un job, inclusi i dischi di avvio e l'immagine del sistema operativo VM del job.

    • Ottimizzare i vari aspetti di un lavoro:

      • Migliora il monitoraggio e l'analisi:

      • La pagina Automatizza i nuovi tentativi delle attività spiega come ritentare automaticamente le attività di un job dopo tutti gli errori o quelli specificati. I nuovi tentativi automatici possono contribuire a ridurre le difficoltà relative alla risoluzione dei problemi e il tempo di esecuzione complessivo necessario per i job che presentano errori temporanei. Ad esempio, utilizza i tentativi automatici per un job eseguito su VM spot, che offrono sconti significativi, ma che potrebbero non essere sempre disponibili e possono essere prerilasciate in qualsiasi momento.

      • Coalloca le VM per ridurre la latenza spiega come ridurre la latenza di rete tra le VM di un job richiedendo che le VM siano posizionate fisicamente l'una vicino all'altra. Questo vantaggio in termini di prestazioni può essere particolarmente utile per i job con comunicazioni di rete frequenti tra le VM, ad esempio le attività che comunicano utilizzando le librerie MPI.

      • Garantisci la disponibilità delle risorse utilizzando le prenotazioni delle VM, spiega come configurare un job che può essere eseguito su VM prenotate. L'utilizzo di VM prenotate può aiutarti a ridurre al minimo il tempo di pianificazione di un job, prevenire errori di disponibilità delle risorse e ottimizzare i costi.

      • Usa flusso di immagini spiega come migliorare i tempi di avvio dei job mediante il trasferimento di flussi di immagini container da Artifact Registry.

  • Utilizza servizi aggiuntivi per creare ed eseguire job:

Passaggi successivi