Есть вопрос? Присоединяйтесь к сообществу на форуме TensorFlow. Посетите форум.

Известные проблемы

Компиляция с помощью XLA может значительно улучшить производительность ваших программ, но взаимодействие с TensorFlow имеет ряд известных острых углов.

Взаимное преобразование TensorArray TF / XLA не поддерживается

Сообщение об ошибке : Support for TensorList crossing the XLA/TF boundary is not implemented .

XLA поддерживает tf.TensorArray . Тем не менее, взаимопревращение между представлениями TF и XLA еще не реализовано. Эта ошибка часто возникает, когда TensorArray используется внутри скомпилированного блока, а производная берется извне.

Обходной путь : скомпилируйте самую внешнюю область видимости, которая принимает производную.

TensorFlow, пока циклы должны быть ограничены (или отключено обратное распространение)

Сообщение об ошибке : XLA compilation requires a fixed tensor list size. Set the max number of elements. This could also happen if you're using a TensorArray in a while loop that does not have its maximum_iteration set, you can fix this by setting maximum_iteration to a suitable value .

Циклы TF while, созданные с помощью tf.while_loop поддерживают обратное распространение путем накопления всех промежуточных результатов в TensorArray , но XLA поддерживает только ограниченные TensorArray .

Временное решение: все компилируется в то время как петли должны либо иметь maximum_iterations параметра на значение константы , известном во время компиляции, или обратное распространение отключено с помощью back_prop=False .

Динамический tf.TensorArray не поддерживается

tf.TensorArray(..., dynamic_size=True) в tf.TensorArray(..., dynamic_size=True) не компилируются с XLA, поскольку такие записи требуют неизвестного количества перераспределений, когда массив превышает исходную границу.

Обходной путь : предоставьте статически известную привязку к вашим массивам.

Генерация случайных чисел игнорирует начальное число TF

XLA в настоящее время игнорирует начальные числа TF для случайных операций. Это влияет на случайные операции TF с сохранением состояния, такие как tf.random.normal или tf.nn.dropout . XLA будет вести себя так, как если бы компиляция была засеяна новым уникальным семенем при каждом запуске. Это ограничение не распространяется на случайные операции без сохранения состояния.

Утверждения TensorFlow игнорируются

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

Недетерминированный вывод

На CPU и GPU вывод может быть недетерминированным (как и сам TF).

Решение: Для того, чтобы обеспечить соблюдение детерминизма, установить TF_DETERMINISTIC_OPS переменного окружение 1 ( то же самое , как для TF).