Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
WinMLRunner je nástroj k otestování úspěšného spuštění modelu při vyhodnocení pomocí rozhraní API systému Windows ML. Můžete také zaznamenat čas vyhodnocení a využití paměti v GPU nebo procesoru. Modely ve formátu .onnx nebo .pb lze vyhodnotit, kde vstupní a výstupní proměnné jsou tensory nebo obrázky. WinMLRunner můžete použít 2 způsoby:
- Stáhněte nástroj pro příkazový řádek Python.
- Používá se na řídicím panelu WinML. Další informace najdete v dokumentaci k řídicímu panelu WinML.
Spuštění modelu
Nejprve otevřete stažený nástroj Python. Přejděte do složky obsahující WinMLRunner.exea spusťte spustitelný soubor, jak je znázorněno níže. Nezapomeňte nahradit umístění instalace tím, co odpovídá vašemu:
.\WinMLRunner.exe -model SqueezeNet.onnx
Můžete také spustit složku modelů pomocí příkazu, jako je například následující.
WinMLRunner.exe -folder c:\data -perf -iterations 3 -CPU`\
Spuštění dobrého modelu
Níže je příklad úspěšného spuštění modelu. Všimněte si, jak se jako první model načte a vypíše metadata modelu. Pak se model spustí na procesoru a GPU samostatně, vypíše úspěch vazby, úspěch vyhodnocení a výstup modelu.
Spuštění špatného modelu
Níže je příklad spuštění modelu s nesprávnými parametry. Všimněte si výstupu „FAILED“ při vyhodnocování na GPU.
Výběr a optimalizace zařízení
Ve výchozím nastavení model běží na procesoru a GPU samostatně, ale můžete zadat zařízení s příznakem -CPU nebo -GPU. Tady je příklad spuštění modelu 3krát pomocí pouze procesoru:
WinMLRunner.exe -model c:\data\concat.onnx -iterations 3 -CPU
Zaznamenávat data o výkonu
K zaznamenání dat o výkonu použijte příznak -perf. Tady je příklad spuštění všech modelů v datové složce na procesoru a GPU 3krát a zachytávání dat o výkonu:
WinMLRunner.exe -folder c:\data iterations 3 -perf
Měření výkonu
Následující měření výkonu budou na příkazovém řádku a v souboru .csv pro každé načtení, navázání a vyhodnocení operací:
- Nástěnný čas (ms): Uplynulý skutečný čas mezi začátkem a koncem operace.
- Čas GPU (ms): doba předání operace z procesoru do GPU a spuštění v GPU (poznámka: Load() se na GPU nespustí).
- Čas procesoru (ms): doba spuštění operace na procesoru.
- Využití vyhrazené a sdílené paměti (MB): Průměrné využití paměti na úrovni jádra a uživatele (v MB) během vyhodnocení procesoru nebo GPU
- Paměť pracovní sady (MB): Množství paměti DRAM, kterou proces na procesoru vyžaduje během vyhodnocení. Vyhrazená paměť (MB) – velikost paměti, která byla použita v paměti VRAM vyhrazeného GPU.
- Sdílená paměť (MB): Velikost paměti, která byla použita v DRAM GPU.
Ukázkový výstup výkonu:
Testování ukázkových vstupů
Spustit model na CPU a GPU samostatně, a samostatným připojením vstupu k CPU a GPU (celkem 4 spuštění):
WinMLRunner.exe -model c:\data\SqueezeNet.onnx -CPU -GPU -CPUBoundInput -GPUBoundInput
Spusťte model na procesoru se vstupem vázaným na GPU a načítáte ho jako obrázek RGB:
WinMLRunner.exe -model c:\data\SqueezeNet.onnx -CPU -GPUBoundInput -RGB
Zaznamenání protokolů trasování
Pokud chcete zachytit protokoly trasování pomocí nástroje, můžete použít příkazy logman ve spojení s příznakem ladění:
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
Soubor winmllog.etl se zobrazí ve stejném adresáři jako WinMLRunner.exe.
Čtení protokolů trasování
Pomocí traceprt.exespusťte z příkazového řádku následující příkaz.
tracerpt.exe winmllog.etl -o logdump.csv -of CSV
Nejprve otevřete soubor logdump.csv.
Alternativně můžete použít Analyzátor výkonu windows (ze sady Visual Studio). Spusťte Nástroj Windows Performance Analyzer a otevřete winmllog.etl.
Všimněte si, že -CPU, -GPU, -GPUHighPerformance, -GPUMinPower -BGR, -RGB, -tensor, -CPUBoundInput, -GPUBoundInput se vzájemně nevylučují (tj. můžete kombinovat tolik, kolik chcete spustit model s různými konfiguracemi).
Dynamické načítání knihovny DLL
Pokud chcete spustit WinMLRunner s jinou verzí WinML (například porovnání výkonu se starší verzí nebo testováním novější verze), jednoduše umístěte windows.ai.machinelearning.dll a directml.dll soubory do stejné složky jako WinMLRunner.exe. WinMLRunner nejprve vyhledá tyto knihovny DLL a vrátí se do C:/Windows/System32, pokud je nenajde.
Známé problémy
- Vstupy sekvence/mapy se zatím nepodporují, model se jednoduše přeskočí, aby neblokoval ostatní modely ve složce.
- Nemůžeme spolehlivě spouštět více modelů s argumentem -folder s reálnými daty. Vzhledem k tomu, že můžeme zadat pouze 1 vstup, velikost vstupu by se neshodovala s většinou modelů. Právě teď použití argumentu -folder funguje dobře pouze s nesmyslnými daty;
- Generování neplatného vstupu jako šedého nebo YUV není v současné době podporováno. V ideálním případě by datový kanál WinMLRunneru měl podporovat všechny typy vstupů, které můžeme dát WinML.