Windows ML 实验性支持 GGUF,团队现在就该换本地推理方案吗?
Windows ML Runtime API 的 GGUF 支持仍属实验阶段。核对 GGUF 的硬件范围及 NPU 限制,按官方 C++ 示例完成隔离试验,并区分成功加载与成功推理。
怎么判断?
暂时不宜把正在交付的本地推理应用整套迁走。Windows ML Runtime API 已在官方文档中列出 GGUF 支持,但仍处于实验阶段,不支持用于生产环境,试用它的应用也不应发布到 Microsoft Store。GGUF 通过 llama.cpp 后端运行,当前验证的是 CPU 与 NVIDIA CUDA;不能把 Windows ML 的 NPU 选项理解为 GGUF 已支持 NPU。适合先在独立示例中验证自己的模型,再决定是否继续。
GGUF 与 ONNX 的硬件支持要分开判断
Windows ML 按模型文件扩展名选择后端:ONNX、ORT 文件使用 ONNX Runtime,GGUF 文件使用随应用部署的 llama.cpp。下表根据官方 Runtime 概念文档整理,硬件可选项不能跨后端直接套用。手上只有 NPU 的设备,不能据此推断 GGUF 大模型已有可用的 NPU 加速。
GPU 试验还要核对 CUDA 模块是否与包使用的 llama.cpp 修订版本一致。官方文档说明,显式请求 GGUF 的 GPU 目标时,如果没有部署 CUDA 模块,Build 会返回不支持;模型无法装入时也可能因内存不足失败。应把这些失败单独记录,避免把未按预期使用 GPU 的结果混进性能比较。
| 模型文件 | 执行后端 | 本次官方文档列出的范围 |
|---|---|---|
| .onnx / .ort | ONNX Runtime | 按兼容执行提供程序使用 CPU、GPU 或 NPU |
| .gguf | llama.cpp | CPU 为基础;NVIDIA GPU 需另带 CUDA 模块 |
| GGUF 请求 NPU | llama.cpp | 不支持,不能照搬 ONNX 的 NPU 配置 |
先按官方示例建立独立 C++ 工程
C++ 入门页要求 Visual Studio 2022 或更新版本,并安装使用 C++ 的桌面开发工作负载。新建原生控制台工程后,按该页配置 NuGet,再安装 Microsoft.Windows.AI.MachineLearning 的 2.7.2021-experimental 包。文档示例另使用 Microsoft.Windows.CppWinRT 和 C++20;这些是示例的要求,不能写成所有 Runtime 调用都必须采用 C++20。
先运行只创建 IWinMLRuntime 的入门示例,确认编译与 DLL 依赖正确,再接入自己的模型文件。把 NuGet 包版本固定在这份试验工程中,保存模型文件的校验和;后续换包或换模型时分别重跑,才能知道行为变化来自哪里。系统版本应按入门页链接的部署要求检查,不根据模型大小猜最低配置。
把成功加载与一次完整生成分开验收
LoadModelFromFile 成功,只说明文件已被识别并能读取;目标硬件兼容性要等 Build 成功才成立。按照概念文档的 GGUF 示例,从 CPU 目标开始,创建模型阶段后设置上下文长度,再构建管线。先完成这一轮,出现问题时更容易区分文件损坏、缺少组件与目标设备不兼容。
文本应用可继续参考官方 Text Generation API,它处理分词和逐词生成,并提供流式输出与取消操作。应用仍要检查完成结果中的停止原因,例如达到生成上限或被取消。连续测试两个独立问题时,也要确认状态已正确清理;不能让上一个问题留下的上下文影响下一次对照。本文没有执行这些 Windows 示例,步骤来自官方文档。
迁移决定由相同输入的可用结果来支持
选择现有应用已经能正确处理的一组输入,在旧方案与试验工程中保持同一模型版本和生成参数。分别保存冷启动耗时与稳定运行耗时,再核对输出能否直接用于原任务。首次返回文字的速度不能代替完成整段回答的等待时间;如果结果被截断,应先记录停止原因,而非直接宣布新方案更快。
截至 2026 年 10 月 20 日,Runtime 概览还写明当前提供 C++ 与 Python,尚不支持 C#。已有跨平台 ONNX Runtime 会话代码的应用,可沿用 Windows ML 中的 ONNX Runtime API,无需为格式新闻立即重写。本文核对了官方接口范围和示例,未给出吞吐量、内存占用或设备兼容性的本站实测结论。
核对来源
以下链接支持文中的项目描述或事件事实。本站判断由编辑撰写,未把来源中的主张当作本站实测结论。