इस पेज का अनुवाद Cloud Translation API से किया गया है.
Switch to English

XLA आर्किटेक्चर

हमने XLA का निर्माण क्यों किया?

हमारे पास XLA के लिए TensorFlow के साथ काम करने के कई उद्देश्य थे:

  • निष्पादन की गति में सुधार। TensorFlow रनटाइम से ओवरहेड को खत्म करने के लिए अल्पकालिक ऑप्स के निष्पादन समय को कम करने के लिए उपसमूह संकलित करें, मेमोरी ओवरहेड को कम करने के लिए पाइपलाइन किए गए संचालन को फ्यूज करें, और अधिक आक्रामक निरंतर अलगाव के लिए अनुमति देने के लिए ज्ञात टेंसर आकृतियों के विशेषज्ञ।

  • स्मृति उपयोग में सुधार। कई मध्यवर्ती भंडारण बफ़र्स को समाप्त करने वाले सिद्धांत में मेमोरी उपयोग का विश्लेषण और शेड्यूल करें।

  • कस्टम ऑप्स पर निर्भरता कम करें। हाथ से फ़्यूज़ किए गए कस्टम ऑप्स के प्रदर्शन से मिलान करने के लिए स्वचालित रूप से फ़्यूज़ किए गए निम्न-स्तरीय ऑप्स के प्रदर्शन में सुधार करके कई कस्टम ऑप्स की आवश्यकता को हटा दें।

  • मोबाइल फुटप्रिंट कम करें। सबग्राफ को कंपाइल करने और एक ऑब्जेक्ट / हेडर फ़ाइल जोड़ी को उत्सर्जित करने से समय-समय पर TensorFlow रनटाइम को हटा दें जिसे सीधे दूसरे एप्लिकेशन में जोड़ा जा सकता है। परिणाम परिमाण के कई आदेशों द्वारा मोबाइल इंट्रेंस के लिए पदचिह्न को कम कर सकते हैं।

  • पोर्टेबिलिटी में सुधार। उपन्यास हार्डवेयर के लिए एक नया बैकएंड लिखना अपेक्षाकृत आसान है, जिस बिंदु पर TensorFlow कार्यक्रमों का एक बड़ा अंश उस हार्डवेयर पर अनमॉडिफाइड चलेगा। यह नए हार्डवेयर के लिए विशिष्ट व्यक्तिगत अखंड ऑप्स के दृष्टिकोण के विपरीत है, जिसके लिए उन ऑप्स का उपयोग करने के लिए TensorFlow कार्यक्रमों को फिर से लिखने की आवश्यकता होती है।

XLA कैसे काम करता है?

XLA के लिए इनपुट भाषा को "HLO IR", या सिर्फ HLO (उच्च स्तरीय संचालन) कहा जाता है। ऑपरेशन शब्दार्थ पृष्ठ पर HLO के शब्दार्थों का वर्णन किया गया है। एक संकलक IR के रूप में HLO के बारे में सोचना सबसे सुविधाजनक है।

XLA, HLO में परिभाषित रेखांकन ("कम्प्यूटेशंस") लेता है और उन्हें विभिन्न आर्किटेक्चर के लिए मशीन निर्देशों में संकलित करता है। XLA इस अर्थ में मॉड्यूलर है कि वैकल्पिक बैकेंड में कुछ उपन्यास एचडब्ल्यू आर्किटेक्चर को लक्षित करना आसान है। CPU x64 और ARM64 के लिए और साथ ही NVIDIA GPU बैकएंड TensorFlow source ट्री में है।

निम्नलिखित आरेख XLA में संकलन प्रक्रिया दिखाता है:

XLA कई अनुकूलन और विश्लेषण पास के साथ आता है जो लक्ष्य-स्वतंत्र होते हैं, जैसे CSE , लक्ष्य-स्वतंत्र संचालन संलयन और गणना के लिए रनटाइम मेमोरी आवंटित करने के लिए बफर विश्लेषण।

लक्ष्य-स्वतंत्र कदम के बाद, XLA एक बैकएंड को HLO संगणना भेजता है। बैकएंड आगे HLO- स्तर के अनुकूलन कर सकता है, इस बार लक्ष्य विशिष्ट जानकारी और आवश्यकताओं को ध्यान में रखकर। उदाहरण के लिए, XLA GPU बैकएंड विशेष रूप से GPU प्रोग्रामिंग मॉडल के लिए ऑपरेशन फ़्यूज़न लाभकारी प्रदर्शन कर सकता है और यह निर्धारित कर सकता है कि धाराओं में गणना को कैसे विभाजित किया जाए। इस स्तर पर, बैकएंड कुछ निश्चित परिचालनों के साथ-साथ अनुकूलित लाइब्रेरी कॉल के लिए पैटर्न-मैच भी कर सकते हैं।

अगला चरण लक्ष्य-विशिष्ट कोड पीढ़ी है। XLA के साथ शामिल CPU और GPU बैकएंड लो-लेवल IR, ऑप्टिमाइज़ेशन और कोड-जनरेशन के लिए LLVM का उपयोग करते हैं। ये बैकवर्ड एलएलएवी एलएलओ अभिकलन को एक कुशल तरीके से प्रस्तुत करने के लिए आवश्यक एलएलवीएम आईआर का उत्सर्जन करते हैं, और फिर एलएलवीएम को इस एलएलवीएम आईआर से मूल कोड का उत्सर्जन करने के लिए आमंत्रित करते हैं।

GPU बैकएंड वर्तमान में LLVM NVPTX बैकएंड के माध्यम से NVIDIA GPU का समर्थन करता है; सीपीयू बैकएंड कई सीपीयू आईएसए का समर्थन करता है।