加载 LearningModel 后,将创建 一个 LearningModelSession,它将模型绑定到运行和评估模型的设备。
选择设备
创建会话时,可以选择设备。 您选择 LearningModelDeviceKind 类型的设备:
-
默认
- 让系统确定要使用的设备。 目前,默认设备是 CPU。
-
中央处理器
- 使用中央处理器,即使其他设备可用。
-
DirectX 的
- 使用 DirectX 硬件加速设备,尤其是按 IDXGIFactory1::EnumAdapters1 枚举的第一个适配器。
-
DirectXHighPerformance
- 与 DirectX 相同,但在枚举适配器时将使用 DXGI_GPU_PREFERENCE_HIGH_PERFORMANCE 。
-
DirectXMinPower 公司
- 与 DirectX 相同,但在枚举适配器时将使用 DXGI_GPU_PREFERENCE_MINIMUM_POWER 。
如果未指定设备,系统将使用 Default。 我们建议使用 Default 以获得灵活性,让系统在将来为你选择。
以下视频详细介绍了每种设备类型。
高级设备设计
Windows AI 支持使用调用方已创建的设备。 执行此作时,有几个选项和注意事项:
- CreateFromDirect3D11Device。 如果已有现有的 IDirect3DDevice,请使用此功能。 Windows AI 将使用同一适配器为其 ML 工作负载创建 d3d12 设备。 这在以下情况下非常有用:你的照相机将 d3d11 设备用于 VideoFrame,并且你想要将该同一设备用于 LearningModelSession。 在许多情况下,它可以避免内存复制。 备注:VideoFrame 张量化是 Windows AI 具有的唯一 d3d11 工作负载。 如果不使用该功能,共享或创建 d3d11 设备没有任何优势。
- CreateFromD3D12CommandQueue(本机)。 如果要重复使用 d3d12 设备,请使用此方法。 Windows AI 会将该命令队列用于其 ML 工作负载。 它还将使用 D3D11On12CreateDevice 创建 d3d11 设备。 这仅在需要时才执行,并且将用于所有 d3d11 工作负荷,例如 VideoFrame 张量化。 可以通过 LearningModelDevice.Direct3D11Device 属性访问此新设备。
示例:
以下示例演示如何从模型和设备创建会话:
private void CreateSession(LearningModel model, LearningModelDeviceKind kind)
{
// Create the evaluation session with the model and device
LearningModelSession session =
new LearningModelSession(model, new LearningModelDevice(kind));
}
另请参阅
注释
使用以下资源获取有关 Windows ML 的帮助:
- 若要询问或回答有关 Windows ML 的技术问题,请使用 Stack Overflow 上的 windows-machine-learning 标记。
- 若要报告 bug,请在 GitHub 上提出问题。