Mã lỗi: 0102

Danh mục: Thời gian chạy: Lỗi không khớp bộ đệm đầu vào của chương trình

Lỗi này xảy ra khi thời gian chạy XLA phát hiện thấy sự không khớp giữa kích thước của vùng đệm bộ nhớ mà một chương trình đã biên dịch dự kiến và kích thước của vùng đệm thực sự được cung cấp tại thời gian thực thi.

Thông báo lỗi mẫu:

XlaRuntimeError: INVALID_ARGUMENT: Executable(jit_embedding_pipeline_step_fn) expected parameter 2482 of size 5242880 (bf16[16,1280,40]{2,1,0:T(8,128)(2,1)}) but got buffer with incompatible size 1638400 (bf16[16,1280,40]{1,2,0:T(8,128)(2,1)}): while running replica 0 and partition 0 of a replicated computation (other replicas may have failed as well).

Các chương trình phụ trợ XLA: TPU

Tổng quan

Thông báo lỗi cho biết cả kích thước dự kiến và kích thước thực, cũng như hình dạng và bố cục của tensor. Xin lưu ý rằng những lỗi này có thể xảy ra ngay cả khi 2 tensor có cùng hình dạng nhưng kích thước của chúng trong bộ nhớ có thể khác nhau nếu bố cục thực của chúng (cách dữ liệu được chia ô và sắp xếp trên phần cứng) khác nhau.

Những lỗi này chủ yếu là do:

  • Lỗi không khớp giữa điểm kiểm tra và cấu hình XLA – Một mô hình được huấn luyện và một điểm kiểm tra được lưu. Bố cục thực tế của các trọng số trong điểm kiểm tra đó được xác định bằng phiên bản và cấu hình XLA chính xác (ví dụ: cờ XLA) tại thời điểm đó. Sau đó, điểm kiểm tra này được tải trong một môi trường khác, nơi cấu hình đã thay đổi. Một cờ mới, giá trị mặc định khác hoặc thay đổi trong mã mô hình/XLA có thể khiến thời gian chạy dự kiến một bố cục thực tế khác cho các trọng số. Khi bộ đệm cũ từ điểm kiểm tra được truyền đến chương trình XLA mới đã biên dịch, thời gian chạy sẽ gặp lỗi.
  • Bố cục dành riêng cho phần cứng/cấu trúc liên kết – Trình biên dịch XLA có thể tự do chọn các bố cục vật lý khác nhau cho các tensor để tối ưu hoá hiệu suất trên nhiều phần cứng. Bố cục tối ưu cho TPU phiên bản 4 có thể khác với TPU phiên bản 5, hoặc thậm chí khác với các lát nhóm khác nhau của cùng một chip (ví dụ: 4x4x4 so với 4x8). Lỗi này xảy ra khi một mô hình được biên dịch với giả định về bố cục của một cấu trúc liên kết, nhưng trong thời gian chạy, mô hình đó được lên lịch trên một cấu trúc liên kết khác hoặc có lỗi trong logic bố cục của trình biên dịch cho một phần cứng cụ thể.

Gỡ lỗi

  • Đảm bảo tính nhất quán về cấu hình giữa quá trình xuất mô hình và chạy lại từ các điểm kiểm tra:
    • Tránh sử dụng các điểm kiểm tra cũ với mã mới, trừ phi bạn chắc chắn rằng không có thay đổi nào ảnh hưởng đến bố cục.
    • Xuất lại Mô hình đã lưu: Nếu bạn nghi ngờ có sự không khớp giữa điểm kiểm tra/cấu hình, thì giải pháp đáng tin cậy nhất là xuất lại mô hình đã lưu bằng chính cơ sở mã và cấu hình (hiện tại) mà bạn đang dùng để suy luận hoặc tinh chỉnh.
    • Kiểm tra các thay đổi về cấu hình (ví dụ: cờ XLA) giữa hai lần chạy.
  • Bố cục dành riêng cho phần cứng/cấu trúc liên kết:
    • Kiểm tra xem có sự khác biệt về phiên bản phần cứng và cấu trúc liên kết hay không nếu bạn chuyển đổi phần cứng hoặc cấu trúc liên kết.