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.