Google I/O is a wrap! Catch up on TensorFlow sessions View sessions

Các vấn đề đã biết

Biên dịch với XLA có thể cải thiện đáng kể hiệu suất của các chương trình của bạn, nhưng phần tương tác TensorFlow có một số góc nhọn đã biết.

tf.Variable trên một thiết bị khác nhau

Thông báo lỗi: INVALID_ARGUMENT: Trying to access resource <Variable> (defined @ <Loc>) located in device CPU:0 from device GPU:0

XLA cụm chạy vào chính xác một thiết bị, và nó không thể đọc hoặc ghi vào tf.Variable nằm trên một thiết bị khác nhau. Thông thường thông báo lỗi này cho biết rằng biến không được đặt trên đúng thiết bị để bắt đầu. Thông báo lỗi phải chỉ định chính xác vị trí của biến vi phạm.

Chuyển đổi TensorArray TF / XLA không được hỗ trợ

Thông báo lỗi: Support for TensorList crossing the XLA/TF boundary is not implemented .

XLA hỗ trợ tf.TensorArray . Tuy nhiên, interconversion giữa TF và XLA cơ quan đại diện là chưa được thực hiện. Lỗi này thường xảy ra khi các TensorArray được sử dụng bên trong khối biên soạn, nhưng đạo hàm được thực hiện bên ngoài.

Cách giải quyết: biên dịch phạm vi ngoài cùng được dùng đạo hàm.

TensorFlow trong khi các vòng lặp cần được giới hạn (hoặc đã vô hiệu hóa backprop)

Thông báo lỗi: 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 trong khi vòng tạo ra sử dụng tf.while_loop hỗ trợ lan truyền ngược bằng cách tích lũy tất cả các kết quả trung gian trong một TensorArray , nhưng XLA chỉ hỗ trợ giáp TensorArray s.

Cách giải quyết: tất cả biên soạn trong khi vòng cần phải hoặc là có maximum_iterations tham số thiết lập để một giá trị không đổi được biết đến tại thời gian biên dịch, hoặc lan truyền ngược vô hiệu hóa sử dụng back_prop=False .

Động tf.TensorArray không được hỗ trợ

Ghi vào tf.TensorArray(..., dynamic_size=True) không biên dịch được với XLA, như viết như vậy đòi hỏi một số lượng không rõ của tái phân bổ khi mảng vượt quá giới hạn ban đầu.

Cách giải quyết: cung cấp một tĩnh nổi tiếng ràng buộc để mảng của bạn.

Tạo số ngẫu nhiên bỏ qua hạt giống TF

XLA hiện bỏ qua hạt TF cho các hoạt động ngẫu nhiên. Điều này ảnh hưởng stateful TF hoạt động ngẫu nhiên, chẳng hạn như tf.random.normal , hoặc tf.nn.dropout . XLA sẽ hoạt động như thể quá trình biên dịch được gieo bằng một hạt giống duy nhất mới tại mỗi lần chạy trong cùng một quy trình (lần chạy đầu tiên của quy trình sẽ luôn mang lại cùng một kết quả).

Cách giải quyết: sử dụng các RNGs khuyến cáo như tf.random.stateless_uniform hoặc tf.random.Generator trực tiếp.