Bilinen Sorunlar

XLA ile derleme, programlarınızın performansını büyük ölçüde artırabilir, ancak TensorFlow birlikte çalışmasının bilinen birkaç keskin köşesi vardır.

tf.Variable farklı bir cihazda

Hata mesajı : INVALID_ARGUMENT: Trying to access resource <Variable> (defined @ <Loc>) located in device CPU:0 from device GPU:0

XLA kümesi tam olarak bir cihaz üzerinde çalışır ve farklı bir cihazda bulunan tf.Variable okuyamaz veya yazamaz. Genellikle bu hata mesajı, değişkenin başlangıçta doğru cihaza yerleştirilmediğini gösterir. Hata mesajı, sorunlu değişkenin konumunu tam olarak belirtmelidir.

TensorArray TF/XLA interconversion desteklenmiyor

Hata mesajı : Support for TensorList crossing the XLA/TF boundary is not implemented .

XLA, tf.TensorArray destekler. Ancak, TF ve XLA temsilleri arasındaki ara dönüşüm henüz uygulanmadı. Bu hata genellikle TensorArray derlenmiş bloğun içinde kullanıldığında ortaya çıkar, ancak türev dışarı alınır.

Geçici çözüm : türevi alan en dıştaki kapsamı derleyin.

Döngülerin sınırlandırılması (veya backprop'un devre dışı bırakılması) gerekirken TensorFlow

Hata mesajı : 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_loop kullanılarak oluşturulan TF while döngüleri , tüm ara sonuçları bir TensorArray içinde toplayarak geri yayılımı destekler, ancak XLA yalnızca sınırlı TensorArray s'yi destekler.

Geçici çözüm : derlenen tüm while döngülerinin, derleme zamanında bilinen bir sabit değere ayarlanmış maksimum_iterations parametresine sahip olması veya maximum_iterations back_prop=False kullanılarak geri yayılımın devre dışı bırakılması gerekir.

Dinamik tf.TensorArray desteklenmiyor

tf.TensorArray(..., dynamic_size=True) içine yazmalar, dizi orijinal sınırı aştığında bilinmeyen sayıda yeniden tahsis gerektirdiğinden, XLA ile derlenemez.

Geçici çözüm : dizilerinize statik olarak bilinen bir bağlantı sağlayın.

Rastgele sayı üretimi TF tohumunu yok sayar

XLA şu anda rastgele işlemler için TF tohumlarını yok sayıyor. Bu, tf.random.normal veya tf.nn.dropout gibi durum bilgisi olan TF rastgele işlemlerini etkiler. XLA, aynı işlem içindeki her çalıştırmada derleme yeni bir benzersiz tohumla tohumlanmış gibi davranacaktır (işlemin ilk çalıştırması her zaman aynı sonucu verecektir).

Çözüm : tf.random.stateless_uniform veya tf.random.Generator gibi önerilen tf.random.Generator doğrudan kullanın.

Tümevarım değişkenlerinin işlevleri olan sabit olması gereken girdiler desteklenmez

Hata Mesajı : 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, derleme zamanında bir indirgeme işleminin küçültme ekseni veya aktarma boyutları gibi belirli değerlerin bilinmesini gerektirir. Örneğin, indirgeme ekseninin tf.range indüksiyon değişkeninin bir fonksiyonu olarak tanımlandığı durumu düşünün: statik olarak çözümlemek, kullanıcı tarafından istenmeyebilecek tüm döngüyü açmadan mümkün değildir.

Çözüm : Döngüleri açın, örneğin tf.range Python range dönüştürerek.