Kod błędu: E0102

Kategoria: Runtime: Program Input Buffer Mismatch

Ten błąd występuje, gdy środowisko wykonawcze XLA wykryje niezgodność między rozmiarem bufora pamięci oczekiwanym przez skompilowany program a rozmiarem bufora, który jest faktycznie udostępniany w czasie wykonywania.

Przykładowy komunikat o błędzie:

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).

Backendy XLA: TPU

Przegląd

Komunikat o błędzie zawiera oczekiwany i rzeczywisty rozmiar, a także kształty i układy tensorów. Pamiętaj, że te błędy mogą wystąpić nawet wtedy, gdy 2 tensory mają ten sam kształt, ale ich rozmiar w pamięci może się różnić, jeśli ich układ fizyczny (sposób kafelkowania i rozmieszczenia danych na sprzęcie) jest inny.

Przyczyny tych błędów to głównie:

  • Niezgodność konfiguracji punktu kontrolnego i XLA: model jest trenowany i zapisywany jest punkt kontrolny. Fizyczny układ wag w tym punkcie kontrolnym zależy od dokładnej wersji i konfiguracji XLA (np. flag XLA) w danym momencie. Później ten punkt kontrolny jest wczytywany w innym środowisku, w którym konfiguracja uległa zmianie. Nowa flaga, inna wartość domyślna lub zmiana w kodzie modelu/XLA może spowodować, że środowisko wykonawcze będzie oczekiwać innego fizycznego układu wag. Gdy stary bufor z punktu kontrolnego zostanie przekazany do nowego skompilowanego programu XLA, środowisko wykonawcze zgłosi błąd.
  • Układy dostosowane do sprzętu i topologii: kompilator XLA może wybierać różne układy fizyczne tensorów, aby optymalizować wydajność na różnych urządzeniach. Układ optymalny dla TPU w wersji 4 może się różnić od układu optymalnego dla TPU w wersji 5, a nawet dla różnych wycinków podów tego samego układu (np. 4x4x4 i 4x8). Błąd występuje, gdy model jest kompilowany z założeniem dotyczącym układu jednej topologii, ale w czasie działania jest planowany w innej topologii lub w logice układu kompilatora dla określonego sprzętu występuje błąd.

Debugowanie

  • Zapewnij spójność konfiguracji między eksportem modelu a ponownymi uruchomieniami z punktów kontrolnych
    • Unikaj używania starych punktów kontrolnych z nowym kodem, chyba że masz pewność, że nie wprowadzono żadnych zmian wpływających na układ.
    • Jeśli podejrzewasz niezgodność punktu kontrolnego lub konfiguracji, najbardziej niezawodnym rozwiązaniem jest ponowne wyeksportowanie zapisanego modelu przy użyciu dokładnie tej samej (i aktualnej) bazy kodu oraz konfiguracji, których używasz do wnioskowania lub dostrajania.
    • Sprawdź, czy między dwoma uruchomieniami nie doszło do zmian w konfiguracji (np. flag XLA).
  • Układy dostosowane do sprzętu lub topologii
    • Jeśli zmieniasz sprzęt lub topologie, sprawdź, czy nie ma niezgodności wersji sprzętu i topologii.