Obrigado por sintonizar o Google I/O. Veja todas as sessões sob demanda Assista sob demanda

Problemas conhecidos

A compilação com XLA pode melhorar muito o desempenho de seus programas, mas a interoperabilidade do TensorFlow tem vários cantos afiados 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

O cluster XLA é executado em exatamente um dispositivo e não pode ler ou gravar em 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 incorreta.

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 as representações TF e XLA ainda não está implementada. Esse erro geralmente ocorre quando o TensorArray é usado dentro do bloco compilado, mas o derivado é levado para fora.

Solução alternativa : compile o escopo mais externo que está derivando.

Os loops while do TensorFlow 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 while loops criados usando tf.while_loop suportam backpropagation acumulando todos os resultados intermediários em um TensorArray , mas XLA suporta apenas TensorArray s limitados.

Solução alternativa : todos os loops while compilados precisam ter o parâmetro maximum_iterations definido para um valor constante conhecido em tempo de compilação ou backpropagation desabilitado usando back_prop=False .

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

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

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

A geração de números aleatórios ignora a semente do TF

O XLA atualmente ignora as sementes do TF para operações aleatórias. Isso afeta operações aleatórias de 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 semente exclusiva em cada execução dentro do mesmo processo (a primeira execução do processo sempre produzirá o mesmo resultado).

Solução alternativa : use os RNGs recomendados , como tf.random.stateless_uniform ou o tf.random.Generator diretamente.

As entradas obrigatórias que são funções de variáveis ​​de indução não são suportadas

Mensagem de erro : A XLA compilation requires that operator arguments that represent shapes or dimensions be evaluated to concrete values at compile time. This error means that a shape or dimension argument could not be evaluated at compile time, usually because the value of the argument depends on a parameter to the computation, on a variable, or on a stateful operation such as a random number generator .

XLA requer que certos valores sejam conhecidos em tempo de compilação, como eixo de redução de uma operação de redução ou dimensões de transposição. Considere o caso em que, por exemplo, o eixo de redução é definido em função de uma variável de indução de tf.range : resolvê-lo estaticamente não é possível sem desenrolar o loop inteiro, o que pode não ser desejado pelo usuário.

Solução alternativa : Desenrole loops, por exemplo, convertendo tf.range em Python range .