การคอมไพล์ด้วย XLA สามารถปรับปรุงประสิทธิภาพของโปรแกรมของคุณได้อย่างมาก แต่การทำงานร่วมกันของ TensorFlow นั้นมีมุมที่คมชัดอยู่หลายมุม
ไม่รองรับ TensorArray TF / XLA interconversion
ข้อความแสดงข้อผิดพลาด : ไม่ได้ใช้ Support for TensorList crossing the XLA/TF boundary is not implemented
XLA รองรับ tf.TensorArray
อย่างไรก็ตาม interconversion ระหว่าง TF และ XLA การแสดงจะยังไม่ได้ใช้ ข้อผิดพลาดนี้มักเกิดขึ้นเมื่อใช้ TensorArray
ภายในบล็อกที่คอมไพล์แล้ว แต่อนุพันธ์ถูกนำออกไปข้างนอก
วิธีแก้ปัญหา : รวบรวมขอบเขตนอกสุดซึ่งรับอนุพันธ์
TensorFlow ในขณะที่ลูปต้องถูก จำกัด ขอบเขต (หรือปิดการใช้งานแบ็คดรอป)
ข้อความแสดงข้อผิดพลาด : การ 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 ในขณะที่ ลูปที่ สร้างขึ้นโดยใช้ tf.while_loop
สนับสนุน backpropagation โดยการรวบรวมผลลัพธ์ระดับกลางทั้งหมดใน TensorArray
แต่ XLA รองรับเฉพาะ TensorArray
ขอบเขตเท่านั้น
วิธีแก้ปัญหา : คอมไพล์ทั้งหมดในขณะที่ลูปต้องมีพารามิเตอร์ maximum_iterations
ตั้งค่าเป็นค่าคงที่ที่ทราบในเวลาคอมไพล์หรือ backpropagation ปิดใช้งานโดยใช้ back_prop=False
ไม่รองรับ Dynamic tf.TensorArray
เขียนลงใน tf.TensorArray(..., dynamic_size=True)
ไม่สามารถ tf.TensorArray(..., dynamic_size=True)
กับ XLA ได้เนื่องจากการเขียนดังกล่าวต้องการจำนวนการจัดสรรใหม่ที่ไม่รู้จักเมื่ออาร์เรย์เกินขอบเขตเดิม
วิธีแก้ปัญหา : ระบุขอบเขตที่รู้จักแบบคงที่กับอาร์เรย์ของคุณ
การสร้างตัวเลขสุ่มละเว้นเมล็ดพันธุ์ TF
ปัจจุบัน XLA ละเว้นเมล็ดพันธุ์ TF เป็นการดำเนินการแบบสุ่ม สิ่งนี้มีผลต่อการดำเนินการแบบสุ่ม TF แบบ stateful เช่น tf.random.normal
หรือ tf.nn.dropout
XLA จะทำงานราวกับว่าการคอมไพล์นั้นได้รับการเพาะเมล็ดด้วยเมล็ดพันธุ์ใหม่ที่ไม่ซ้ำกันในแต่ละครั้ง ข้อ จำกัด นี้ใช้ไม่ได้กับการสุ่มแบบไร้สัญชาติ
TensorFlow Asserts จะถูกละเว้น
การยืนยันที่สร้างขึ้นโดยใช้ tf.Assert
และฟังก์ชันที่คล้ายกันคือ noops เมื่อคอมไพล์เป็น XLA แม้ว่าโดยหลักการแล้วการสนับสนุนการยืนยันที่เหมาะสมจะเป็นไปได้ แต่ก็อาจทำให้การเพิ่มประสิทธิภาพบางอย่างเป็นไปไม่ได้ (ส่วนใหญ่จะเป็นการหลอมรวมบัฟเฟอร์ที่ใช้ในการยืนยัน)