רשימת משימות לתרגום StableHLO

במסמך הזה נסכם את ההנחיות להטמעה ולבדיקה של לתרגום שיחה פעילה. כללנו בכוונה מספר פעולות עזר פריטים שקשורים להסקה מסוג מאמת וסוג, ברעיון של התקדמות את הטכנולוגיה של 'תרגום שיחה פעילה'.

במהלך הטמעת הפעולה

  1. הציגו אסטרטגיית בדיקה כתובה במפורש (בתיאור של ה-PR) דומה ל- את כקובץ עזר כשבודקים את האימות ומקלידים את ההסקה שיטות הבידינג והבדיקות המתאימות. הבודק יבדוק היטב ש הוא מקיף.
  2. ייעוץ hlo_evaluator כדי לזהות פרטי הטמעה מורכבים ופערים אפשריים בפונקציונליות.
  3. אם יתגלו באגים, עליך לשלוח כרטיסים לרכיבי התוכנה המתאימים. או פונקציונליות חסרה.

אחרי הטמעת הפעולה

  1. ב-StablehloOps.td:

    1. צריך לוודא שהשדה summary בגוף ליישוב מחלוקות מחוץ לכותלי בית המשפט תואם לפורמט הסטנדרטי. (כרטיס קשור)
    2. להוסיף תגובות שמפנות לתוויות של אילוצים (למשל Cn או In) את המפרט בפורמט xyz_cn או xyz_in, עבור פעולת XyzOp, ההתאמה בין האילוצים בגוף ליישוב מחלוקות מחוץ לכותלי בית המשפט לבין המפרט. הדוגמה הבאה מראה איך להוסיף תוויות של אילוצים בתגובות לצד 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. בספריית נתוני הבדיקה:

    1. מריצים בדיקות מושבתות שמאובטחות על ידי הפעולה החדשה שנוספה.
    2. אם הבדיקות עוברות את בהצלחה, צריך להמיר את RUN-DISABLED ל-RUN כדי להפעיל אותן.
    3. אם הבדיקה נכשלת מסיבה כלשהי שאינה התאמה מדויקת, עליכם לתקן את מהטמעה/בדיקה.
    4. במקרים של אי-התאמות מדויקות, יש לתייג את הבדיקה באמצעות RUN-DISABLED(#1278) (אם עדיין לא בוצעה).
  5. ב-ops_stablehlo.mlir:

    1. צריך לוודא שיש לפחות בדיקה אחת (חיובית או שלילית) לכל בדיקה. הגבלה בשיטות המאמת ובסוג ההסקה; מגבלות שנכללו בגוף ליישוב מחלוקות מחוץ לכותלי בית המשפט לא ייבדקו. הבדיקות האלה יהיו בעיקר שליליות, בדיקה שהמגבלות לא מתקיימות או שהן חיוביות, בדיקה שחושבים נכון.
    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. צריך לוודא שבמפרט יש רק דוגמה אחת.
    3. צריך לוודא שהדוגמה למפרט תואמת להנחיות הבדיקה.
    4. חשוב לוודא שהבדיקה לדוגמה של המפרט ניתנת לפירוש.
    5. צריך לוודא שהדוגמה למפרט זהה לזו שמופיעה בגוף ליישוב מחלוקות מחוץ לכותלי בית המשפט.
  8. ב-status.md:

    1. עדכון של 'תרגום שיחה פעילה' עמודה אל yes.