Настройка проекта C++ для Windows ML Runtime API

Important

В настоящее время API среды выполнения машинного обучения Windows является экспериментальным и не поддерживается для использования в производственных средах. Приложения, тестирующие этот API, не должны публиковаться в Microsoft Store.

В этом разделе показано, как настроить собственный проект на C++ для использования API среды выполнения и создать экземпляр IWinMLRuntime. Перейдите к запуску модели с помощью API среды выполнения машинного обучения Windows для загрузки модели, тензорной привязки и инференса.

Prerequisites

Note

C++20 и C++/WinRT являются требованиями к этим примерам документации, а не API среды выполнения. API среды выполнения — это собственный ABI в стиле COM, который также можно использовать из C или C++ с помощью raw COM, WRL, WIL или другого вспомогательного средства COM в зависимости от языка этого приложения.

Цель выполнения CPU — это базовый путь. Доступность GPU и NPU зависит от устройства, возможностей платформы и исполняемой среды, установленной для вашего приложения.

Настройка встроенного восстановления NuGet

Для собственных проектов Visual C++ требуется идентификатор целевой платформы NuGet, поэтому восстановление пакетов выбирает собственные ресурсы Windows. Добавьте эту группу свойств в верхней части .vcxproj файла перед первым Microsoft.Cpp.* импортом:

<PropertyGroup Label="NuGet">
  <RestoreProjectStyle>PackageReference</RestoreProjectStyle>
  <NuGetTargetMoniker>native,Version=v0.0</NuGetTargetMoniker>
  <NuGetTargetPlatformIdentifier>Windows</NuGetTargetPlatformIdentifier>
  <NuGetTargetPlatformVersion>$(WindowsTargetPlatformVersion)</NuGetTargetPlatformVersion>
</PropertyGroup>

Установите пакет Microsoft.Windows.AI.MachineLearning с помощью Управление пакетами NuGet или PackageReference. Чтобы собрать примеры на этих страницах, также установите Microsoft.Windows.CppWinRT и установите для стандарта языка C++ значение ISO C++20 Standard (/std:c++20). Пакет машинного обучения Windows предоставляет заголовки среды выполнения, библиотеки импорта и автономные библиотеки DLL; C++/WinRT предоставляет winrt::com_ptr, winrt::check_hresult, and <winrt/base.h> и удобства, используемые только примером кода.

Параметры CMake и развертывания см. в разделе Автономная установка.

Инициализировать среду выполнения

Замените main.cpp следующим кодом:

// Copyright (C) Microsoft Corporation. All rights reserved.

#include <Windows.h>
#include <winrt/base.h>

#include <WinMLRuntime.h>

#pragma comment(lib, "windowsapp.lib")

int wmain()
{
    winrt::com_ptr<IWinMLRuntime> runtime;
    winrt::check_hresult(WinMLCreateRuntime(
        __uuidof(IWinMLRuntime),
        runtime.put_void()));

    return 0;
}

Сборка для архитектуры, которая соответствует файлам пакета, например Release|x64. Успешная сборка подтверждает, что восстановление NuGet обнаружило заголовки среды выполнения и библиотеку импорта и скопировало необходимые библиотеки DLL рядом с исполняемым файлом.

Дальнейшие действия