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.

tf.Variable em um dispositivo diferente

Mensagem de erro: INVALID_ARGUMENT: Trying to access resource <Variable> (defined @ <Loc>) located in device CPU:0 from device GPU:0

Aglomerado XLA é executado em exatamente um dispositivo e não podem ler ou escrever para tf.Variable localizado em um dispositivo diferente. Normalmente, essa mensagem de erro indica que a variável não foi colocada no dispositivo certo para começar. A mensagem de erro deve especificar precisamente a localização da variável ofensiva.

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

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

XLA suporta tf.TensorArray . No entanto, a interconversão entre TF e XLA representações ainda não está implementado. Este erro surge frequentemente quando o TensorArray é usado no interior do bloco compilado, mas o derivado é levado para fora.

Solução: compilar o escopo mais externa, que é a derivada.

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

Mensagem de erro: 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 enquanto lacetes criada usando tf.while_loop apoio retropropagação acumulando todos os resultados intermédios num TensorArray , mas XLA só suporta delimitada TensorArray s.

Solução: todos compilados while precisa se quer ter maximum_iterations parâmetro definido como um valor constante conhecido em tempo de compilação, ou backpropagation desativada usando back_prop=False .

Dinâmica tf.TensorArray não é suportada

Gravações em tf.TensorArray(..., dynamic_size=True) não são compilable com XLA, como tal, escreve exigem um número desconhecido de realocações quando a matriz excede o original encadernado.

Solução: fornecer um conhecido estaticamente ligado a suas matrizes.

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 operações aleatórias TF stateful, 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 em cada execução no mesmo processo (a primeira execução do processo sempre produzirá o mesmo resultado).

Solução: use as RNG recomendados como tf.random.stateless_uniform ou o tf.random.Generator diretamente.