Qualcomm NPU kıyaslaması
Giriş
- Microsoft, Qualcomm Arm tabanlı SoC üzerinde çalışan Windows yüklü Surface tabletler sunuyor.
- Bu tabletler AI PC olarak pazarlanıyor ve diğer sistemlere göre makine öğrenimi modellerini daha hızlı ve verimli çalıştırabildiği söyleniyor.
- Qualcomm donanımına, özellikle de NPU'ya büyük ilgi duyulduğu için bu platforma üçüncü taraf uygulamaları taşımaya çok fazla zaman ve kaynak harcandı.
- Ancak dış geliştiricilerin hızlı sonuç alabilmesi için kod örnekleri veya kıyaslamalar neredeyse hiç olmadığından, performansı göstermek için bağımsız bir proje oluşturuldu.
- Performans beklenenden düşük çıktığı için, gecikmeyi azaltmaya yönelik fikirler edinmek amacıyla kıyaslama sonuçları paylaşılıyor.
Kurulum
Python
- Test betiklerini çalıştırmak için Python kullanılıyor.
- Microsoft Store'daki Python, Arm mimarisini desteklemediğinden resmi Python.org yükleyicisinin kullanılması öneriliyor.
- Raporlanan sonuçlarda Python 3.11.9 sürümü kullanıldı.
Cmake
- Onnx'i derlemek için
cmake derleme aracına ihtiyaç var.
- Powershell'de
winget install cmake komutunu çalıştırın.
Visual Studio
- Derleyici için Visual Studio gerekli.
- Visual Studio Community Edition'ı indirip kurarken
Desktop C++ Development iş yükünü seçin.
Pip paketleri
- Gerekli Python paketleri
py -m pip install -r requirements.txt komutuyla kurulabilir.
- Qualcomm Onnx Runtime ile uyumlu olan Onnx 1.16 sürümü kullanılıyor.
Kıyaslama
Çalıştırma
- Kıyaslamayı çalıştırma:
py benchmark_matmul.py
Çıktıyı anlamak
- Onnx çalışma zamanı başlangıçta bol miktarda günlük çıktısı üretir.
- Kıyaslama sonuçları, CPU ve NPU'nun sayısal sonuçlarının birbiriyle uyumlu olduğunu doğruluyor.
- CPU 821 Gigaops, ilk NPU yaklaşımı 225 Gigaops, ikinci yaklaşım ise 573 Gigaops performans gösteriyor.
Kıyaslamanın neyi ölçtüğü
- Kıyaslama, OpenAI'nin Whisper'ı gibi transformer modellerde en çok zaman alan katmanlara benzer 6 büyük matris çarpımı çalıştırıyor.
- NPU, özellikle nicemlenmiş modelleri verimli biçimde çalıştırıyor; 8 bit giriş ve çıkış kullanan modeller daha hızlı.
Karışıklığa yol açabilecek unsurlar
Hesaplama sınırları
- Modern transformer modeller büyük matris çarpımlarına dayanır ve bellek tarafından sınırlanabilir.
- Girdi matrisleri, döşeme ve yeniden kullanım mümkün olacak şekilde daha kare biçime getiriliyor.
Güç ayarları
- Windows'ta enerji kullanımı ayarını "En iyi performans" olarak seçin ve tableti prize takılıyken kıyaslamayı çalıştırın.
Model topolojisi
- Modern yapay zeka modellerini yansıtan, ancak yorumlamayı kolaylaştırmak için sadeleştirilmiş grafikler oluşturuluyor.
Yapılandırma hatası
- Modelin oluşturulma ve çalıştırılma biçimi, sürücü veya hızlandırıcı uygulamasındaki hızlı yollardan sapıyor olabilir.
Onnx çerçevesi
- Windows'ta yapay zeka hızlandırmasına erişmenin çeşitli yolları var ve Onnx en uygun çerçeve gibi görünüyor.
Sonuçların yorumlanması
- Snapdragon X 12-core X1E80100 üzerinde çalıştırıldığında NPU sonuçları CPU'dan daha yavaş kalıyor.
- Pazarlama materyallerinde vaat edilen 45 trilyon ops/s değerinin yalnızca %1,3'üne ulaşılıyor.
- Nvidia Geforce RTX 4080 Laptop GPU üzerinde ise 3.2ms'de çalışarak 2.160 Gigaops performans gösteriyor.
GN⁺ Özeti
- Qualcomm NPU'nun performansı beklentilerin altında kalıyor ve CPU'dan daha yavaş sonuç veriyor.
- NPU performansını optimize etmeye yönelik yazılım değişiklikleri konusunda umut bulunuyor.
- Qualcomm NPU'da hızlandırma performansı elde etmek için en iyi seçeneğin Onnx çerçevesi olduğu düşünülüyor.
- Nvidia GPU ile karşılaştırıldığında Qualcomm NPU'nun performansı belirgin biçimde geride kalıyor.
2 yorum
Ryzen NPU'nun CPU'dan biraz daha hızlı olduğunu sanıyordum ama Snapdragon hevesim bir anda söndü
Hacker News görüşleri
CPU ile GPU arasındaki performans farkı küçük. Bu,
onnxruntimeile ilgili bir sorun olabilir. NPU, hızdan çok düşük güç tüketimine odaklanıyorApple Neural Engine, CPU veya GPU'dan çok daha hızlı
NPU'nun amacı küçük modelleri düşük güçle çalıştırmak
NPU'ya model dağıtmak için profil tabanlı optimizasyon gerekir
GitHub'daki açıklama blogdan daha faydalı
int8 matmulçalıştırıldığındaonnxperformansı yaklaşık 0.6TFQualcomm, NPU'ya doğrudan erişime izin vermiyor
Qualcomm SNPE SDK kullanma ihtimali var
Bu yazı belirli bir NPU, belirli bir benchmark, belirli bir kütüphane ve framework hakkında