रूफ़लाइन का विश्लेषण करने वाला टूल
रूफ़लाइन विश्लेषण टूल, परफ़ॉर्मेंस का एक विज़ुअल मॉडल दिखाता है. इसका इस्तेमाल करके, हार्डवेयर की उन सीमाओं को समझा जा सकता है जिनका असर आपके प्रोग्राम की परफ़ॉर्मेंस पर पड़ता है. खास तौर पर, यह इस बात पर फ़ोकस करता है कि प्रोग्राम, मेमोरी-बाउंड है या प्रोसेस-बाउंड. साथ ही, यह भी पता लगाता है कि प्रोग्राम की परफ़ॉर्मेंस, हार्डवेयर की ज़्यादा से ज़्यादा परफ़ॉर्मेंस के कितने करीब है. हार्डवेयर की ज़्यादा से ज़्यादा परफ़ॉर्मेंस को "रूफ़लाइन" के तौर पर दिखाया जाता है.
इन प्लैटफ़ॉर्म पर काम करता है
TPU: काम करता है
जीपीयू: काम करता है (बीटा वर्शन में)
रूफ़लाइन चार्ट क्या है
रूफ़लाइन चार्ट, ऑपरेशनल इंटेंसिटी (ऐक्सेस किए गए हर बाइट के लिए FLOPS) और हर सेकंड में हासिल किए गए FLOPS के बीच के संबंध को विज़ुअलाइज़ करता है.
\[ Roofline = min(Operational Intensity \times Peak Memory Bandwidth, Peak FLOPS) \]
"रूफ़" आकार, पीक एफ़एलओपीएस और मेमोरी बैंडविड्थ और ऑपरेशनल इंटेंसिटी के हिसाब से हासिल की जा सकने वाली परफ़ॉर्मेंस में से कम के हिसाब से तय होता है. रिज पॉइंट से पता चलता है कि ज़्यादा से ज़्यादा FLOPS पाने के लिए, कम से कम कितनी ऑपरेशनल इंटेंसिटी की ज़रूरत है.
रूफ़लाइन मॉडल के बारे में ज़्यादा जानने के लिए, रूफ़लाइन: फ़्लोटिंग-पॉइंट प्रोग्राम और मल्टीकोर आर्किटेक्चर के लिए, बेहतरीन विज़ुअल परफ़ॉर्मेंस मॉडल पढ़ें. इसके अलावा, Wikipedia पर रूफ़लाइन मॉडल विषय में भी पढ़ा जा सकता है.
रूफ़लाइन चार्ट को समझना
रूफ़लाइन चार्ट पर, प्रोग्राम के अलग-अलग चरणों, हिस्सों या अलग-अलग एचएलओ ऑपरेशन के लिए, ऑपरेशन की तीव्रता और हासिल किए गए एफ़एलओपी को प्लॉट करके, परफ़ॉर्मेंस में आने वाली रुकावटों के बारे में अहम जानकारी हासिल की जा सकती है:
- अगर कोई डेटा पॉइंट, रूफ़लाइन के तिरछे हिस्से पर है, तो हो सकता है कि परफ़ॉर्मेंस पर मेमोरी बैंडविड्थ (मेमोरी-बाउंड) का असर पड़ रहा हो. ऑपरेशन की तीव्रता बढ़ाने (ऐक्सेस किए गए डेटा के हर बाइट के लिए ज़्यादा कैलकुलेशन करने) से परफ़ॉर्मेंस बेहतर हो सकती है.
- अगर कोई डेटा पॉइंट रूफ़लाइन के सपाट हिस्से पर है, तो हो सकता है कि परफ़ॉर्मेंस, कंप्यूट की क्षमता (कंप्यूट-बाउंड) से सीमित हो. ऐसे में, ऑपरेशन की तीव्रता को और बढ़ाने से परफ़ॉर्मेंस में काफ़ी बढ़ोतरी नहीं हो सकती. ऐसा तब तक नहीं होगा, जब तक हार्डवेयर के पीक एफ़एलओपी का बेहतर इस्तेमाल नहीं किया जाता.
- किसी डेटा पॉइंट की रूफ़लाइन से दूरी से पता चलता है कि परफ़ॉर्मेंस को बेहतर किया जा सकता है. अगर यह अंतर ज़्यादा है, तो इसका मतलब है कि प्रोग्राम को ऑप्टिमाइज़ करने के अवसर हैं, ताकि हार्डवेयर की क्षमताओं का बेहतर तरीके से इस्तेमाल किया जा सके.
इंटरफ़ेस कॉम्पोनेंट
रूफ़लाइन विश्लेषण टूल के इंटरफ़ेस में कई मुख्य कॉम्पोनेंट होते हैं:
- डिवाइस की जानकारी वाले सेक्शन में, हार्डवेयर की खास जानकारी दी जाती है. इसका इस्तेमाल, चार्ट पर स्टैटिक तौर पर “रूफ़लाइन” बनाने के लिए किया जाता है
- प्रोग्राम-लेवल का रूफ़लाइन चार्ट, जिसमें इनके हिसाब से डेटा पॉइंट मौजूद हैं:
- प्रोफ़ाइल का कुल समय.
- प्रोफ़ाइल की कुल अवधि, लेकिन FLOPS/s डेटा के साथ. यह डेटा, हार्डवेयर की परफ़ॉर्मेंस काउंटर से मिलता है, न कि XLA कंपाइलर से कैलकुलेट किए गए डिफ़ॉल्ट लागत मॉडल से.
- प्रोफ़ाइल के दौरान पूरे किए गए चरणों का औसत (ट्रेनिंग जॉब के लिए; अनुमान लगाने वाले जॉब के लिए, चरण के शब्दों को अनदेखा किया जा सकता है).
- प्रोफ़ाइल की अवधि के दौरान पूरा किया गया हर चरण (ट्रेनिंग जॉब के लिए; अनुमान लगाने वाले जॉब के लिए, चरण के शब्दों को अनदेखा किया जा सकता है).
- रूफ़लाइन चार्ट में ये सुविधाएं भी होती हैं:
- दिए गए ड्रॉप-डाउन का इस्तेमाल करके, इनफ़ीड/आउटफ़ीड ऑपरेशन को शामिल या बाहर रखा जा सकता है.
- चार्ट में मौजूद किसी भी डेटा पॉइंट पर कर्सर घुमाने पर, ज़्यादा काम की जानकारी दिखती है. जैसे, अलग-अलग मेमोरी के लिए बैंडविड्थ की संख्या, बिताया गया कुल समय वगैरह.
- प्रोग्राम-लेवल की आंकड़ों वाली टेबल, जो हर डेटा पॉइंट के लिए ज़्यादा जानकारी देती है. जैसे, ज़्यादा से ज़्यादा मेमोरी का इस्तेमाल %, पीक एफ़एलओपी रेट % वगैरह.
- दूसरा रूफ़लाइन चार्ट, जो ज़्यादा जानकारी देता है. इसमें प्रोफ़ाइलिंग की अवधि के दौरान, सबसे ज़्यादा समय लेने वाले 1,000 ऑपरेशन के लिए डेटा पॉइंट प्लॉट किए गए हैं:
- प्रोग्राम-लेवल के रूफ़लाइन चार्ट की तरह ही, हर डेटा पॉइंट पर कर्सर घुमाने पर, उस ऑपरेशन के बारे में ज़्यादा जानकारी दिखती है.
- चार्ट पर दिखाए गए डेटा पॉइंट को इन तरीकों से पसंद के मुताबिक बनाया जा सकता है:
- ड्रॉप-डाउन की मदद से, इनफ़ीड और आउटफ़ीड ऑपरेशन को शामिल करना या बाहर रखना.
- कार्रवाइयों की खास कैटगरी के लिए फ़िल्टर करना.
- किसी खास संसाधन से जुड़े ऑपरेशन को फ़िल्टर करना.
- किसी खास ऑपरेशन के लिए फ़िल्टर करना.
- प्रोग्राम-लेवल टेबल की तरह ही एक दूसरी आंकड़ों की टेबल, जिसमें हर डेटा पॉइंट के लिए ज़्यादा जानकारी दी जाती है.
ऊपर बताए गए सभी सेक्शन में, ये यादें देखी जा सकती हैं:
- TPU के लिए: HBM, VMEM, CMEM (सिर्फ़ TPU v4 के लिए).
- जीपीयू के लिए: HBM, L1/SharedMem.
- चार्ट में मिलती-जुलती लाइनें सिर्फ़ तब दिखती हैं, जब प्रोफ़ाइल की अवधि के दौरान कोई ऐसा ऑपरेशन हुआ हो जो उस मेमोरी से जुड़ा हो. उदाहरण के लिए, अगर सभी ऑपरेशन HBM या कंप्यूट बाउंड हैं, तो आपको VMEM या CMEM के लिए लाइनें नहीं दिखेंगी.