قائمة التحقق من الترجمة الفورية في مكتبة StableHLO

في هذه الوثيقة، نلخص المبادئ التوجيهية لتطبيق ومراجعة لعملية الترجمة الفورية. لقد عمدنا إلى تضمين بعض الإجراءات الإضافية العناصر المتعلقة بأداة التحقق والاستنتاج النوعي، مع فكرة إحراز تقدم على تلك الجبهات إلى جانب توفير الترجمة الفورية.

أثناء تنفيذ العملية

  1. تقديم استراتيجية اختبار مكتوبة بشكل واضح (في وصف العلاقات العامة) مشابه لـ لاستخدام كمرجع أثناء مراجعة التحقق والكتابة بالاستنتاج والطرق والاختبارات المقابلة. سيتحقق المراجع مرة أخرى من أن ووصفها شامل.
  2. استشارة hlo_evaluator لتحديد تفاصيل عملية التنفيذ الصعبة والثغرات المحتملة في الوظائف.
  3. تقديم تذاكر لمكونات البرنامج المقابلة إذا وجدت أي أخطاء أو وظيفة مفقودة.

بعد تنفيذ العملية

  1. في StablehloOps.td:

    1. يُرجى التأكّد من أنّ السمة summary في الطلب المخصّص للحلّ النزاعات خارج نطاق المحكمة تتَّبِع التنسيق العادي. (تذكرة ذات صلة)
    2. أضِف تعليقات تشير إلى تصنيفات القيود (مثل Cn أو In) من المواصفات بالتنسيق xyz_cn أو xyz_in، بالنسبة إلى الأمر XyzOp، لتحديد أي ارتباط بين القيود في الهيئة المعنيّة بحلّ النزاعات خارج نطاق المحكمة والمواصفات. تشير رسالة الأشكال البيانية يوضح المثال التالي كيفية إضافة تصنيفات القيد كتعليقات إلى جانب مليل 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. في حالة وجود عدم تطابق بين القيود في التنفيذ VS وتلك الموجودة في المواصفات، تأكد من وجود مشكلة مفتوحة تعكس هذا التناقض.
  3. في اختبارات الترجمة الفورية:

    1. أضِف ملفًا باسم <op_mnemonic>.mlir.
    2. اكتب الاختبارات وفقًا لإرشادات الاختبار.
  4. في دليل testdata:

    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.