वीएचएलओ बोली

खाता बनाते समय, यह तरीका जानने के लिए vhlo_checklist.md पर जाएं VHLO में हुए बदलाव.

वीएचएलओ की बोली क्या है?

VHLO (वर्शन वाली StableHLO) भाषा का इस्तेमाल, क्रम तय करने और स्थिरता के लिए किया जाता है. यह किसी दिए गए समय पर StableHLO बोली का स्नैपशॉट देता है प्रोग्राम के अलग-अलग एलिमेंट का वर्शन बनाना.

वीएचएलओ, अलग-अलग वर्शन, प्रकार, और विशेषताओं वाली सिर्फ़ जोड़ने के लिए उपलब्ध बोली है, इसका मतलब है कि एक बार किसी भाषा को बोली में जोड़ने के बाद, उसे बदला नहीं जा सकता इससे सिमैंटिक पर असर पड़ सकता है.

किसी सेशन, टाइप या एट्रिब्यूट में किए जाने वाले बदलाव के लिए नया वर्शन जोड़ना ज़रूरी है बोली. उदाहरण के लिए, अगर किसी काल्पनिक my_op को StableHLO में जोड़ा गया था, 0.9.0, लेकिन 0.11.0 में बदल दिया गया था, तो वीएचएलओ में हमारी ये शर्तें होंगी:

// This represents the StableHLO version of the op from 0.9.0 -> 0.10.0
// Both the lower and the upper bound of versions are inclusive
def VHLO_MyOpV1 : VHLO_Op<"my_op_v1", "0.9.0", "0.10.0"> {
  let arguments = (ins
    VHLO_AnyType:$operand
  );
  let results = (outs VHLO_AnyType:$result);
}

// This represents the StableHLO version of the op from 0.11.0 -> current
def VHLO_MyOpV2 : VHLO_Op<"my_op_v2", "0.11.0", "current"> {
  let arguments = (ins
    VHLO_AnyType:$operand,
    VHLO_AnyAttr:$attr  // New attribute added to StableHLO in 0.11.0
  );
  let results = (outs VHLO_AnyType:$result);
}

StableHLO बोली में ऑपरेशन का सिर्फ़ सबसे नया वर्शन मौजूद है. दौड़ में उदाहरण के लिए, v0.11.0 में StableHLO बोली में सिर्फ़ StableHLO_MyOp जिसमें operand और attr हैं, जबकि VHLO, सेशन के हर फ़ेज़ को कैप्चर करता है क्रमिक विकास.

वीएचएलओ उपयोगी क्यों है?

वर्शन-युक्त भाषा होने से हम StableHLO ओपसेट. इससे, आगे और पीछे के साथ काम करने की सुविधा मिलती है VHLO भाषा में ops के बीच कन्वर्ज़न.

फ़ॉरवर्ड की सुविधा के साथ काम करना: फ़ॉरवर्ड करके, आगे काम करने की सुविधा मिलती है VHLO में अपग्रेड करना और ऑपरेशन को टारगेट वर्शन पर डाउनग्रेड करना. अगर हर ऑप/टाइप/एट्रिब्यूट को वीएचएलओ प्रोग्राम को टारगेट वर्शन में डाउनग्रेड किया जा सकता है, लेकिन इसकी गारंटी होगी कि नए वर्शन का इस्तेमाल करने वाले उपभोक्ता के लिए, डीरियलाइज़्ड और StableHLO में बदलने लायक टारगेट वर्शन से बड़ा या उसके बराबर है, क्योंकि VHLO में ऑडियो में बदलना है.

फ़ॉरवर्ड करने की सुविधा के साथ काम करने वाली इमेज

यह डाउनग्रेड रूपांतरण विफल हो जाएगा, अगर इसमें Ops या सुविधाएं मौजूद नहीं हैं ऑपसेट के पिछले वर्शन का इस्तेमाल किया गया है. इसका मतलब है कि फ़ॉरवर्ड करने की सुविधा के साथ काम करता है का पता चलने के बजाय, प्रोड्यूसर पर खोजा जाता है.

पुराने वर्शन के साथ काम करने की सुविधा: अपग्रेड करने पर, पुराने सिस्टम के साथ काम करने की सुविधा मिलती है VHLO ऑपरेशन को उसके सबसे नए वर्शन (अगर ज़रूरी हो) पर ट्रांसफ़र करता है, फिर एक ऑपरेशन को वापस इसमें बदल देता है StableHLO. संगतता विंडो में मौजूद सभी VHLO प्रोग्राम अपग्रेड किए जा सकते हैं का इस्तेमाल कर सकते हैं. इसका मतलब है कि अलग-अलग कंज़्यूमर वर्शन के एक ही वर्शन को डीसीरियलाइज़ (पार्स) करने के लिए पिछले वर्शन का VHLO पेलोड.

पुराने सिस्टम के साथ काम करने की इमेज

इससे भी अहम बात यह है कि वीएचएलओ को क्रम से लगाने के पीछे का तरीका बताया गया है. इसका मतलब है कि ML फ़्रेमवर्क (प्रोड्यूसर) को सिर्फ़ StableHLO ops और कंपाइलर को टारगेट करना होगा बैकएंड (उपभोक्ता) को सिर्फ़ सबसे नए वर्शन के साथ काम करने की ज़रूरत होती है. StableHLO सेशन का सेट. मशीनरी की मदद से, वीएचएलओ को होने वाले कन्वर्ज़न और उनसे मिलने वाले कन्वर्ज़न का ध्यान रखा जाता है में दी गई जानकारी है.

MLIR बाइटकोड फ़ॉर्मैट वर्शन

आगे भी इसके साथ काम करने के लिए, StableHLO के वर्शन में MLIR बाइटकोड फ़ॉर्मैट से जुड़ा वर्शन. इसके अलावा, Google Play का StableHLO, MLIR बाइटकोड फ़ॉर्मैट के सबसे नए वर्शन का इस्तेमाल करेगा. जब MLIR बाइटकोड फ़ॉर्मैट वर्शन को बढ़ाया गया है, StableHLO की अगली रिलीज़ में माइनर वर्शन को बढ़ाएं और Version.cpp को अपडेट करें MLIR बाइटकोड फ़ॉर्मैट का सबसे नया वर्शन इस्तेमाल करने के लिए.

MLIR बाइटकोड फ़ॉर्मैट की जानकारी और StableHLO में इसका इस्तेमाल करने की वजह के लिए, bytecode.md देखें.