StableHLO अनुवादक की चेकलिस्ट

इस दस्तावेज़ में, हम अनुवादक के लिए एक विकल्प को लागू करने और की समीक्षा करने के दिशा-निर्देशों के बारे में बताते हैं. हमने जान-बूझकर कुछ सहायक ऐक्शन आइटम शामिल किए हैं जो पुष्टि करने वाले और टाइप अनुमान से जुड़े हैं. साथ ही, इन कार्रवाई से दूसरी चीज़ों को बेहतर बनाने के साथ-साथ इंटरप्रेटर को लागू करने में भी मदद मिलेगी.

ऑपरेटर को लागू करते समय

  1. साफ़ तौर पर लिखित टेस्टिंग की रणनीति (पीआर जानकारी में) उपलब्ध कराएं. इस की तरह, पुष्टि करने, टाइप के अनुमान के तरीकों, और उनसे जुड़े टेस्ट की समीक्षा करते समय, इसे रेफ़रंस के तौर पर इस्तेमाल करें. समीक्षक इस बात की दोबारा जांच करेगा कि ब्यौरा विस्तार से लिखा है या नहीं.
  2. लागू करने में होने वाली मुश्किल जानकारी और फ़ंक्शन में हो सकने वाली कमियों के बारे में जानने के लिए, hlo_evaluator से संपर्क करें.
  3. अगर आपको कोई गड़बड़ी मिलती है या कोई ऐसी सुविधा नहीं मिलती है जो सॉफ़्टवेयर से जुड़ी नहीं है, तो संबंधित सॉफ़्टवेयर कॉम्पोनेंट के लिए टिकट फ़ाइल करें.

ऑपरेटर को लागू करने के बाद

  1. StablehloOps.td में:

    1. पक्का करें कि Op के ODS में summary, स्टैंडर्ड फ़ॉर्मैट के मुताबिक हो. (इससे जुड़ा टिकट)
    2. ओडीएस और खास जानकारी के बीच के अंतर को पहचानने के लिए, ऑपरेटर XyzOp के लिए xyz_cn या xyz_in फ़ॉर्मैट वाले कंस्ट्रेंट लेबल (जैसे कि Cn या In) से जुड़ी टिप्पणियां जोड़ें. इस उदाहरण में बताया गया है कि 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. ऑपरेटर XyzOp के लिए, xyz_cn या xyz_in फ़ॉर्मैट में दिए गए कंस्ट्रेंट लेबल (जैसे कि Cn या In) के बारे में बताने वाली टिप्पणियां जोड़ें. इससे यह पता किया जा सकेगा कि पुष्टि करने वाले और आकार के फ़ंक्शन के कौनसे हिस्से, स्पेसिफ़िकेशन में बताई गई पाबंदियों के हिसाब से हैं.
      1. एक से ज़्यादा कंस्ट्रेंट लेबल वाली टिप्पणी करना या एक ही कंस्ट्रेंट लेबल वाली कई टिप्पणियां करना ठीक है. यह सब इस बात पर निर्भर करता है कि पाबंदियां कैसे लागू की जाती हैं. अगर लगातार कई पाबंदियां हैं, तो उन्हें xyz_cn...xyz_cm, xyz_in...xyz_jn के तौर पर शामिल करें.
      2. अगर लागू करने की प्रोसेस और स्पेसिफ़िकेशन में बताई गई पाबंदियों में अंतर है, तो पक्का करें कि इस अंतर को दिखाने वाली कोई खुली समस्या हो.
  3. अनुवादक टेस्ट में:

    1. interpret_<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. ऑपरेटर XyzOp के लिए फ़ंक्शन टेस्टिंग कंस्ट्रेंट Cn, Im वगैरह के लिए, xyz_cn_im_... फ़ॉर्मैट का इस्तेमाल करके, टेस्ट के फ़ंक्शन का नाम चुनें. अगर प्रस्तावित फ़ॉर्मैट लागू नहीं होता है, तो मौजूदा नाम ही रखें.
    5. ऊपर दिया गया चरण पूरा होने के बाद, ऑपरेटर के जांच से जुड़े सभी जांच को फ़ंक्शन के नाम के आधार पर वर्णमाला के क्रम में लगाएं.
    6. तब तक टेस्ट जोड़ते रहें, जब तक कि ccov सेल में 90% से ज़्यादा कवरेज न दिखे.
  6. infer_stablehlo.mlir में:

    1. पक्का करें कि इस फ़ाइल में, आकार के अनुमान की जांच से जुड़ी सभी पाबंदियां मौजूद हों. साथ ही, नाम रखने के लिए ऊपर बताए गए दिशा-निर्देशों का पालन करें.
    2. ops_stablehlo.mlir फ़ाइल से किसी भी आकार के अनुमान की जांच को इस फ़ाइल में ले जाएं.
  7. spec.md में:

    1. "उदाहरण" सेक्शन में, interpret_<op_mnemonic>.mlir का लिंक जोड़ें (जैसे, ज़्यादा उदाहरण).
    2. पक्का करें कि खास जानकारी में सिर्फ़ एक उदाहरण हो.
    3. पक्का करें कि खास जानकारी में दिया गया उदाहरण, जांच से जुड़े दिशा-निर्देशों के मुताबिक हो.
    4. पक्का करें कि खास उदाहरण की जांच से जुड़ी जानकारी समझ में आए.
    5. पक्का करें कि खास जानकारी का उदाहरण वही है जो ओडीएस में मौजूद है.
  8. status.md में:

    1. "अनुवादक" कॉलम को yes पर अपडेट करें.