Код ошибки: 0102

Категория: Время выполнения: Несоответствие входного буфера программы

Эта ошибка возникает, когда среда выполнения XLA обнаруживает несоответствие между размером буфера памяти, ожидаемым скомпилированной программой, и размером буфера, фактически предоставленного во время выполнения.

Пример сообщения об ошибке:

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

Бэкенды XLA: TPU

Обзор

В сообщении об ошибке указаны как ожидаемый, так и фактический размеры, а также форма и расположение тензоров. Следует отметить, что эти ошибки могут возникать даже в том случае, если два тензора имеют одинаковую форму, но их размер в памяти может отличаться, если их физическое расположение (способ размещения и организации данных на аппаратном уровне) различно.

Эти ошибки в основном вызваны:

  • Несоответствие между контрольной точкой и конфигурацией XLA — модель обучена, и сохранена контрольная точка. Физическое расположение весов в этой контрольной точке определяется точной версией и конфигурацией XLA (например, флагами XLA) на тот момент. Позже эта контрольная точка загружается в другую среду, где конфигурация изменилась. Новый флаг, другое значение по умолчанию или изменение в коде модели/XLA могут привести к тому, что среда выполнения будет ожидать другого физического расположения весов. Когда старый буфер из контрольной точки передается в новую скомпилированную программу XLA, среда выполнения выдает ошибку.
  • Специфические для оборудования/топологии схемы расположения — Компилятор XLA может свободно выбирать различные физические схемы расположения тензоров для оптимизации производительности на различном оборудовании. Схема, оптимальная для TPU версии 4, может отличаться от схемы TPU версии 5 или даже от схемы для разных срезов одного и того же чипа (например, 4x4x4 против 4x8). Ошибка возникает, когда модель компилируется с предположением о схеме расположения одной топологии, но во время выполнения она планируется для другой топологии, или когда в логике компиляции компилятора для конкретного оборудования обнаруживается ошибка.

Отладка

  • Обеспечьте согласованность конфигураций между экспортом модели и повторными запусками из контрольных точек:
    • Избегайте использования старых контрольных точек с новым кодом, если вы не уверены, что не было внесено никаких изменений, влияющих на структуру.
    • Повторный экспорт сохраненной модели: Если вы подозреваете несоответствие контрольной точки/конфигурации, наиболее надежным решением будет повторный экспорт сохраненной модели с использованием той же самой (и актуальной) кодовой базы и конфигурации, которые вы используете для вывода или тонкой настройки.
    • Проверьте наличие изменений в конфигурации (например, флагов XLA) между двумя запусками.
  • Специфические для оборудования/топологии схемы:
    • При смене оборудования или топологии проверьте наличие несоответствий в версиях оборудования и топологии.