1 पॉइंट द्वारा GN⁺ 2024-10-17 | 2 टिप्पणियां | WhatsApp पर शेयर करें

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 टिप्पणियां

 
bungker 2024-10-18

मुझे लगा था कि ryzen npu, cpu से थोड़ा तेज़ है, लेकिन इससे Snapdragon लेने का मन पूरी तरह ठंडा पड़ गया।

 
GN⁺ 2024-10-17
Hacker News राय
  • CPU और GPU के बीच परफ़ॉर्मेंस का अंतर छोटा है। यह onnxruntime की समस्या हो सकती है। NPU का फ़ोकस गति से ज़्यादा कम बिजली खपत पर है

    • NPU का उपयोग AI कंप्यूट को CPU से अलग करके SoC के हिस्से के रूप में किया जाता है
    • अगर CPU, NPU, और GPU की बिजली खपत को infinite loop में मापा जाए, तो उम्मीद है कि NPU सबसे कम होगा
    • NPU काफ़ी silicon area लेता है, इसलिए अगर उसका सही इस्तेमाल न हो तो निराशा होती है
  • Apple Neural Engine, CPU या GPU की तुलना में काफ़ी तेज़ है

    • परफ़ॉर्मेंस मॉडल architecture, conversion, और tuning के अनुसार बदलती है
    • XCode मॉडल के execution time को मापने के लिए tools देता है
    • ML framework/runtime सभी operators को implement नहीं कर सकते
  • NPU का उद्देश्य छोटे models को कम बिजली में चलाना है

    • NPU optimized models के लिए होता है, और छोटे काम करता है
    • Windows में full-screen OCR जैसी चीज़ें चलाई जा सकती हैं
  • NPU पर model deploy करने के लिए profile-based optimization की ज़रूरत होती है

    • जो model CPU पर अच्छी तरह चलता है, वह NPU पर निराशाजनक नतीजे दे सकता है
  • GitHub की व्याख्या ब्लॉग से ज़्यादा उपयोगी है

    • int8 matmul चलाने पर onnx performance लगभग 0.6TF है
  • Qualcomm NPU तक direct access की अनुमति नहीं देता

    • conversion tools optimization मिस कर सकते हैं
    • NPU छोटे ML models और तेज़ function approximation के लिए उपयुक्त है
  • Qualcomm SNPE SDK के इस्तेमाल की संभावना है

    • यह जानने की जिज्ञासा है कि Hexagon SDK ठीक से काम करता है या नहीं
  • यह लेख एक खास NPU, खास benchmark, और खास library व framework के बारे में है

    • इसलिए सामान्य निष्कर्ष निकालना कठिन है