Problemi noti

Questa pagina descrive i problemi noti che potresti riscontrare durante l'utilizzo di Batch.

Se hai bisogno di ulteriore assistenza per l'utilizzo di Batch, consulta la documentazione relativa alla risoluzione dei problemi o richiedi assistenza.

I log relativi al timeout non indicano se è stato superato il timeout dell'attività o dell'esecuzione

Quando un job ha esito negativo a causa del superamento di un timeout, i log associati al job non indicano se l'errore è stato causato dal timeout dell'attività pertinente o del relativo timeout dell'esecuzione.

Per risolvere questo problema, imposta valori di timeout diversi per attività ed eseguibili. Quindi, puoi identificare se un errore è stato causato dal superamento del timeout dell'attività pertinente o dall'esecuzione eseguibile utilizzando la seguente procedura:

  1. Identifica l'attività, l'esecuzione eseguibile e il tempo di errore di timeout di superamento.

    1. Visualizza i log per il job.

    2. Individua un log in cui sia menzionato il codice di uscita per timeout di superamento, 50005. Questo log contiene un valore textPayload simile al seguente messaggio:

      Task task/JOB_UID-group0-TASK_INDEX/0/0 runnable RUNNABLE_INDEX...exitCode 50005
      

      Da questo log, registra TASK_INDEX come attività non riuscita, RUNNABLE_INDEX come eseguibile non riuscita e il valore timestamp del log come data e ora dell'errore di timeout per superamento.

  2. Identifica l'ora di inizio dell'attività non riuscita.

    1. Visualizza gli eventi di stato dell'attività non riuscita.

    2. Trova l'evento di stato che menziona il seguente messaggio:

      Task state is updated from ASSIGNED to RUNNING
      

      Da questo evento di stato, registra il campo eventTime come ora di inizio dell'attività non riuscita.

  3. Calcola il tempo di esecuzione totale dell'attività non riuscita, \({failedTaskRunTime}\), utilizzando la seguente formula:

    \[{failedTaskRunTime}={failureTime}-{failedTaskStartTime}\]

    Sostituisci i seguenti valori:

    • \({failureTime}\): l'ora dell'errore di timeout superato.
    • \({failedTaskStartTime}\): l'ora di inizio dell'attività non riuscita.
  4. Identifica il timeout superato:

    • Se \({failedTaskRunTime}\) corrisponde al timeout che hai configurato per l'attività non riuscita, il timeout dell'attività non riuscita è stato superato e ha causato l'errore.

    • In caso contrario, il timeout che hai configurato per l'elemento eseguibile non riuscito è stato superato e ha causato l'errore.

I job che utilizzano le prenotazioni potrebbero subire ritardi o venire evitati

Quando provi a creare ed eseguire un job che utilizza prenotazioni di Compute Engine, il batch potrebbe ritardare o impedire erroneamente l'esecuzione del job. In particolare, Batch richiede che i progetti abbiano quote delle risorse di Compute Engine sufficienti anche quando queste quote sono utilizzate da prenotazioni non utilizzate.

Risolvi il problema

Per risolvere il problema di un job, aggiungi un'etichetta con il nome goog-batch-skip-quota-check e il valore true al campo labels a livello di job. Con questa etichetta, Batch ignora la verifica delle quote delle risorse del progetto prima di provare a creare un job.

Ad esempio, per evitare o risolvere questo problema per un job di script di base che può consumare prenotazioni, crea ed esegui un job con la seguente configurazione JSON:

{
  "taskGroups": [
    {
      "taskSpec": {
        "runnables": [
          {
            "script": {
              "text": "echo Hello world from task ${BATCH_TASK_INDEX}"
            }
          }
        ]
      },
      "taskCount": 3
    }
  ],
  "allocationPolicy": {
    "instances": [
      {
        VM_RESOURCES
      }
    ],
  },
  "labels": {
    "goog-batch-skip-quota-check": "true"
  },
  "logsPolicy": {
    "destination": "CLOUD_LOGGING"
  }
}

Sostituisci VM_RESOURCES con le risorse VM che corrispondono alla prenotazione che vuoi che il job utilizzi.

Per ulteriori istruzioni, consulta Creare ed eseguire un job che può utilizzare VM riservate e Definire etichette personalizzate per il job.

Identifica il problema

Questo problema non è indicato da alcun messaggio di errore specifico. Questo problema può invece verificarsi nelle seguenti circostanze:

  • Se il tuo progetto riserva tutte le risorse per le quali dispone della quota, questo problema impedisce tutti i job che specificano quelle risorse.

    Ad esempio, supponiamo che il tuo progetto includa quanto segue:

    • Una quota massima per 16 GPU H100.
    • Una prenotazione per singolo progetto non consumata per 2 VM a3-highgpu-8g, che riserva un totale di 16 GPU H100.

    In questo scenario, questo problema impedisce al progetto di pianificare ed eseguire qualsiasi job configurato correttamente per utilizzare le GPU H100 prenotate.

  • Se il tuo progetto riserva alcune delle risorse per le quali dispone della quota, questo problema potrebbe prevenire o ritardare i job che specificano queste risorse.

    Ad esempio, supponiamo che il tuo progetto includa quanto segue:

    • Una quota massima per 16 GPU H100.
    • Una prenotazione per singolo progetto non consumata per 1 VM a3-highgpu-8g, che riserva un totale di 8 GPU H100.
    • Una VM a3-highgpu-8g configurata per non utilizzare alcuna prenotazione e talvolta eliminata e poi ricreata. (Questa VM utilizza 8 GPU H100 non prenotate quando esiste.)

    In questo scenario, questo problema consente al progetto di pianificare e avviare solo un job configurato correttamente per utilizzare le GPU H100 prenotate quando la VM a3-highgpu-8g non esiste.

I job potrebbero non riuscire quando specifichi immagini di sistema operativo VM di Compute Engine (o personalizzate) con kernel obsoleti

Un job potrebbe non riuscire se specifica un'immagine del sistema operativo VM di Compute Engine che non ha la versione più recente del kernel. Questo problema interessa anche eventuali immagini personalizzate basate su immagini di sistema operativo VM di Compute Engine. Le immagini pubbliche di Compute Engine che causano questo problema non sono facilmente identificate e soggette a modifiche in qualsiasi momento.

Questo problema non è indicato da un messaggio di errore specifico. Considera invece questo problema se hai un job che non funziona in modo imprevisto e specifica un'immagine del sistema operativo VM di Compute Engine o un'immagine personalizzata simile.

Per evitare o risolvere questo problema, puoi:

  1. Se possibile, utilizza immagini Batch o immagini personalizzate basate sulle immagini Batch, che non sono interessate da questo problema.
  2. Se non puoi utilizzare un'immagine batch, prova la versione più recente dell'immagine Compute Engine preferita. In genere, le versioni più recenti delle immagini Compute Engine hanno maggiori probabilità di avere la versione più recente del kernel rispetto alle versioni precedenti.
  3. Se l'ultima versione di un'immagine specifica non funziona, potresti dover provare un sistema operativo diverso o creare un'immagine personalizzata. Ad esempio, se l'ultima versione di Debian 11 non funziona, puoi provare a creare un'immagine personalizzata da una VM di Compute Engine che esegue Debian 11 e che hai aggiornato per utilizzare l'ultima versione del kernel.

Questo problema è causato da una versione obsoleta del kernel nell'immagine del sistema operativo VM che causa il riavvio della VM. Quando un job specifica qualsiasi immagine del sistema operativo VM che non proviene da Batch o è basata su un'immagine batch, Batch installa i pacchetti richiesti sulle VM del job dopo l'avvio. I pacchetti richiesti possono variare a seconda dei job e cambiare nel tempo e potrebbero richiedere che l'immagine del sistema operativo della VM abbia la versione più recente del kernel. Questo problema si verifica quando l'aggiornamento della versione del kernel richiede il riavvio della VM, causando un errore di installazione del pacchetto e del job.

Per saperne di più sulle immagini del sistema operativo delle VM, consulta Panoramica dell'ambiente del sistema operativo per le VM di un job.

I job che utilizzano GPU e immagini del sistema operativo VM con kernel obsoleti potrebbero non riuscire solo durante l'installazione automatica dei driver

Questo problema è strettamente correlato a I job potrebbero non riuscire quando si specificano immagini VM di Compute Engine (o personalizzate) con kernel obsoleti. In particolare, i job che specificano sia un'immagine del sistema operativo VM di Compute Engine (o personalizzata) senza il kernel più recente e che utilizzano GPU potrebbero non riuscire solo se tenti di installare automaticamente i driver GPU. Per questi job, potresti anche risolvere gli errori semplicemente installando manualmente i driver GPU.

Per ulteriori informazioni sulle GPU, consulta la pagina Creare ed eseguire un job che utilizza GPU.