Qualcomm NPU बेंचमार्किंग
परिचय
- Microsoft, Qualcomm Arm-आधारित SoC पर चलने वाला Windows देने वाले Surface टैबलेट उपलब्ध कराता है.
- इन टैबलेट्स को AI PC के रूप में प्रचारित किया जाता है, और दावा किया जाता है कि ये अन्य सिस्टम्स की तुलना में machine learning models को अधिक तेज़ी और दक्षता से चला सकते हैं.
- Qualcomm के hardware, खासकर NPU, में गहरी रुचि होने के कारण इस platform पर third-party apps port करने में काफी समय और संसाधन लगाए गए.
- लेकिन बाहरी developers के लिए तेज़ी से परिणाम पाने हेतु code examples या benchmarks लगभग न के बराबर थे, इसलिए प्रदर्शन दिखाने के लिए एक स्वतंत्र project तैयार किया गया.
- प्रदर्शन उम्मीद से कम निकला, इसलिए latency घटाने के लिए विचार पाने के उद्देश्य से benchmark प्रकाशित किया गया.
इंस्टॉलेशन
Python
- test scripts चलाने के लिए Python का उपयोग किया गया.
- Microsoft Store का Python Arm architecture को support नहीं करता, इसलिए आधिकारिक Python.org installer का उपयोग करने की सिफारिश की गई.
- रिपोर्ट किए गए परिणाम Python 3.11.9 version का उपयोग करके प्राप्त किए गए.
Cmake
- Onnx को compile करने के लिए cmake build tool आवश्यक है.
- Powershell में
winget install cmake कमांड चलाएँ.
Visual Studio
- compiler के लिए Visual Studio आवश्यक है.
- Visual Studio Community Edition डाउनलोड और इंस्टॉल करते समय
Desktop C++ Development workload चुनें.
Pip packages
- आवश्यक Python packages को
py -m pip install -r requirements.txt कमांड से इंस्टॉल किया जा सकता है.
- Qualcomm Onnx Runtime के साथ compatible Onnx version 1.16 का उपयोग किया गया.
बेंचमार्क
चलाना
- benchmark चलाएँ:
py benchmark_matmul.py
आउटपुट को समझना
- Onnx runtime शुरुआती log spam उत्पन्न करता है.
- benchmark results यह सत्यापित करते हैं कि CPU और NPU के संख्यात्मक परिणाम एक-दूसरे से मेल खाते हैं.
- CPU ने 821 Gigaops, पहले NPU approach ने 225 Gigaops, और दूसरे ने 573 Gigaops प्रदर्शन दिखाया.
बेंचमार्क मापन
- benchmark, OpenAI के Whisper जैसे transformer models की सबसे समय-खपत वाली layer के समान 6 बड़े matrix multiplications चलाता है.
- NPU मुख्य रूप से quantized models को प्रभावी ढंग से चलाता है, और 8-bit input तथा output वाले models अधिक तेज़ हैं.
भ्रम पैदा करने वाले कारक
compute सीमाएँ
- आधुनिक transformer models बड़े matrix multiplications पर आधारित होते हैं, और memory bottleneck बन सकती है.
- input matrices को अधिक square बनाया गया ताकि tiling और reuse संभव हो सके.
power settings
- Windows की energy usage setting को "Best Performance" पर सेट किया गया, और benchmark चलाते समय tablet को power से जोड़ा गया.
model topology
- आधुनिक AI models को प्रतिबिंबित करने वाला graph बनाया गया, लेकिन उसे समझने में आसान रखने के लिए सरल किया गया.
configuration errors
- model build और execution का तरीका driver या accelerator implementation के fast path से बाहर जा सकता है.
Onnx framework
- Windows पर AI acceleration तक पहुँचने के कई तरीके हैं, और Onnx सबसे उपयुक्त framework प्रतीत होता है.
परिणामों की व्याख्या
- Snapdragon X 12-core X1E80100 पर चलाने पर NPU का परिणाम CPU से धीमा रहा.
- यह marketing materials में वादा किए गए 45 ट्रिलियन ops/s का केवल 1.3% प्रदर्शन दिखाता है.
- Nvidia Geforce RTX 4080 Laptop GPU पर यह 3.2ms में चला और 2,160 Gigaops प्रदर्शन दिखाया.
GN⁺ का सार
- Qualcomm NPU का प्रदर्शन उम्मीदों पर खरा नहीं उतरता और CPU से धीमा परिणाम दिखाता है.
- NPU प्रदर्शन को optimize करने के लिए software changes की संभावना को लेकर उम्मीद बनी हुई है.
- Qualcomm NPU पर acceleration performance पाने के लिए Onnx framework सबसे बेहतर विकल्प लगता है.
- Nvidia GPU की तुलना में Qualcomm NPU का प्रदर्शन काफी कमजोर है.
2 टिप्पणियां
मुझे लगा था कि ryzen npu, cpu से थोड़ा तेज़ है, लेकिन इससे Snapdragon लेने का मन पूरी तरह ठंडा पड़ गया।
Hacker News राय
CPU और GPU के बीच परफ़ॉर्मेंस का अंतर छोटा है। यह onnxruntime की समस्या हो सकती है। NPU का फ़ोकस गति से ज़्यादा कम बिजली खपत पर है
Apple Neural Engine, CPU या GPU की तुलना में काफ़ी तेज़ है
NPU का उद्देश्य छोटे models को कम बिजली में चलाना है
NPU पर model deploy करने के लिए profile-based optimization की ज़रूरत होती है
GitHub की व्याख्या ब्लॉग से ज़्यादा उपयोगी है
Qualcomm NPU तक direct access की अनुमति नहीं देता
Qualcomm SNPE SDK के इस्तेमाल की संभावना है
यह लेख एक खास NPU, खास benchmark, और खास library व framework के बारे में है