Masalah Dikenal

Kompilasi dengan XLA dapat sangat meningkatkan kinerja program Anda, tetapi interop TensorFlow memiliki sejumlah sudut tajam yang diketahui.

tf.Variable pada perangkat yang berbeda

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

Cluster XLA berjalan tepat di satu perangkat, dan tidak dapat membaca atau menulis ke tf.Variable yang terletak di perangkat yang berbeda. Biasanya pesan kesalahan ini menunjukkan bahwa variabel tidak ditempatkan pada perangkat yang tepat untuk memulai. Pesan kesalahan harus secara tepat menentukan lokasi variabel yang menyinggung.

Interkonversi TensorArray TF/XLA tidak didukung

Pesan kesalahan : Support for TensorList crossing the XLA/TF boundary is not implemented .

XLA mendukung tf.TensorArray . Namun, interkonversi antara representasi TF dan XLA belum diterapkan. Kesalahan ini sering muncul ketika TensorArray digunakan di dalam blok yang dikompilasi, tetapi turunannya diambil di luar.

Solusi : kompilasi lingkup terluar yang mengambil turunan.

TensorFlow while loop perlu dibatasi (atau backprop dinonaktifkan)

Pesan kesalahan : 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 yang dibuat menggunakan tf.while_loop mendukung backpropagation dengan mengumpulkan semua hasil antara dalam TensorArray , tetapi XLA hanya mendukung TensorArray yang dibatasi.

Solusi : semua loop sementara yang dikompilasi harus memiliki parameter maximum_iterations yang disetel ke nilai konstan yang diketahui pada waktu kompilasi, atau backpropagation dinonaktifkan menggunakan back_prop=False .

tf.TensorArray dinamis tidak didukung

Penulisan ke tf.TensorArray(..., dynamic_size=True) tidak dapat dikompilasi dengan XLA, karena penulisan tersebut memerlukan jumlah realokasi yang tidak diketahui ketika array melebihi batas aslinya.

Solusi : berikan ikatan yang diketahui secara statis ke array Anda.

Pembuatan nomor acak mengabaikan benih TF

XLA saat ini mengabaikan benih TF untuk operasi acak. Ini memengaruhi operasi acak TF stateful, seperti tf.random.normal , atau tf.nn.dropout . XLA akan berperilaku seolah-olah kompilasi diunggulkan dengan benih unik baru di setiap proses dalam proses yang sama (proses yang pertama dijalankan akan selalu menghasilkan hasil yang sama).

Solusi : gunakan RNG yang direkomendasikan seperti tf.random.stateless_uniform atau tf.random.Generator secara langsung.

Input yang harus konstan yang merupakan fungsi dari variabel induksi tidak didukung

Pesan Kesalahan : 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 memerlukan nilai tertentu untuk diketahui pada waktu kompilasi, seperti sumbu reduksi dari operasi reduksi, atau dimensi transposisi. Pertimbangkan kasus ketika misalnya sumbu reduksi didefinisikan sebagai fungsi dari variabel induksi tf.range : menyelesaikannya secara statis tidak mungkin tanpa membuka gulungan seluruh loop, yang mungkin tidak diinginkan oleh pengguna.

Solusi : Buka gulungan loop, misalnya dengan mengubah tf.range menjadi range Python .