Important
Windows ML 运行时 API 目前是试验性的,不支持在生产环境中使用。 尝试此 API 的应用不应发布到Microsoft Store。
本主题演示如何配置本机 C++ 项目以使用运行时 API 并创建 IWinMLRuntime 实例。 继续使用 Windows ML 运行时 API 运行模型,以便进行模型加载、张量绑定和推理。
Prerequisites
-
Microsoft.Windows.AI.MachineLearning包支持的 Windows 版本。 请参阅WINDOWS ML 部署要求。 - 需要 Visual Studio 2022 或更高版本,且需安装使用 C++ 的桌面开发工作负荷。
- 原生 C++ 控制台项目。
-
实验版本的
2.7.2021-experimentalMicrosoft.Windows.AI.MachineLearning NuGet 包。 - 对于这些页面上的示例代码,需要 C++20 和 Microsoft.Windows.CppWinRT NuGet 包。
注释
C++20 和 C++/WinRT 是这些文档示例的要求,而不是运行时 API 的要求。 运行时 API 是本机 COM 样式的 ABI,也可以根据该应用的语言要求,通过原始 COM、WRL、WIL 或其他 COM 帮助程序从 C 或 C++ 使用。
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>
使用“管理 NuGet 包”或 PackageReference 安装 Microsoft.Windows.AI.MachineLearning 包。 若要生成这些页面中的示例,还请安装 Microsoft.Windows.CppWinRT,并将 C++ 语言标准 设置为 ISO C++20 标准(/std:c++20)。 Windows ML 包提供运行时标头、导入库和自包含 DLL;C++/WinRT 提供仅供示例代码使用的 winrt::com_ptr、winrt::check_hresult 和 <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 复制到可执行文件所在目录。