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

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

सेशन लागू करते समय

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

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

  1. StablehloOps.td में:

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