创建 会话

加载 LearningModel 后,将创建 一个 LearningModelSession,它将模型绑定到运行和评估模型的设备。

选择设备

创建会话时,可以选择设备。 您选择 LearningModelDeviceKind 类型的设备:

  • 默认
    • 让系统确定要使用的设备。 目前,默认设备是 CPU。
  • 中央处理器
    • 使用中央处理器,即使其他设备可用。
  • DirectX 的
  • DirectXHighPerformance
  • DirectXMinPower 公司

如果未指定设备,系统将使用 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 上提出问题。