एचएलओ ऑपरेशन के आंकड़े दिखाने वाला टूल
प्रोफ़ाइलिंग सेशन के दौरान किए गए, हाई लेवल ऑप्टिमाइज़र (एचएलओ) ऑपरेशन की परफ़ॉर्मेंस के आंकड़े देखने के लिए, एचएलओ ऑपरेशन के आंकड़े का इस्तेमाल किया जा सकता है. यह टूल, परफ़ॉर्मेंस ऑप्टिमाइज़ेशन के संभावित टारगेट की पहचान करने के लिए अहम है. यह, प्रोफ़ाइल की गई अवधि के दौरान आपके एचएलओ ग्राफ़ में, सबसे ज़्यादा समय लेने वाले ऑपरेशन को हाइलाइट करता है.
इन प्लैटफ़ॉर्म पर काम करता है
TPU: काम करता है
जीपीयू: काम करता है
जीपीयू के लिए, एचएलओ ऑपरेशन का उन कर्नेल के साथ N:M रिलेशनशिप होता है जो असल में लागू होते हैं. कर्नेल लेवल पर आंकड़े देखने के लिए, जीपीयू कर्नेल के आंकड़े देखने वाला टूल देखें.
HLO ऑपरेशन के आंकड़े दिखाने वाले टूल के कॉम्पोनेंट
एचएलओ ऑपरेशन के आंकड़े दिखाने वाले टूल में ये मुख्य कॉम्पोनेंट होते हैं:
- एचएलओ ऑपरेशन के आंकड़े वाली टेबल: यह मुख्य कॉम्पोनेंट है. इसमें टेबल फ़ॉर्मैट में, प्रोफ़ाइलिंग सेशन के दौरान किए गए हर एचएलओ ऑपरेशन की पूरी जानकारी दी जाती है. हर अलग एचएलओ ऑपरेशन के लिए एक लाइन होती है. साथ ही, उस ऑपरेशन से जुड़ी अलग-अलग जानकारी कैप्चर करने वाले कॉलम भी होते हैं.
- ड्रॉप-डाउन सिलेक्टर की मदद से, यह तय किया जा सकता है कि आपको हर एचएलओ ऑपरेशन के लिए कौनसे कॉलम विज़ुअलाइज़ करने हैं.
- दूसरे ड्रॉप-डाउन सिलेक्टर की मदद से, एचएलओ ऑपरेशन कैटगरी के हिसाब से भी लाइनों को फ़िल्टर किया जा सकता है.
- खोज बॉक्स की मदद से, किसी खास प्रोग्राम आईडी, एचएलओ ऑपरेशन, एचएलओ ऑपरेशन टेक्स्ट या फ़्रेमवर्क ऑपरेशन के नाम के हिसाब से फ़िल्टर किया जा सकता है. ये फ़िल्टर, दिए गए कॉलम में कहीं भी दिखने वाली स्ट्रिंग के लिए चुने जाते हैं.
- खास जानकारी वाले चार्ट सेक्शन: इस सेक्शन में ऐसे चार्ट होते हैं जिनमें हर ऑपरेशन की ज़्यादा जानकारी वाली टेबल की खास जानकारी इन तरीकों से दी जाती है:
- ऐसा पाई चार्ट जो एचएलओ ऑपरेशन की अलग-अलग कैटगरी में लगने वाले समय का प्रतिशत दिखाता है.
- अलग-अलग एचएलओ ऑपरेशन में लगने वाले समय का प्रतिशत दिखाने वाला पाई चार्ट. इसमें सबसे ज़्यादा इस्तेमाल होने वाले ऑपरेशन को दिखाया जाता है. बाकी ऑपरेशन को पढ़ने में आसानी हो, इसके लिए उन्हें “अन्य” के तौर पर दिखाया जाता है.
- यह एक पाई चार्ट है, जो फिर से मेमोरी में लोड करने की प्रोसेस के हिस्से के तौर पर, ऑपरेशन पर बिताए गए कुल समय का हिस्सा दिखाता है. XProf को यह जानकारी, प्रोफ़ाइल से जुड़े कंपाइलर मेटाडेटा से मिलती है.
- एचएलओ ऑपरेशन की कैटगरी दिखाने वाला पाई चार्ट, जहां फिर से कॉन्टेंट उपलब्ध कराने में लगने वाला समय (अगर कोई हो) दिखता है.
- बाहरी कंपाइलेशन में लगने वाला समय: बाहरी कंपाइलेशन, TensorFlow की एक सुविधा है.इसकी मदद से, XLA कंप्यूटेशन में कुछ ऑपरेशन, ऐक्सेलरेटर डिवाइस के बजाय होस्ट सीपीयू पर साफ़ तौर पर चलाए जा सकते हैं. जैसे, tf.summary या tf.print, जिनके लिए I/O ऐक्सेस की ज़रूरत होती है और डिवाइस के पास यह ऐक्सेस नहीं होता.
- सभी एचएलओ ऑपरेशन के लिए GFLOPS/s को प्लॉट करने वाला चार्ट, जो कुल समय के हिसाब से क्रम में लगाया गया है.
- सिर्फ़ टीपीयू के लिए, हर एचएलओ के हिसाब से, डुप्लीकेट ग्रुप का समय: ड्रॉप-डाउन की मदद से, प्रोफ़ाइलिंग सेशन के दौरान किए गए अलग-अलग ग्रुप ऑपरेशन में से किसी एक को चुना जा सकता है. हो सकता है कि एक साथ किए गए उस ऑपरेशन के अलग-अलग इंस्टेंस, अलग-अलग रेप्लिक ग्रुप के बीच किए गए हों (उदाहरण के लिए, AllGather); एक पाई चार्ट में, इन अलग-अलग इंस्टेंस के बीच समय का बंटवारा दिखाया गया है.
एचएलओ ऑपरेशन के आंकड़ों की टेबल की जानकारी
एचएलओ ऑपरेशन के आंकड़ों की टेबल को क्रम से लगाने के लिए, किसी भी कॉलम के हेडर पर क्लिक करें. डिफ़ॉल्ट क्रम, ऑपरेटर के कुल समय के आधार पर तय होता है. इसे टेबल में “रैंक” के तौर पर लेबल किया गया है.
टेबल में हर एचएलओ ऑपरेशन के लिए यह जानकारी शामिल होती है:
- ऑपरेशन का नाम: XLA compiler, HLO ऑपरेशन को असाइन किया गया यूनीक नाम.
- प्रोग्राम आईडी: इस ऑपरेशन से जुड़े एचएलओ मॉड्यूल का आइडेंटिफ़ायर
- एचएलओ ऑपरेशन कैटगरी: इनकी जानकारी ज़्यादातर XLA कंपाइलर देता है. इसके अलावा, XProf कुछ ऑपरेशन (जैसे, कन्वोल्यूशन फ़्यूज़न) की पहचान करने और उनकी कैटगरी तय करने के लिए, हेयुरिस्टिक्स का इस्तेमाल करता है.
- एचएलओ ऑपरेशन टेक्स्ट: इसे XLA कंपाइलर उपलब्ध कराता है. इसमें इनपुट/पैरामीटर के टाइप और शेप जैसी जानकारी शामिल होती है.
- फ़्रेमवर्क ऑपरेशन का नाम: फ़्रेमवर्क लेवल पर ऑपरेशन (उदाहरण के लिए, JAX) का इस्तेमाल किया गया है, जिसकी वजह से यह एचएलओ ऑपरेशन जनरेट हुआ है.
- होने की संख्या: प्रोफ़ाइलिंग की अवधि के दौरान, इस खास एचएलओ ऑपरेशन को कितनी बार चलाया गया.
- कुल समय (μs): इस कार्रवाई को पूरा करने में लगने वाला कुल समय. अगर इस ऑपरेशन में कोई चाइल्ड ऑपरेशन है (उदाहरण के लिए, किसी फ़्यूज़न में), तो इसमें उन चाइल्ड ऑपरेशन में बिताया गया समय भी शामिल होता है.
- औसत समय (μs): इस एचएलओ ऑपरेशन को पूरा करने में लगने वाला औसत समय. इसमें चाइल्ड ऑपरेशन में लगने वाला समय भी शामिल है.
- कुल समय (μs): इस एचएलओ ऑपरेशन के लिए, सिर्फ़ मुख्य ऑपरेशन में बिताया गया कुल समय. इसमें, इसके चाइल्ड ऑपरेशन में बिताया गया समय शामिल नहीं है.
- औसत सेल्फ़ टाइम (μs): इस एचएलओ ऑपरेशन को एक बार पूरा करने में लगने वाला औसत समय. इसमें, इसके चाइल्ड ऑपरेशन में लगने वाला समय शामिल नहीं है.
- ऑपरेशन में बिताया गया कुल समय (%): सभी ऑपरेशन में डिवाइस पर बिताए गए कुल समय के प्रतिशत के तौर पर, ऑपरेशन में बिताया गया समय.
- कुल सेल्फ़ टाइम (%): “रैंक” क्रम में पहले दिखने वाले सभी ऑप के लिए, कुल सेल्फ़ टाइम (%) का रनिंग योग.
- डीएमए स्टॉल (%): डायरेक्ट मेमोरी ऐक्सेस (डीएमए) ऑपरेशन की वजह से, ऑपरेशन के रुकने के कुल समय का प्रतिशत.
- अगर उपलब्ध हो, तो FLOPs, HBM, और इंटरनल TPU मेमोरी के लिए बैंडविड्थ खपत (इस्तेमाल/सेकंड) (उदाहरण के लिए, CMEM सिर्फ़ TPU v4 पर मौजूद है). इन सभी का हिसाब, कंपाइलर के स्टैटिक लागत विश्लेषण (न्यूमेरेटर) और प्रोफ़ाइल किए गए प्रोग्राम के रन टाइम (डेनोमिनेटर) का इस्तेमाल करके लगाया जाता है.
- मॉडल GFLOPS/s: XLA कंपाइलर, GFLOPs की लागत का हिसाब लगाता है और प्रोफ़ाइल से समय का आकलन किया जाता है.
- नॉर्मलाइज़ किया गया GFLOPS/s: यह हर ऑपरेशन के आधार पर, कंपाइलर से कैलकुलेट किए गए FLOPs को नॉर्मलाइज़ करता है. यह संख्या के सटीक होने के आधार पर किया जाता है. साथ ही, अलग-अलग सटीक संख्याओं के लिए, डिवाइस के साथ काम करने वाले सबसे ज़्यादा FLOPs के आधार पर भी किया जाता है. उदाहरण के लिए, TPU v6e, bf16 के मुकाबले int8 में दोगुने पीक एफ़एलओपी का इस्तेमाल करता है. XProf डिफ़ॉल्ट रूप से bf16 में नॉर्मलाइज़ करता है.
- मेमोरी बीडब्ल्यू: किसी भी मेमोरी (उदाहरण के लिए, ऑन-चिप TPU VMEM और HBM) से, ऑपरेशन में खर्च होने वाले बाइट/सेकंड की संख्या. XLA कंपाइलर, “बाइट” की संख्या दिखाता है और प्रोफ़ाइल में अवधि को मेज़र किया जाता है.
- HBM BW: खास तौर पर HBM से खर्च किए गए बाइट/सेकंड की संख्या.
- ऑपरेशनल इंटेंसिटी: इसका हिसाब, हर बाइट के लिए FLOPS के अनुपात के तौर पर लगाया जाता है. इसे रूफ़लाइन विश्लेषण के लिए तय किया गया है.
- कंप्यूट/मेमोरी बाउंड: रूफ़लाइन मॉडल के आधार पर, यह कॉलम यह बताता है कि ऑपरेशन की परफ़ॉर्मेंस मुख्य रूप से कंप्यूट की क्षमताओं या मेमोरी बैंडविड्थ से सीमित है या नहीं.
- फिर से मेटाडेटा बनाना: इससे पता चलता है कि ऑपरेशन, फिर से मेटाडेटा बनाने का हिस्सा था या नहीं.
- बाहर से कंपाइल करना: इससे पता चलता है कि ऑपरेशन, Tensorflow की बाहर से कंपाइल करने की सुविधा का इस्तेमाल करके, होस्ट सीपीयू पर चलाया गया था या नहीं.
- ऑटो-ट्यून किया गया: इससे पता चलता है कि ऑडियो को XLA ने अपने-आप ट्यून किया है या नहीं. ज़्यादा जानकारी के लिए, ऑटोट्यूनिंग और परसिस्टेड ऑटोट्यूनिंग देखें.