Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
WinMLRunner — это средство для проверки успешности выполнения модели при оценке с помощью API Машинного обучения Windows. Вы также можете записать время оценки и использование памяти на GPU и ЦП. Модели в формате ONNX или PB можно оценить, где входные и выходные переменные являются тензорами или изображениями. Существует 2 способа использования WinMLRunner:
- Скачайте средство python командной строки.
- Используйте на панели мониторинга WinML. Дополнительные сведения см . в документации по панели мониторинга WinML
Запуск модели
Сначала откройте скачанный инструмент Python. Перейдите к папке, содержащей WinMLRunner.exe, и запустите исполняемый файл, как показано ниже. Обязательно замените место установки на соответствующее вашим:
.\WinMLRunner.exe -model SqueezeNet.onnx
Вы также можете запустить папку моделей с помощью следующей команды.
WinMLRunner.exe -folder c:\data -perf -iterations 3 -CPU`\
Использование хорошей модели
Ниже приведен пример успешного запуска модели. Обратите внимание, как сначала модель загружает и выводит метаданные модели. Затем модель выполняется на ЦП и GPU отдельно, выводя успешное выполнение привязки, успешное вычисление и выходные данные модели.
Запуск неэффективной модели
Ниже приведен пример запуска модели с неправильными параметрами. Обратите внимание на ошибочные выходные данные при оценке на GPU.
Выбор и оптимизация устройств
По умолчанию модель выполняется на ЦП и GPU отдельно, но можно указать устройство с флагом -CPU или -GPU. Ниже приведен пример запуска модели 3 раза с использованием только ЦП:
WinMLRunner.exe -model c:\data\concat.onnx -iterations 3 -CPU
Данные о производительности журнала
Используйте флаг -perf для записи данных о производительности. Ниже приведен пример запуска всех моделей в папке данных на ЦП и GPU отдельно 3 раза и записи данных о производительности:
WinMLRunner.exe -folder c:\data iterations 3 -perf
Измерения производительности
Следующие измерения производительности будут выводиться в командную строку и в .csv-файл для каждой операции загрузки, связывания и оценки.
- Системное время (мс): прошедшее реальное время между началом и концом операции.
- Время GPU (мс): время, когда операция передается из ЦП в GPU и выполняется на GPU (примечание. Загрузка() не выполняется на GPU.
- Время ЦП (мс): время выполнения операции на ЦП.
- Использование выделенной и общей памяти (МБ): Среднее использование памяти на уровне ядра и пользователя (в МБ) во время вычисления на ЦП или GPU.
- Рабочая память набора (МБ): Объем памяти DRAM, необходимый процессу ЦПУ в ходе оценки. Выделенная память (МБ) — объем памяти, который использовался в виртуальной памяти выделенного GPU.
- Общая память (МБ): Объем памяти, используемой в DRAM GPU.
Пример выходных данных производительности:
Тестовые примеры входных данных
Запустите модель на ЦП и GPU отдельно, привязав входные данные к ЦП и GPU отдельно (всего 4 запуска):
WinMLRunner.exe -model c:\data\SqueezeNet.onnx -CPU -GPU -CPUBoundInput -GPUBoundInput
Запустите модель на ЦП с входными данными, привязанными к GPU и загруженной в виде RGB-образа:
WinMLRunner.exe -model c:\data\SqueezeNet.onnx -CPU -GPUBoundInput -RGB
Запись журналов трассировки
Если вы хотите записать журналы трассировки с помощью средства, можно использовать команды logman в сочетании с флагом отладки:
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 будет отображаться в том же каталоге, что и WinMLRunner.exe.
Чтение журналов трассировки
С помощью traceprt.exeвыполните следующую команду из командной строки.
tracerpt.exe winmllog.etl -o logdump.csv -of CSV
Затем откройте logdump.csv файл.
Кроме того, можно использовать анализатор производительности Windows (из Visual Studio). Запустите анализатор производительности Windows и откройте winmllog.etl.
Обратите внимание, что -CPU, -GPU, -GPUHighPerformance, -GPUMinPower -BGR, -RGB, -tensor, -CPUBoundInput, -GPUBoundInput не являются взаимоисключающими (т. е. можно объединить столько, сколько вы хотите запустить модель с различными конфигурациями).
Динамическая загрузка DLL
Если вы хотите запустить WinMLRunner с другой версией WinML (например, сравнение производительности с более старой версией или тестированием более новой версии), просто поместите windows.ai.machinelearning.dll и directml.dll файлы в той же папке, что и WinMLRunner.exe. WinMLRunner сначала будет искать эти файлы DLL и вернётся к C:/Windows/System32, если их не найдёт.
Известные проблемы
- Входные данные в формате последовательностей и карт пока не поддерживаются (модель просто не обрабатывается, поэтому она не мешает другим моделям в папке);
- Мы не можем надежно запускать несколько моделей с аргументом -folder с реальными данными. Так как можно указать только 1 входных данных, размер входных данных не соответствует большинству моделей. Сейчас аргумент -folder работает хорошо только с мусорными данными.
- Создание ошибочных входных данных в формате серого или YUV в настоящее время не поддерживается. В идеале конвейер для тестовых данных WinMLRunner должен поддерживать все типы входных данных, которые мы можем дать WinML.