Danh sách kiểm tra cho phiên dịch viên StableHLO

Trong tài liệu này, chúng tôi tóm tắt các nguyên tắc triển khai và xem xét hoạt động cho phiên dịch. Chúng tôi đã chủ ý đưa vào một số mục hành động phụ liên quan đến trình xác minh và suy luận kiểu dữ liệu, với ý tưởng cải thiện các khía cạnh đó cùng với quá trình triển khai trình thông dịch.

Trong khi triển khai op

  1. Cung cấp chiến lược kiểm thử được viết rõ ràng (trong nội dung mô tả PR) tương tự như chiến lược này để dùng làm tài liệu tham khảo trong khi xem xét các phương thức xác minh và suy luận kiểu dữ liệu cũng như các hoạt động kiểm thử tương ứng. Người đánh giá sẽ kiểm tra kỹ để đảm bảo nội dung mô tả có tính toàn diện.
  2. Hãy tham khảo ý kiến của hlo_evaluator để xác định các chi tiết triển khai khó khăn và thiếu sót có thể xảy ra về chức năng.
  3. Gửi phiếu yêu cầu hỗ trợ cho các thành phần phần mềm tương ứng nếu bạn phát hiện lỗi hoặc thiếu chức năng.

Sau khi triển khai hoạt động mở rộng

  1. Trong StablehloOps.td:

    1. Hãy đảm bảo summary trong ODS của tác vụ vận hành tuân theo định dạng chuẩn. ( liên quan)
    2. Thêm các nhận xét tham chiếu đến các nhãn ràng buộc (ví dụ: Cn hoặc In) theo thông số kỹ thuật ở định dạng xyz_cn hoặc xyz_in đối với op XyzOp, để xác định sự tương ứng giữa các quy tắc ràng buộc trong ODS và thông số kỹ thuật. Ví dụ sau cho thấy cách thêm nhãn ràng buộc dưới dạng nhận xét cùng với mlir TraitsTypeConstraints. Lưu ý: xyz_c4 là các điều kiện ràng buộc được xác định trong lớp StableHLO_FooOp (ví dụ: StableHLO_ShapedInterfaceOp, StableHLO_UnaryElementwiseOp, StableHLO_Op, v.v.).

       def StableHLO_XyzOp: StableHLO_FooOp<"xyz", [Trait1,
           Trait2 /*xyz_c1, xyz_c2*/, InferTensorType /*xyz_c3*/]> { /*xyz_c4*/
            ...
         let summary = "Xyz operation";
         let arguments = (ins
            1DTensorOf<[HLO_Float]>:$a, /*xyz_c5, xyz_i1*/
            HLO_Tensor:$b, /*xyz_i2*/
            ....
         );
      );
      
  2. Trong TypeInference.cppStablehloOps.cpp:

    1. Xoá các bình luận có nội dung như "Xác minh các thuộc tính sau: ...".
    2. Thêm các nhận xét tham chiếu đến các nhãn ràng buộc (ví dụ: Cn hoặc In) trong thông số kỹ thuật ở định dạng xyz_cn hoặc xyz_in đối với op XyzOp, để xác định những phần của trình xác minh và hàm hình dạng tương ứng với những ràng buộc trong quy cách.
      1. Bạn có thể có một nhận xét với nhiều nhãn ràng buộc hoặc có nhiều nhận xét có cùng một nhãn ràng buộc. Tất cả phụ thuộc vào cách triển khai các điều kiện ràng buộc. Nếu có các điều kiện ràng buộc liên tiếp, hãy nén các hạn chế đó dưới dạng xyz_cn...xyz_cm, xyz_in...xyz_jn.
      2. Trong trường hợp có sự không khớp giữa những quy tắc ràng buộc trong quy trình triển khai VS và quy cách trong quy cách, hãy đảm bảo có một vấn đề chưa được giải quyết phản ánh sự khác biệt đó.
  3. Trong kiểm thử thông dịch:

    1. Thêm một tệp có tên interpret_<op_mnemonic>.mlir.
    2. Viết mã kiểm thử theo nguyên tắc kiểm thử.
  4. Trong thư mục testdata:

    1. Chạy mọi hoạt động kiểm thử đã tắt mà hoạt động mới được thêm vào.
    2. Nếu kiểm thử đạt, hãy bật các kiểm thử đó bằng cách chuyển đổi RUN-DISABLED thành RUN.
    3. Nếu quy trình kiểm thử không thành công vì một lý do nào đó ngoài lý do không khớp về độ chính xác, hãy khắc phục quy trình triển khai/kiểm thử.
    4. Đối với các trường hợp không khớp chính xác, hãy gắn thẻ bài kiểm thử bằng RUN-DISABLED(#1278) (nếu chưa thực hiện).
  5. Trong ops_stablehlo.mlir:

    1. Đảm bảo rằng có ít nhất một kiểm thử (tích cực hoặc âm tính) đối với mỗi quy tắc ràng buộc trong trình xác minh và phương thức suy luận kiểu dữ liệu; những quy tắc ràng buộc trong ODS sẽ không được kiểm thử. Các kiểm thử này chủ yếu sẽ là âm tính, kiểm thử rằng các giới hạn không được đáp ứng hoặc là tích cực, kiểm thử để đảm bảo rằng hình dạng suy luận là chính xác.
    2. Đảm bảo tất cả các bài kiểm thử liên quan đến cửa hàng đang được kiểm thử được đặt cùng nhau.
    3. Đảm bảo tất cả các bài kiểm thử liên quan đến cửa sổ đang kiểm thử đều được thêm vào trước một macro có độ sáng CHECK-LABEL.
    4. Chọn tên hàm của kiểm thử bằng định dạng xyz_cn_im_... cho các điều kiện ràng buộc kiểm thử hàm Cn, Im, v.v. cho op XyzOp. Trong trường hợp định dạng đề xuất không áp dụng, hãy giữ tên hiện tại.
    5. Sau khi hoàn tất bước trên, hãy sắp xếp tất cả bài kiểm thử liên quan đến hoạt động đang được kiểm thử theo thứ tự bảng chữ cái dựa trên tên hàm.
    6. Hãy tiếp tục thêm bài kiểm thử cho đến khi ccov cho thấy mức độ sử dụng >= 90% cho op.
  6. Trong infer_stablehlo.mlir:

    1. Đảm bảo tất cả các quy tắc ràng buộc liên quan đến kiểm thử suy luận hình dạng đều có trong tệp này theo các nguyên tắc đặt tên tương tự nêu trên.
    2. Di chuyển mọi bài kiểm thử suy luận hình dạng từ tệp ops_stablehlo.mlir vào tệp này.
  7. Trong spec.md:

    1. Thêm một đường liên kết đến interpret_<op_mnemonic>.mlir vào phần "Ví dụ" (ví dụ: Ví dụ khác).
    2. Hãy đảm bảo rằng quy cách chỉ có 1 ví dụ.
    3. Đảm bảo ví dụ về thông số kỹ thuật tuân thủ nguyên tắc kiểm thử.
    4. Đảm bảo rằng bài kiểm thử mẫu thông số kỹ thuật có thể diễn giải được.
    5. Đảm bảo ví dụ về thông số kỹ thuật giống với ví dụ trong ODS.
  8. Trong status.md:

    1. Cập nhật cột "Phiên dịch" thành yes.