Kategorie:CompileTime: SparseCore No Viable Logical Replica Count
Dieser Fehler tritt auf, wenn der XLA:SparseCore-Compiler keine gültige Konfiguration für die Anzahl logischer Replikate ermitteln kann, mit der die Arbeitslast in den lokalen Scratchpad-Speicher (Tilespmem) des SparseCore passt.
Beispiele für Fehlermeldungen:
XLA:TPU compile permanent error. Compilation failure: No viable logical replica count for the embedding table with metadata: max_nz_per_row = 141352, max_unique_nz_per_row = 8, feature_width = 8, sample_count = 204800 (last tried split factor for vector splitting = 1, last tried split factor for sample dimension splitting = 1, fixed_size_allocation_bytes = 410880, row_dependent_size_allocation_bytes = 1696224, total_spmem_size_bytes = 524288) ...
XLA-Back-Ends:TPU
Übersicht
Dieser Fehler tritt nur bei SparseCore-Anwendungsfällen auf, insbesondere bei Large Embedding Models (LEMs).
Die Anzahl logischer Replikate ist ein interner Compilerparameter, der bestimmt, wie Eingabe-Batches partitioniert werden, um den Druck auf die Zuweisung von Scratchpads zu verringern. Der Compiler versucht, die Arbeitslast in kleinere Teile (Replikate) aufzuteilen, damit die für jeden Teil erforderlichen Zwischenpuffer in den begrenzten Scratchpad-Speicher des SparseCore passen. Im Allgemeinen wird durch eine höhere Anzahl logischer Replikate der Zuweisungsdruck verringert, da jeweils kleinere Datenbatches verarbeitet werden.
Dieser Fehler gibt an, dass der Compiler auch nach dem Ausprobieren verschiedener Aufteilungskonfigurationen keine Einrichtung finden konnte, in der die erforderlichen Puffer in den Tilespmem-Speicher passen. Die Zuweisungsgröße wird durch eine Kombination aus folgenden Faktoren bestimmt:
sample_count: Die Anzahl der Einbettungs-Lookup-IDs, die jedem SparseCore zugewiesen sind (abgeleitet aus der Batchgröße).feature_width: Die Größe der Einbettungsdimension.max_nz_per_row: Die maximale Anzahl nicht eindeutiger IDs für die Einbettungssuche für alle SparseCores.max_unique_nz_per_row: Die maximale Anzahl eindeutiger IDs für die Einbettungssuche.
Debugging
Um diesen Fehler zu beheben, müssen Sie den Arbeitsspeicherbedarf des SparseCore-Scratchpads reduzieren.
1. Metadatenschätzungen verbessern
Der Compiler weist Speicher basierend auf max_nz_per_row und max_unique_nz_per_row zu. Wenn diese Werte konservativ geschätzt werden (d.h. viel höher als für die tatsächlichen Daten erforderlich), reserviert der Compiler unnötigen Speicherplatz, was zu diesem Fehler führt. Achten Sie darauf, dass diese Parameter die tatsächliche ID-Verteilung Ihres Datensatzes genau widerspiegeln.
Sie können Feedback-Directed Optimization (FDO) verwenden, um optimale Werte für diese Parameter zu ermitteln.
2. Batchgröße reduzieren
sample_count wird direkt aus der globalen Batchgröße abgeleitet. Wenn Sie die Batchgröße verringern, muss jeder SparseCore pro Schritt weniger Daten verarbeiten. Dadurch wird die Größe der erforderlichen Scratchpad-Puffer reduziert.