Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
tensorflow
GitHub Repository: tensorflow/docs-l10n
Path: blob/master/site/pt-br/xla/known_issues.md
25115 views

Problemas conhecidos

A compilação com XLA pode melhorar muito o desempenho de seus programas, mas a interoperabilidade com o TensorFlow tem vários problemas conhecidos que devem ser considerados.

tf.Variable em 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 numa tf.Variable localizada em dispositivo diferente. Geralmente, essa mensagem de erro indica que a variável não foi colocada no dispositivo correto. A mensagem de erro deve especificar precisamente a localização da variável ofensiva.

OBSERVAÇÃO: As tf.Variable do tipo int32 são sempre colocadas num host e não podem ser colocadas numa GPU. Como solução alternativa, int64 pode ser usado.

Interconversão TensorArray TF/XLA não suportada

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

O XLA suporta tf.TensorArray. No entanto, a interconversão entre as representações TF e XLA ainda não está implementada. Este erro geralmente surge quando o TensorArray é usado dentro do bloco compilado, mas a derivada é obtida fora.

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

Loops while do TensorFlow precisam ser limitados (ou ter a retropropagação desativada)

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.

Loops while do TF criados usando tf.while_loop suportam retropropagação acumulando todos os resultados intermediários num TensorArray, mas XLA suporta apenas objetos TensorArray limitados.

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

tf.TensorArray dinâmico não suportado

Gravações para tf.TensorArray(..., dynamic_size=True) não são compiláveis ​​com XLA, pois tais gravações exigem um número desconhecido de realocações quando o array exceder o limite original.

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

Geração de números aleatórios ignora a semente TF

Atualmente, o XLA ignora sementes TF para operações aleatórias. Isto afeta operações aleatórias de TF stateful, como tf.random.normal ou tf.nn.dropout. O XLA se comportará como se a compilação tivesse sido propagada com uma nova semente exclusiva a cada execução do mesmo processo (a primeira execução do processo sempre produzirá o mesmo resultado).

Solução alternativa: use geradores de números aleatórios recomendados, como tf.random.stateless_uniform ou tf.random.Generator diretamente.

Entradas que precisam ser constantes e que são funções de variáveis ​​de indução não são suportadas

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

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

Solução alternativa: desenrole os loops, por exemplo, convertendo tf.range para range do Python.

OBSERVAÇÃO: A mensagem de erro acima não é exclusiva deste problema e pode surgir devido a outras limitações ou bugs.