C# 中 WPF 的 WinML 和 OnnxRuntime 之间的区别

Lol*_*ola 1 c# ml.net onnx windows-machine-learning onnxruntime

要使用 WPF .Net Core 3.1 应用程序打包经过训练的 Onnx 模型,我想知道这两种方法是否有任何区别:Microsoft.ML.OnnxRuntime 和 Microsoft.AI.MachineLearning (WinML)?OnnxRuntime 似乎更容易使用 C# 实现,而 WinML 的桌面应用程序示例则使用 C++ 实现。

为公共用户使用 OnnxRuntime 部署 Onnx 模型有什么缺点吗?还是需要特定的环境来进行推理?

如果两种方法本质上是相同的,为什么微软还需要维护两种不同的方法呢?

小智 5

感谢您提出的好问题。使用 Microsoft.AI.MachineLearning 可为您在任何 Windows 设备上进行 ML 推理提供高性能且可靠的硬件加速。ONNX 运行时专注于成为跨平台推理引擎。Microsoft.AI.MachineLearning 实际上利用 ONNX 运行时来优化 CPU 性能,并利用 DirectML 后端来优化 GPU 加速。此图展示了 Windows ML 的完整堆栈。