Часто задаваемые вопросы

На этой странице собраны ответы на самые популярные вопросы сообщества.

Как узнать, будет ли моя модель ONNX работать с Windows ML?

Чтобы проверить, будет ли модель запускаться в Windows ML, проще всего воспользоваться средством WinML Model Runner. Также вы можете изучить статью Версии ONNX и сборки Windows, где собраны сведения обо всех поддерживаемых версиях ONNX для конкретных выпусков Windows.

Как преобразовать модель другого формата в ONNX?

Для преобразования моделей некоторых популярных форматов, например Apple CoreML и scikit-learn, в формат ONNX, можно использовать WinMLTools.

При попытке экспорта и (или) преобразования модели в ONNX возникают ошибки с сообщением о том, что модель содержит "неподдерживаемые операторы".   Что следует делать?

Некоторые операторы исходных платформ машинного обучения не поддерживаются некоторыми версиями ONNX. Мы рекомендуем вам прежде всего проверить поддерживаемые версии ONNX для целевой сборки Windows и, если это возможно, преобразовать модель в максимальную поддерживаемую версию. Более поздние версии ONNX поддерживают более широкий набор операторов по сравнению с предыдущими версиями.

Если проблемы сохранятся, попробуйте связаться со специалистами по обработке и анализу данных, чтобы совместно с ними избавиться от неподдерживаемых операторов. Для достижения этого мы рекомендуем изменить архитектуру модели на исходной платформе и повторно конвертировать или экспортировать модель в целевую версию ONNX. Обратите внимание, что повторно обучать модель пока не нужно. Сначала попробуйте преобразовать архитектуру, а к обучению можно перейти уже после успешного преобразования.

Почему не удается загрузить модель?

Проблемы с загрузкой модели могут возникать по нескольким причинам, из которых при разработке на платформе UWP чаще всего встречается ограничение на доступ к файлам. По умолчанию приложения UWP могут обращаться только к определенным частям файловой системы, а для доступа к другим расположениям им нужны разрешения пользователя или дополнительные компоненты. Дополнительные сведения см. в статье Разрешения на доступ к файлам.

Какую версию WinMLTools нужно использовать?

Мы всегда рекомендуем скачивать и устанавливать последнюю версию пакета winmltools. Так вы сможете создавать модели ONNX, предназначенные для последних версий Windows.

Можно ли использовать onnxmltools вместо winmltools?

Да, можно, но нужно убедиться в наличии правильной версии onnxmltools, которая позволяет нацеливаться на ONNX версии 1.2.2. Это минимальная версия ONNX, поддерживаемая в Windows ML. Если вы не уверены в выборе версии для установки, лучше используйте последнюю версию winmltools. Это гарантирует возможность нацеливания на поддерживаемую в Windows версию ONNX.

Какую версию Visual Studio следует использовать для автоматического создания кода (mlgen)?

Минимальная рекомендуемая версия Visual Studio с поддержкой mlgen — это версия 15.8.7. В Windows 10 версии 1903 и более поздних средство mlgen уже не входит в состав пакета SDK, поэтому вам придется отдельно скачать и установить его в качестве расширения. Существуют отдельные версии для Visual Studio 2017 и Visual Studio 2019.

При попытке запустить mlgen появляется сообщение об ошибке, и код не создается. С чем это может быть связано?

Вот две наиболее распространенные ошибки, которые возникают при попытке выполнить mlgen.

  • Отсутствует обязательный атрибут "consumed_inputs". Если вы увидите такое сообщение об ошибке, вероятно, вы пытаетесь выполнить модель ONNX версии 1.2 с пакетом SDK для Windows 10 версии старше, чем 17763. Мы рекомендуем проверить версию пакета SDK и обновить его до версии 17763 или более поздней.
  • Type Error: Type (map(string,tensor(float))) of output arg (loss) of node (ZipMap) does not match the expected type... (Ошибка типа. Тип (map(string,tensor(float))) выходного аргумента (loss) узла (ZipMap) не соответствует ожидаемому...). Если вы увидите такую ошибку, ваша модель ONNX, скорее всего, имеет более старую версию, чем поддерживаемая в WinML сборки 17763 и более поздних. Мы рекомендуем обновить пакет преобразователя до последней доступной версии и повторно преобразовать модель в ONNX версии 1.2.

Где выполняется WinML по умолчанию?

Если вы не укажете устройство для выполнения с помощью параметра LearningModelDeviceKind или указали в нем значение LearningModelDeviceKind.Default, устройство для оценки модели будет автоматически выбрано системой. Чаще всего используется устройство ЦП. Чтобы выполнить WinML на GPU, укажите при создании LearningModelDevice одно из следующих значений:

  • LearningModelDeviceKind.DirectX;
  • LearningModelDeviceKind.DirectXHighPerformance;
  • LearningModelDeviceKind.DirectXMinPower.

Примечание

Используйте следующие ресурсы для получения справки по машинному обучению в Windows:

  • Чтобы задать технические вопросы о машинном обучении в Windows или ответить на них, используйте тег windows-machine-learning в Stack Overflow.
  • Сообщить об ошибке можно в нашем репозитории GitHub.