MHLO से StableHLO को बूटस्ट्रैप करते समय, हमने कई चीज़ों को MHLO से लागू किया है. इनमें प्रिटीप्रिंटिंग, पुष्टि, और आकार अनुमान शामिल हैं. इसकी वजह से, हमारे पास पहले से ही इस ओ सेट का काफ़ी कवरेज है. हालांकि, लागू करने के मौजूदा तरीकों की समीक्षा करने और उन्हें लागू करने के लिए, अभी बहुत कुछ करना बाकी है.
यह लाइव दस्तावेज़ डेवलपर और उपयोगकर्ताओं के लिए है, ताकि वे ऑप्टसेट के अलग-अलग पहलुओं की प्रोग्रेस को ट्रैक कर सकें. जैसे, स्पेसिफ़िकेशन, पुष्टि, टाइप अनुमान, सुंदर प्रिंटिंग, अनुवादक वगैरह.
इसका इस्तेमाल कैसे करें
StableHLO ऑप की प्रोग्रेस को नीचे दिए गए ट्रैकिंग लेबल में से किसी एक का इस्तेमाल करके ट्रैक किया जाता है. यह जानकारी, किसी खास पहलू पर लागू की जाती है, जैसा कि इसके कॉलम में बताया गया है.
- सामान्य लेबल
- yes: इसे लागू करने के कई तरीके हैं.
- no: इसे लागू करने की कोई प्रोसेस नहीं है, लेकिन इस पर काम करना रोडमैप का हिस्सा है. ध्यान रखें कि पुष्टि करने वाले को कभी भी "नहीं" के तौर पर लेबल नहीं किया जा सकता, क्योंकि ओडीएस पहले से ही कुछ पुष्टि लागू करता है.
- पुष्टि करने वाले और टाइप अनुमान के लिए पसंद के मुताबिक लेबल
- yes: इसे लागू किया गया है और यह StableHLO के सिमैंटिक के मुताबिक है.
- yes*: इसे लागू किया गया है और यह एक्सएलए सिमैंटिक के साथ सिंक है. XLA के सिमैंटिक का दस्तावेज़ अक्सर कम होता है, इसलिए हम रेफ़रंस के तौर पर hlo_verifier.cc और shape_inference.cc का इस्तेमाल कर रहे हैं.
- revisit: इसे लागू करने के लिए एक तरीका मौजूद है, लेकिन यह "yes" या "yes*" में नहीं आता है. इसकी वजह यह है कि या तो हमने अभी तक इसका ऑडिट नहीं किया है या फिर हमें कुछ समस्याएं मिली हैं.
- नामुमकिन नहीं: इसे लागू नहीं किया जा रहा है, क्योंकि यह संभव नहीं है. उदाहरण के लिए, किसी ऑप के नतीजे के टाइप का अनुमान उसके ऑपरेंड और एट्रिब्यूट से नहीं लगाया जा सकता.
स्थिति
| स्टेबलएचएलओ ओपी | खास जानकारी | पुष्टि करने का तरीका | टाइप अनुमान | प्रिटी प्रिंटिंग | अनुवादक |
|---|---|---|---|---|---|
| abs | हां | हाँ | हाँ | हाँ | हां |
| जोड़ें | हां | हाँ | हाँ | हाँ | हां |
| after_all | हां | हाँ | हाँ | हाँ | हां |
| all_gather | हां | फिर से जाना | no | no | हां |
| all_reduce | हां | फिर से जाना | हां | no | हां |
| all_to_all | हां | फिर से जाना | हां | no | हां |
| और | हां | हाँ | हाँ | हाँ | हां |
| atan2 | हां | हाँ | हाँ | हाँ | हां |
| batch_norm_grad | हां | फिर से जाना | हां | no | फिर से जाना |
| batch_norm_inference | हां | फिर से जाना | हां | no | फिर से जाना |
| batch_norm_training | हां | फिर से जाना | हां | no | फिर से जाना |
| bitcast_convert | हां | हां | संभव नहीं है | हां | हां |
| ब्रॉडकास्ट | no | हां* | हां* | हां | फिर से जाना |
| broadcast_in_dim | हां | हां | संभव नहीं है | हां | हां |
| केस | हां | फिर से जाना | हां | no | हां |
| सीबीआरटी | हां | हाँ | हाँ | हाँ | हां |
| सील | हां | हाँ | हाँ | हाँ | हां |
| कोलेस्की | हां | हाँ | हाँ | हां | फिर से जाना |
| क्लैम्प | हां | फिर से जाना | हां | हाँ | हां |
| collective_broadcast | हां | फिर से जाना | हां | no | हां |
| collective_permute | हां | फिर से जाना | हां | no | हां |
| तुलना करें | हां | हाँ | हाँ | हाँ | हां |
| जटिल | हां | हाँ | हाँ | हाँ | हां |
| मिश्रित | हां | हां | संभव नहीं है | हां | हां |
| concatenate | हां | हाँ | हाँ | हाँ | हां |
| कॉन्सटेंट | हां | हाँ | हाँ | हाँ | हां |
| ग्राहक में बदलने वाले | हां | हां | संभव नहीं है | हां | हां |
| कॉन्वलूशन | हां | हां | संभव नहीं है | फिर से जाना | हां |
| कोटिज्या | हां | हाँ | हाँ | हाँ | हां |
| count_leading_zeros | हां | हाँ | हाँ | हाँ | हां |
| create_token | no | हां* | हां* | हां | फिर से जाना |
| क्रॉस-रेप्लिका-सम | no | फिर से जाना | हां* | no | फिर से जाना |
| custom_call | हां | हां | संभव नहीं है | हां | हां |
| विभाजन | हां | हाँ | हाँ | हाँ | हां |
| डॉट | no | फिर से जाना | संभव नहीं है | हां | फिर से जाना |
| dot_general | हां | फिर से जाना | संभव नहीं है | no | हां |
| dynamic_broadcast_in_dim | हां | हां | संभव नहीं है | हां | फिर से जाना |
| dynamic_conv | हां | हां | संभव नहीं है | फिर से जाना | फिर से जाना |
| dynamic_gather | हां | हां | संभव नहीं है | no | फिर से जाना |
| dynamic_iota | हां | हां | संभव नहीं है | हां | फिर से जाना |
| dynamic_pad | हां | हां | संभव नहीं है | हां | फिर से जाना |
| dynamic_reshape | हां | हां | संभव नहीं है | हां | फिर से जाना |
| dynamic_slice | हां | हाँ | हाँ | हाँ | हां |
| dynamic_update_slice | हां | हाँ | हाँ | हाँ | हां |
| einsum | no | फिर से जाना | no | हां | फिर से जाना |
| घातांकी | हां | हाँ | हाँ | हाँ | हां |
| exponential_minus_one | हां | हाँ | हाँ | हाँ | हां |
| एफ़एफ़टी | हां | फिर से जाना | हां | हां | no |
| मंज़िल | हां | हाँ | हाँ | हाँ | हां |
| इकट्ठा करना | हां | हाँ | हां | no | हां |
| get_dimension_size | हां | हाँ | हाँ | हाँ | हां |
| get_tuple_element | हां | हाँ | हाँ | हाँ | हां |
| if | हां | फिर से जाना | हां | no | हां |
| Imag | हां | हाँ | हाँ | हाँ | हां |
| इनफ़ीड | हां | हां | संभव नहीं है | no | हां |
| आयटा | हां | हां | संभव नहीं है | हां | हां |
| is_finite | हां | हाँ | हाँ | हाँ | हां |
| log | हां | हाँ | हाँ | हाँ | हां |
| log_plus_one | हां | हाँ | हाँ | हाँ | हां |
| लॉजिस्टिक | हां | हाँ | हाँ | हाँ | हां |
| मैप | हां | फिर से जाना | हां | no | हां |
| ज़्यादा से ज़्यादा | हां | हाँ | हाँ | हाँ | हां |
| कम से कम | हां | हाँ | हाँ | हाँ | हां |
| गुणा | हां | हाँ | हाँ | हाँ | हां |
| नेगेटिव | हां | हाँ | हाँ | हाँ | हां |
| नहीं | हां | हाँ | हाँ | हाँ | हां |
| optimization_barrier | हां | हाँ | हाँ | हाँ | हां |
| या | हां | हाँ | हाँ | हाँ | हां |
| आउटफ़ीड | हां | हाँ | हां | no | हां |
| पैड | हां | हाँ | हाँ | हाँ | हां |
| partition_id | हां | हाँ | हाँ | हाँ | हां |
| पॉप्संट | हां | हाँ | हाँ | हाँ | हां |
| शारीरिक गतिविधि से बनी पावर का डेटा | हां | हाँ | हाँ | हाँ | हां |
| रीयल | हां | हाँ | हाँ | हाँ | हां |
| real_dynamic_slice | no | फिर से जाना | no | हां | no |
| Recv | हां | हां | संभव नहीं है | no | हां |
| घटाएं | हां | फिर से जाना | हां | फिर से जाना | हां |
| reduce_precision | हां | हाँ | हाँ | हाँ | हां |
| reduce_scatter | हां | फिर से जाना | no | no | हां |
| reduce_window | हां | फिर से जाना | हां | no | हां |
| शेष | हां | हाँ | हाँ | हाँ | हां |
| replica_id | हां | हाँ | हाँ | हाँ | हां |
| आकार बदलें | हां | हां | संभव नहीं है | हां | हां |
| return | no | फिर से जाना | संभव नहीं है | हां | हां |
| reverse | हां | हाँ | हाँ | हाँ | हां |
| आरएनजी | हां | हाँ | हाँ | हां | फिर से जाना |
| rng_bit_generator | हां | फिर से जाना | संभव नहीं है | हां | फिर से जाना |
| round_nearest_afz | हां | हाँ | हाँ | हाँ | हां |
| round_nearest_even | हां | हाँ | हाँ | हाँ | हां |
| आरएसक्यूर्ट | हां | हाँ | हाँ | हाँ | हां |
| scatter | हां | फिर से जाना | हां | no | हां |
| चुनें | हां | हाँ | हाँ | हाँ | हां |
| select_and_scatter | हां | फिर से जाना | हां | no | हां |
| भेजें | हां | हाँ | हां | no | हां |
| set_dimension_size | no | हां* | हां* | हां | no |
| shift_left | हां | हाँ | हाँ | हाँ | हां |
| shift_right_arithmetic | हां | हाँ | हाँ | हाँ | हां |
| shift_right_logical | हां | हाँ | हाँ | हाँ | हां |
| हस्ताक्षर | हां | हाँ | हाँ | हाँ | हां |
| ज्या | हां | हाँ | हाँ | हाँ | हां |
| स्लाइस | हां | हाँ | हां | no | हां |
| क्रम से लगाएं | हां | हाँ | हां | no | हां |
| sqrt | हां | हाँ | हाँ | हाँ | हां |
| घटाएं | हां | हाँ | हाँ | हाँ | हां |
| टैन | हां | हाँ | हाँ | हाँ | हां |
| torch_index_select | no | फिर से जाना | no | no | फिर से जाना |
| ट्रांसपोज़ करें | हां | हाँ | हाँ | हाँ | हां |
| triangular_solve | हां | फिर से जाना | हां | no | फिर से जाना |
| tuple | हां | हाँ | हाँ | हाँ | हां |
| unary_einsum | no | फिर से जाना | no | हां | फिर से जाना |
| uniform_dequantize | हां | हाँ | हाँ | हां | no |
| uniform_quantize | हां | फिर से जाना | संभव नहीं है | हां | no |
| साथ में | हां | फिर से जाना | हां | फिर से जाना | हां |
| एक्सओर | हां | हाँ | हाँ | हाँ | हां |
संख्या वाली कार्रवाइयों के लिए टाइप अनुमान
ऊपर दी गई टेबल में मौजूद Type Inference कॉलम का मकसद, संख्या नहीं दिखाने वाली कार्रवाइयों पर फ़ोकस करना है. ज़्यादातर क्वांटाइज़्ड ऑपरेशन के लिए, नतीजा किस तरह का है, इसका अनुमान
नहीं लगाया जा सकता, क्योंकि नतीजे के टाइप के क्वांटाइज़ेशन पैरामीटर, ऑपरेंड से जुड़े पैरामीटर से अलग हो सकते हैं. कुछ ऐसे मामलों को छोड़कर जिनमें, ऑपरेंड और नतीजे के टाइप एक जैसे होने चाहिए या ऑप में वे सीमाएं हैं जो नतीजे के टाइप का अनुमान लगाने में मददगार हैं, ऐसे ऑपरेशन नीचे दिए गए हैं:
all_gather, all_to_all, case, collective_permute, compare, concatenate, constant, dynamic_slice, dynamic_update_slice, gather, get_tuple_element, if, infeed, {2/, case, case, case, case, case, case, case, case, case, case, case, case, case, case, case, case, case, case, case}is_finitemapoptimization_barrieroutfeedpadrecvreducereduce_scatterreduce_windowreversescatterselect_and_scattersendslicesorttransposetupleuniform_dequantizedwhile