यह लेख PyTorch में ध्यान तंत्रों (attention mechanisms) को प्रोफाइल करने का तरीका दिखाता है, प्रदर्शन बाटलनेक और अनुकूलन के अवसरों की पहचान करने के लिए प्रोफाइलर ट्रेस का उपयोग करके। यह नॉइज़ ध्यान कार्यान्वयनों की तुलना PyTorch के बिल्ट-इन स्केल्ड डॉट प्रोडक्ट एटेंशन (SDPA) से करता है, जो कर्नेल व्यवहार को दर्शाने के लिए है।

  • नॉइज़ कैजुअल एटेंशन में कई कर्नेल शामिल हैं, जिनमें matmul, स्केलिंग, मास्किंग, softmax और एक अप्रत्याशित मेमोरी कॉपी शामिल है जो आउट-ऑफ-प्लेस ऑपरेशन्स के कारण होता है।
  • masked_fill को इन-प्लेस masked_fill_ से बदलने से GPU ट्रेस से अनावश्यक मेमोरी कॉपी कर्नेल हट जाता है।
  • PyTorch का SDPA फंक्शन इनपुट प्रकारों और हार्डवेयर के आधार पर स्वचालित रूप से सबसे तेज़ उपलब्ध बैकएंड (जैसे Flash Attention या cuDNN) पर डिस्पैच करता है।
  • व्यक्तिगत SDPA बैकएंड्स की प्रोफाइलिंग अलग-अलग कर्नेल साइनचर दिखाती है, जिससे डेवलपर्स सत्यापित कर सकते हैं कि कौन सा कार्यान्वयन सक्रिय है।

इन प्रोफाइलर ट्रेस को समझने से उपयोगकर्ताओं को अनावश्यक मेमोरी ऑपरेशन्स को हटाकर और PyTorch के कुशल ध्यान बैकएंड्स का लाभ उठाकर ट्रान्सफॉर्मर मॉडल्स को अनुकूलित करने में मदद मिलती है।