เช็กลิสต์สำหรับล่ามของ StableHLO

เอกสารนี้จะสรุปหลักเกณฑ์ในการใช้งานและการตรวจสอบตัวเลือกสำหรับล่าม เราได้ตั้งใจรวมรายการการทำงานเสริม 2-3 รายการที่เกี่ยวข้องกับตัวตรวจสอบและการอนุมานประเภท โดยมีแนวคิดที่จะพัฒนาไปพร้อมๆ กับการใช้งานล่าม

ขณะติดตั้งใช้งานการดำเนินการ

  1. ระบุกลยุทธ์การทดสอบที่เขียนอย่างชัดเจน (ในคำอธิบาย PR) ซึ่งคล้ายกับนี้เพื่อใช้เป็นข้อมูลอ้างอิงขณะตรวจสอบวิธีการยืนยันและการอนุมานประเภท รวมถึงการทดสอบที่เกี่ยวข้อง เจ้าหน้าที่จะตรวจสอบอีกครั้งว่าคำอธิบายครอบคลุม
  2. โปรดปรึกษา hlo_evaluator เพื่อระบุรายละเอียดการใช้งานที่ยุ่งยากและช่องโหว่ด้านฟังก์ชันการทำงานที่อาจเกิดขึ้น
  3. โปรดส่งคำขอแจ้งปัญหาสำหรับคอมโพเนนต์ซอฟต์แวร์ที่เกี่ยวข้องหากพบข้อบกพร่องหรือฟังก์ชันการทำงานที่ขาดหายไป

หลังจากใช้การดำเนินการ

  1. ใน StablehloOps.td ให้ทำดังนี้

    1. ตรวจสอบว่า summary ใน ODS ของผู้ให้บริการปฏิบัติตามรูปแบบมาตรฐาน (คำขอแจ้งปัญหาที่เกี่ยวข้อง)
    2. เพิ่มความคิดเห็นที่อ้างอิงป้ายกำกับข้อจำกัด (เช่น Cn หรือ In) จากข้อกำหนดในรูปแบบ xyz_cn หรือ xyz_in สำหรับการดำเนินการ XyzOp เพื่อระบุความเชื่อมโยงระหว่างข้อจำกัดใน ODS กับข้อกำหนด ตัวอย่างต่อไปนี้แสดงวิธีเพิ่มป้ายกำกับข้อจำกัดเป็นความคิดเห็นข้าง mlir Traits และ TypeConstraints หมายเหตุ xyz_c4 หมายถึงข้อจำกัดที่กําหนดไว้ในคลาส StableHLO_FooOp (เช่น StableHLO_ShapedInterfaceOp, StableHLO_UnaryElementwiseOp, StableHLO_Op ฯลฯ)

       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. ใน TypeInference.cpp และ StablehloOps.cpp

    1. ลบความคิดเห็นที่ระบุว่า "ยืนยันพร็อพเพอร์ตี้ต่อไปนี้ ..."
    2. เพิ่มความคิดเห็นที่อ้างอิงป้ายกำกับข้อจำกัด (เช่น Cn หรือ In) จากข้อกำหนดในรูปแบบ xyz_cn หรือ xyz_in สำหรับการดำเนินการ XyzOp เพื่อระบุส่วนต่างๆ ของโปรแกรมตรวจสอบและฟังก์ชันรูปร่างที่สอดคล้องกับข้อจำกัดในข้อกำหนด
      1. ความคิดเห็นที่มีป้ายกำกับข้อจำกัดหลายป้ายหรือมีหลายความคิดเห็นที่มีป้ายกำกับข้อจำกัดเดียวกัน ทุกอย่างขึ้นอยู่กับวิธีใช้ข้อจำกัด หากมีข้อจำกัดต่อเนื่องกัน ให้ย่อเป็น xyz_cn...xyz_cm, xyz_in...xyz_jn
      2. ในกรณีที่ข้อจำกัดในการใช้งานไม่ตรงกับข้อจำกัดในข้อกำหนด โปรดตรวจสอบว่ามีปัญหาที่รอดำเนินการซึ่งแสดงถึงความคลาดเคลื่อนดังกล่าว
  3. ในการทดสอบโปรแกรมล่าม

    1. เพิ่มไฟล์ชื่อ <op_mnemonic>.mlir
    2. เขียนการทดสอบตามหลักเกณฑ์การทดสอบ
  4. ในไดเรกทอรี testdata ให้ทำดังนี้

    1. เรียกใช้การทดสอบที่ปิดใช้ซึ่งอยู่ภายใต้การดำเนินการที่เพิ่มใหม่
    2. หากการทดสอบผ่าน ให้เปิดใช้โดยแปลง RUN-DISABLED เป็น RUN
    3. หากการทดสอบไม่ผ่านด้วยเหตุผลอื่นนอกเหนือจากความแม่นยำไม่ตรงกัน ให้แก้ไขการติดตั้งใช้งาน/การทดสอบ
    4. สำหรับการจับคู่ความแม่นยำที่ไม่ตรงกัน ให้ติดแท็กการทดสอบด้วย RUN-DISABLED(#1278) (หากยังไม่ได้ดำเนินการ)
  5. ใน ops_stablehlo.mlir

    1. ตรวจสอบว่ามีการทดสอบอย่างน้อย 1 รายการ (เชิงบวกหรือเชิงลบ) ต่อข้อจำกัดแต่ละข้อในเครื่องมือยืนยันและวิธีการอนุมานประเภท ทั้งนี้ ระบบจะไม่ทดสอบข้อจำกัดที่ครอบคลุมใน ODS การทดสอบเหล่านี้ส่วนใหญ่จะเป็นเชิงลบ ซึ่งทดสอบว่าข้อจำกัดไม่ตรงตามข้อกำหนด หรือเชิงบวก ซึ่งทดสอบว่ารูปร่างที่อนุมานนั้นถูกต้อง
    2. ตรวจสอบว่าทดสอบทั้งหมดที่เกี่ยวข้องกับการดำเนินการที่ทดสอบอยู่อยู่ด้วยกัน
    3. ตรวจสอบว่าการทดสอบทั้งหมดที่เกี่ยวข้องกับการทดสอบภายใต้การทดสอบใส่มาโครที่มีไฟ CHECK-LABEL ไว้ด้านหน้า
    4. เลือกชื่อฟังก์ชันของการทดสอบโดยใช้รูปแบบ xyz_cn_im_... สําหรับข้อจํากัดการทดสอบฟังก์ชัน Cn, Im และอื่นๆ สําหรับการดําเนินการ XyzOp ในกรณีที่รูปแบบที่เสนอใช้ไม่ได้ ให้ใช้ชื่อเดิม
    5. เมื่อทำตามขั้นตอนข้างต้นเสร็จแล้ว ให้จัดเรียงการทดสอบทั้งหมดที่เกี่ยวข้องกับการทดสอบการดำเนินการตามลําดับตัวอักษรตามชื่อฟังก์ชัน
    6. เพิ่มการทดสอบต่อไปจนกว่า ccov จะแสดงการครอบคลุมมากกว่าหรือเท่ากับ 90% สำหรับการดำเนินการ
  6. ใน infer_stablehlo.mlir

    1. ตรวจสอบว่ามีข้อจำกัดทั้งหมดที่เกี่ยวข้องกับการทดสอบการอนุมานรูปร่างในไฟล์นี้ โดยทำตามหลักเกณฑ์การตั้งชื่อเดียวกันกับที่ระบุไว้ข้างต้น
    2. ย้ายการทดสอบการอนุมานรูปร่างจากไฟล์ ops_stablehlo.mlir มายังไฟล์นี้
  7. ใน spec.md

    1. เพิ่มลิงก์ไปยัง stablehlo/tests/interpret/<op_mnemonic>.mlir ลงในส่วน "ตัวอย่าง" (เช่น ตัวอย่างเพิ่มเติม)
    2. โปรดตรวจสอบว่าข้อมูลจำเพาะมีตัวอย่างเพียง 1 รายการ
    3. ตรวจสอบว่าตัวอย่างข้อมูลจำเพาะเป็นไปตามหลักเกณฑ์การทดสอบ
    4. ตรวจสอบว่าตัวอย่างการทดสอบข้อกําหนดสามารถตีความได้
    5. ตรวจสอบว่าตัวอย่างข้อมูลจำเพาะตรงกับข้อมูลใน ODS
  8. ใน status.md ให้ทำดังนี้

    1. อัปเดตคอลัมน์ "ผู้แปล" เป็น yes