创建会话
在加载 LearningModel后,请创建一个 LearningModelSession,将模型绑定到运行的设备并对模型进行评估。
选择设备
可以在创建会话时选择设备。 选择类型为 LearningModelDeviceKind 的设备:
- 默认值
- 让系统决定要使用哪种设备。 目前,默认设备是 CPU。
- CPU
- 使用 CPU,即使其他设备可用也是如此。
- DirectX
- 使用 DirectX 硬件加速设备,尤其是按 IDXGIFactory1::EnumAdapters1 枚举的第一个适配器。
- DirectXHighPerformance
- 与 DirectX 相同,但在枚举适配器时会使用 DXGI_GPU_PREFERENCE_HIGH_PERFORMANCE。
- DirectXMinPower
- 与 DirectX 相同,但在枚举适配器时会使用 DXGI_GPU_PREFERENCE_MINIMUM_POWER。
如果未指定设备,系统会使用默认设置。 建议使用默认设置,这样就可以灵活地让系统在将来为你进行选择。
以下视频详细介绍了每种设备类型。
高级设备创建
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 上提交问题。