Bagikan melalui


WinMLRunner

WinMLRunner adalah alat untuk menguji apakah model berhasil berjalan saat dievaluasi dengan API Windows ML. Anda juga dapat menangkap waktu evaluasi dan penggunaan memori pada GPU dan/atau CPU. Model dalam format .onnx atau .pb dapat dievaluasi di mana variabel input dan output adalah tensor atau gambar. Ada 2 cara untuk menggunakan WinMLRunner:

Menjalankan Model

Pertama, buka alat Python yang diunduh. Navigasi ke folder yang berisi WinMLRunner.exe, dan jalankan executable seperti yang ditunjukkan di bawah ini. Pastikan untuk mengganti lokasi penginstalan dengan yang cocok dengan lokasi Anda:

.\WinMLRunner.exe -model SqueezeNet.onnx

Anda juga dapat menjalankan folder model, dengan perintah seperti berikut ini.

WinMLRunner.exe -folder c:\data -perf -iterations 3 -CPU`\

Menjalankan model yang baik

Di bawah ini adalah contoh menjalankan model dengan sukses. Perhatikan bagaimana pertama kali model memuat dan menghasilkan metadata model. Kemudian model berjalan pada CPU dan GPU secara terpisah, menghasilkan keberhasilan pengikatan, keberhasilan evaluasi, dan output model.

Sample trace log output for running a good model

Menjalankan model yang buruk

Di bawah ini adalah contoh menjalankan model dengan parameter yang salah. Perhatikan output YANG GAGAL saat mengevaluasi pada GPU.

Sample trace log output for running a bad model

Pemilihan dan pengoptimalan perangkat

Secara default, model berjalan pada CPU dan GPU secara terpisah, tetapi Anda dapat menentukan perangkat dengan bendera -CPU atau -GPU. Berikut adalah contoh menjalankan model 3 kali hanya menggunakan CPU:

WinMLRunner.exe -model c:\data\concat.onnx -iterations 3 -CPU

Mencatat data performa

Gunakan bendera -perf untuk mengambil data performa. Berikut adalah contoh menjalankan semua model di folder data pada CPU dan GPU secara terpisah 3 kali dan menangkap data performa:

WinMLRunner.exe -folder c:\data iterations 3 -perf

Pengukuran performa

Pengukuran performa berikut akan menjadi output ke baris perintah dan file .csv untuk setiap operasi pemuatan, pengikatan, dan evaluasi:

  • Waktu jam dinding (ms): waktu nyata yang berlalu antara awal dan akhir operasi.
  • Waktu GPU (ms): waktu untuk operasi diteruskan dari CPU ke GPU dan dijalankan pada GPU (catatan: Load() tidak dijalankan pada GPU).
  • Waktu CPU (ms): waktu untuk operasi dijalankan pada CPU.
  • Penggunaan Memori Khusus dan Bersama (MB): Rata-rata kernel dan penggunaan memori tingkat pengguna (dalam MB) selama evaluasi pada CPU atau GPU.
  • Memori Set Kerja (MB): Jumlah memori DRAM yang diperlukan proses pada CPU selama evaluasi. Memori Khusus (MB) - Jumlah memori yang digunakan pada VRAM GPU khusus.
  • Memori Bersama (MB): Jumlah memori yang digunakan pada DRAM oleh GPU.

Contoh output performa:

Sample performance output

Menguji input sampel

Jalankan model pada CPU dan GPU secara terpisah, dan dengan mengikat input ke CPU dan GPU secara terpisah (4 total eksekusi):

WinMLRunner.exe -model c:\data\SqueezeNet.onnx -CPU -GPU -CPUBoundInput -GPUBoundInput

Jalankan model pada CPU dengan input yang terikat ke GPU dan dimuat sebagai gambar RGB:

WinMLRunner.exe -model c:\data\SqueezeNet.onnx -CPU -GPUBoundInput -RGB

Menangkap Log Jejak

Jika Anda ingin mengambil log jejak menggunakan alat ini, Anda dapat menggunakan perintah logman bersama dengan bendera debug:

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

File winmllog.etl akan muncul di direktori yang sama dengan WinMLRunner.exe.

Membaca Log Jejak

Dengan menggunakan traceprt.exe, jalankan perintah berikut dari baris perintah.

tracerpt.exe winmllog.etl -o logdump.csv -of CSV

Selanjutnya, buka logdump.csv file.

Secara bergantian, Anda dapat menggunakan Windows Penganalisis Kinerja (dari Visual Studio). Luncurkan Penganalisis Kinerja Windows, dan buka winmllog.etl.

Sample the trace log output using Windows Performance Analyzer

Perhatikan bahwa -CPU, -GPU, -GPUHighPerformance, -GPUMinPower -BGR, -RGB, -tensor, -CPUBoundInput, -GPUBoundInput tidak saling eksklusif (yaitu Anda dapat menggabungkan sebanyak yang Anda inginkan untuk menjalankan model dengan konfigurasi yang berbeda).

Pemuatan DLL Dinamis

Jika Anda ingin menjalankan WinMLRunner dengan versi WinML lain (misalnya membandingkan performa dengan versi yang lebih lama atau menguji versi yang lebih baru), cukup tempatkan file windows.ai.machinelearning.dll dan directml.dll di folder yang sama dengan WinMLRunner.exe. WinMLRunner akan mencari DLL ini terlebih dahulu dan kembali ke C:/Windows/System32 jika tidak menemukannya.

Masalah yang diketahui

  • Input Urutan/Peta belum didukung (model hanya dilewati, sehingga tidak memblokir model lain dalam folder);
  • Kami tidak dapat menjalankan beberapa model dengan andal dengan argumen -folder dengan data nyata. Karena kita hanya dapat menentukan 1 input, ukuran input akan tidak cocok dengan sebagian besar model. Saat ini, menggunakan argumen -folder hanya berfungsi dengan baik dengan data sampah;
  • Menghasilkan input sampah karena Abu-abu atau YUV saat ini tidak didukung. Idealnya, alur data sampah WinMLRunner harus mendukung semua jenis input yang dapat kita berikan kepada winml.