Problemas Conhecidos

A compilação com o XLA pode melhorar muito o desempenho de seus programas, mas a interoperabilidade do TensorFlow tem vários cantos agudos conhecidos.

A interconversão TensorArray TF / XLA não é compatível

Mensagem de erro : o Support for TensorList crossing the XLA/TF boundary is not implemented .

O XLA oferece suporte a tf.TensorArray . No entanto, a interconversão entre as representações TF e XLA ainda não foi implementada. Esse erro geralmente surge quando o TensorArray é usado dentro do bloco compilado, mas a derivada é tirada de fora.

Solução alternativa : compilar o escopo mais externo que está obtendo a derivada.

TensorFlow while loops precisam ser limitados (ou ter o backprop desativado)

Mensagem de erro : a 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 .

Os loops while do TF criados usando tf.while_loop suportam retropropagação acumulando todos os resultados intermediários em um TensorArray , mas o XLA só suporta TensorArray s limitados.

Solução alternativa : todos os loops while compilados precisam ter o parâmetro maximum_iterations definido como um valor constante conhecido no momento da compilação ou a retropropagação desabilitada usando back_prop=False .

O tf.TensorArray dinâmico não é compatível

As gravações em tf.TensorArray(..., dynamic_size=True) não são compiláveis ​​com XLA, pois essas gravações requerem um número desconhecido de realocações quando a matriz excede o limite original.

Solução alternativa : forneça um limite conhecido estaticamente para seus arrays.

A geração de número aleatório ignora a semente TF

O XLA atualmente ignora as sementes do TF para operações aleatórias. Isso afeta as operações aleatórias do TF com estado, como tf.random.normal ou tf.nn.dropout . O XLA se comportará como se a compilação fosse propagada com uma nova propagação exclusiva a cada execução. Esta limitação não se aplica a operações aleatórias sem estado.

Asserts do TensorFlow são ignorados

Asserções criadas usando tf.Assert e funções semelhantes são noops quando compiladas para XLA. Embora o suporte de asserção adequado seja, em princípio, possível, ele pode tornar impossíveis certas otimizações (principalmente fundindo o buffer no qual a asserção é executada).

Saída não determinística

Na CPU e GPU, a saída pode ser não determinística (igual ao TF adequado).

Solução alternativa : para impor o determinismo, defina a variável de ambiente TF_DETERMINISTIC_OPS como 1 (o mesmo que para TF).