Danh mục: Thời gian biên dịch: Đầu ra không khớp khi giảm tải trên máy chủ
Lỗi này xảy ra khi một tensor được chuyển rõ ràng sang bộ nhớ máy chủ được trả về dưới dạng đầu ra của chương trình, nhưng chữ ký đầu ra của chương trình không được định cấu hình để dự kiến bộ nhớ máy chủ.
Thông báo lỗi mẫu:
INVALID_ARGUMENT: Tensor which is moved to host (starting from tuple.64) is returned from the entry computation but the layout for this output is not set to host memory.
Các chương trình phụ trợ XLA: TPU, GPU
Tổng quan
Khi trình biên dịch gặp một chú giải để giảm tải một Tensor sang máy chủ lưu trữ (CPU), trình biên dịch sẽ theo dõi vị trí của Tensor đó thông qua đồ thị tính toán cho đến khi một trong 3 sự kiện sau xảy ra:
- Di chuyển đến thiết bị: Một chú thích phù hợp sẽ di chuyển tensor trở lại bộ tăng tốc.
- Tính toán trên máy chủ lưu trữ: Tensor được sử dụng bởi một thao tác phía máy chủ lưu trữ.
- Kết thúc chương trình: Tensor đạt đến cuối chương trình và trở thành một đầu ra.
Lỗi này xảy ra trong trường hợp #3. Tensor nằm ở bộ nhớ máy chủ lưu trữ vào cuối quá trình thực thi, nhưng chữ ký tính toán mục nhập của chương trình XLA xác định đầu ra cụ thể đó nằm trong Bộ nhớ thiết bị. Vì trình biên dịch không thể thay đổi ngầm định giao diện của quá trình tính toán mục nhập, nên trình biên dịch sẽ báo lỗi.
Gỡ lỗi
Để giải quyết lỗi này, hãy xác định xem bạn có ý định để tensor này là một đầu ra trên Máy chủ hay liệu tensor này phải được di chuyển trở lại Thiết bị trước khi trả về hay không.
Dự kiến trả về trên Máy chủ: Nếu muốn rõ ràng tensor này được trả về trong bộ nhớ máy chủ (tránh chuyển lại sang thiết bị), bạn nên đặt rõ ràng không gian bộ nhớ đầu ra của phép tính nhập thành Bộ nhớ máy chủ cho đầu ra cụ thể này.
Dự định trả về trên Thiết bị: Nếu tensor được dự định ở lại trên thiết bị hoặc quay lại thiết bị trước khi chương trình kết thúc, thì có thể bạn đã bỏ lỡ một chú thích. Chèn một chú thích phù hợp để di chuyển tensor trở lại thiết bị.
Nếu không rõ nguồn của tensor được giảm tải, hoặc bạn không tìm thấy vị trí thiếu chú giải "move to device" (di chuyển đến thiết bị), hãy dùng tính năng ghi nhật ký XLA để theo dõi các hướng dẫn.
- Bật tính năng ghi nhật ký: Nếu bạn đang sử dụng Google Cloud TPU, hãy chạy lại chương trình bằng cờ sau:
--vmodule=host_offloader=1. - Phân tích nhật ký: Tìm đầu ra "trace" trong nhật ký. Thao tác này sẽ cho thấy đường dẫn của tensor bắt đầu từ chỉ dẫn chuyển. Sử dụng tính năng này để xác định chính xác vị trí mà tensor đạt đến ranh giới chương trình mà không bị di chuyển trở lại thiết bị.