Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
WinMLRunner, Bir modelin Windows ML API'leri ile değerlendirildiğinde başarıyla çalıştırılıp çalıştırılamadığını test etmek için bir araçtır. Gpu ve/veya CPU'da değerlendirme süresini ve bellek kullanımını da yakalayabilirsiniz. .onnx veya .pb biçimindeki modeller, giriş ve çıkış değişkenlerinin tensor veya görüntü olduğu durumlarda değerlendirilebilir. WinMLRunner'ı kullanmanın 2 yolu vardır:
- Komut satırı python aracını indirin.
- WinML Panosu içinde kullanın. Daha fazla bilgi için WinML Panosu belgelerine bakın
Model Çalıştırma
İlk olarak indirilen Python aracını açın. WinMLRunner.exeiçeren klasöre gidin ve aşağıda gösterildiği gibi yürütülebilir dosyayı çalıştırın. Yükleme konumunu sizinkiyle eşleşen konumla değiştirdiğinden emin olun:
.\WinMLRunner.exe -model SqueezeNet.onnx
Ayrıca, aşağıdaki gibi bir komutla bir model klasörü de çalıştırabilirsiniz.
WinMLRunner.exe -folder c:\data -perf -iterations 3 -CPU`\
İyi bir model çalıştırma
Aşağıda bir modeli başarıyla çalıştırma örneği verilmiştir. Modelin önce nasıl yüklendiğine ve model meta verilerinin nasıl çıktığının alındığına dikkat edin. Ardından model, CPU ve GPU üzerinde bağımsız olarak çalıştırılır ve bağlama başarısı, değerlendirme başarısı ile model çıkışını üretir.
Kötü bir modeli çalıştırma
Aşağıda, yanlış parametrelere sahip bir modeli çalıştırma örneği verilmiştir. GPU'da değerlendirme yaparken "FAILED" çıkışına dikkat edin.
Cihaz seçimi ve iyileştirme
Varsayılan olarak, model CPU ve GPU üzerinde ayrı olarak çalışır, ancak -CPU veya -GPU bayrağına sahip bir cihaz belirtebilirsiniz. Aşağıda yalnızca CPU kullanarak modeli 3 kez çalıştırma örneği verilmiştir:
WinMLRunner.exe -model c:\data\concat.onnx -iterations 3 -CPU
Performans verilerini kaydet
Performans verilerini yakalamak için -perf bayrağını kullanın. Cpu ve GPU üzerindeki veri klasöründeki tüm modelleri ayrı ayrı 3 kez çalıştırmaya ve performans verilerini yakalamaya yönelik bir örnek aşağıda verilmiştir:
WinMLRunner.exe -folder c:\data iterations 3 -perf
Performans ölçümleri
Aşağıdaki performans ölçümleri her yükleme, bağlama ve değerlendirme işlemi için komut satırına ve .csv dosyasına çıkış olarak gösterilir:
- Duvar saati süresi (ms): bir işlemin başlangıcı ve sonu arasında geçen gerçek zaman.
- GPU süresi (ms): BIR işlemin CPU'dan GPU'ya geçirilip GPU'da yürütülme zamanı (not: Load() GPU'da yürütülmemektedir).
- CPU süresi (ms): bir işlemin CPU üzerinde yürütülecek zamanı.
- Ayrılmış ve Paylaşılan Bellek Kullanımı (MB): CPU veya GPU üzerinde değerlendirme sırasında ortalama çekirdek ve kullanıcı düzeyinde bellek kullanımı (MB cinsinden).
- Çalışma Kümesi Belleği (MB): Değerlendirme sırasında cpu üzerinde işlemin gerektirdiği DRAM belleği miktarı. Ayrılmış Bellek (MB) - Ayrılmış GPU'nun VRAM'sinde kullanılan bellek miktarı.
- Paylaşılan Bellek (MB): GPU tarafından DRAM üzerinde kullanılan bellek miktarı.
Örnek performans çıkışı:
Örnek girişleri test edin
CPU ve GPU üzerinde ayrı olarak ve girişi CPU ve GPU'ya ayrı olarak bağlayarak bir model çalıştırın (toplam 4 çalıştırma):
WinMLRunner.exe -model c:\data\SqueezeNet.onnx -CPU -GPU -CPUBoundInput -GPUBoundInput
CPU'da, girişi GPU'ya bağlı ve RGB görüntü olarak yüklenen bir model çalıştırın.
WinMLRunner.exe -model c:\data\SqueezeNet.onnx -CPU -GPUBoundInput -RGB
İzleme Günlüklerini Yakalama
Aracı kullanarak izleme günlüklerini yakalamak istiyorsanız logman komutlarını hata ayıklama bayrağıyla birlikte kullanabilirsiniz:
logman start winml -ets -o winmllog.etl -nb 128 640 -bs 128logman update trace winml -p {BCAD6AEE-C08D-4F66-828C-4C43461A033D} 0xffffffffffffffff 0xff -ets WinMLRunner.exe -model C:\Repos\Windows-Machine-Learning\SharedContent\models\SqueezeNet.onnx -debuglogman stop winml -ets
winmllog.etl dosyası, WinMLRunner.exeile aynı dizinde görünür.
İzleme Günlüklerini Okuma
traceprt.exekullanarak komut satırından aşağıdaki komutu çalıştırın.
tracerpt.exe winmllog.etl -o logdump.csv -of CSV
Ardından dosyayı açın logdump.csv .
Alternatif olarak, Windows Performans Çözümleyicisi'ni (Visual Studio'dan) kullanabilirsiniz. Windows Performance Analyzer'ı başlatın ve winmllog.etl açın.
-CPU, -GPU, -GPUHighPerformance, -GPUMinPower -BGR, -RGB, -tensor, -CPUBoundInput, -GPUBoundInput birbirini dışlamaz (örneğin, modeli farklı yapılandırmalarla çalıştırmak istediğiniz kadar birleştirebilirsiniz).
Dinamik DLL Yükleniyor
WinMLRunner'ı başka bir WinML sürümüyle çalıştırmak istiyorsanız (örneğin, performansı eski bir sürümle karşılaştırmak veya daha yeni bir sürümü test etmek), windows.ai.machinelearning.dll ve directml.dll dosyalarını WinMLRunner.exeile aynı klasöre yerleştirmeniz yeterlidir. WinMLRunner önce bu DLL'leri arar ve bulamazsa C:/Windows/System32'ye geri döner.
Bilinen sorunlar
- Dizi/Harita girişleri henüz desteklenmiyor (model yalnızca atlanır, bu nedenle klasördeki diğer modelleri engellemez);
- Gerçek verilerle -folder bağımsız değişkenini kullanarak birden çok modeli güvenilir bir şekilde çalıştıramıyoruz. Yalnızca 1 giriş belirtebildiğimiz için girişin boyutu modellerin çoğuyla uyuşmaz. Şu anda -folder bağımsız değişkenini kullanmak yalnızca çöp verilerle iyi sonuç verir;
- Gri veya YUV olarak atık girişi oluşturma şu anda desteklenmiyor. İdeal olarak, WinMLRunner'ın çöp veri işlem hattı winml'ye verebileceğimiz tüm giriş türlerini desteklemelidir.