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:
- Unduh alat python baris perintah.
- Gunakan dalam Dasbor WinML. Untuk informasi selengkapnya, lihat dokumentasi Dasbor WinML
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.
Menjalankan model yang buruk
Di bawah ini adalah contoh menjalankan model dengan parameter yang salah. Perhatikan output YANG GAGAL saat mengevaluasi pada GPU.
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:
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
.
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.