Категория: Выполнение: Несоответствие входных данных программы
Эта ошибка возникает, когда среда выполнения XLA обнаруживает, что входной буфер, предоставленный во время выполнения, не соответствует метаданным, ожидаемым скомпилированной программой, таким как размер буфера или тип пространства памяти PJRT.
Пример сообщения об ошибке:
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) между двумя запусками.
- Специфические для оборудования/топологии схемы
- При смене оборудования или топологии проверьте наличие несоответствий в версиях оборудования и топологии.