Codice di errore: 0102

Categoria: Runtime: Program Input Buffer Mismatch

Questo errore si verifica quando il runtime XLA rileva una mancata corrispondenza tra le dimensioni di un buffer di memoria previsto da un programma compilato e le dimensioni del buffer effettivamente fornito al momento dell'esecuzione.

Esempio di messaggio di errore:

XlaRuntimeError: INVALID_ARGUMENT: Executable(jit_embedding_pipeline_step_fn) expected parameter 2482 of size 5242880 (bf16[16,1280,40]{2,1,0:T(8,128)(2,1)}) but got buffer with incompatible size 1638400 (bf16[16,1280,40]{1,2,0:T(8,128)(2,1)}): while running replica 0 and partition 0 of a replicated computation (other replicas may have failed as well).

Backend XLA: TPU

Panoramica

Il messaggio di errore indica le dimensioni previste e quelle effettive, nonché le forme e i layout dei tensori. Tieni presente che questi errori possono verificarsi anche se due tensori hanno la stessa forma, ma le loro dimensioni in memoria possono essere diverse se il loro layout fisico (come i dati sono suddivisi in riquadri e disposti sull'hardware) è diverso.

Questi errori sono causati principalmente da:

  • Mancata corrispondenza della configurazione del checkpoint e di XLA: viene addestrato un modello e viene salvato un checkpoint. Il layout fisico dei pesi in quel checkpoint è determinato dalla versione e dalla configurazione esatte di XLA (ad es. flag XLA) in quel momento. In un secondo momento, questo checkpoint viene caricato in un ambiente diverso in cui la configurazione è cambiata. Un nuovo flag, un valore predefinito diverso o una modifica nel codice modello/XLA possono far sì che il runtime si aspetti un layout fisico diverso per i pesi. Quando il vecchio buffer del checkpoint viene passato al nuovo programma XLA compilato, il runtime genera un errore.
  • Layout specifici per hardware/topologia: il compilatore XLA è libero di scegliere layout fisici diversi per i tensori per ottimizzare le prestazioni su hardware diversi. Un layout ottimale per la TPU v4 potrebbe essere diverso da una TPU v5 o anche per diverse sezioni di pod dello stesso chip (ad es. 4x4x4 vs 4x8). L'errore si verifica quando un modello viene compilato con un'ipotesi sul layout di una topologia, ma in fase di runtime viene pianificato su una topologia diversa oppure si verifica un bug nella logica di layout del compilatore per un hardware specifico.

Debug

  • Assicurati che la configurazione sia coerente tra l'esportazione del modello e le nuove esecuzioni dai checkpoint:
    • Evita di utilizzare vecchi checkpoint con nuovo codice, a meno che tu non abbia la certezza che non siano state apportate modifiche che influiscono sul layout.
    • Riesporta il modello salvato: se sospetti una mancata corrispondenza tra checkpoint e configurazione, la soluzione più affidabile è riesportare il modello salvato utilizzando esattamente la stessa base di codice e la stessa configurazione (e attuali) che utilizzi per l'inferenza o il perfezionamento.
    • Controlla le modifiche alla configurazione (ad es. flag XLA) tra le due esecuzioni.
  • Layout specifici per hardware/topologia:
    • Controlla la presenza di mancate corrispondenze tra la versione hardware e la topologia se cambi l'hardware o le topologie.