使用 Windows Machine Learning 进行应用性能分析
性能分析是一个旨在帮助开发人员和 AI 工程师诊断进程的 CPU、GPU 和 NPU 资源使用情况、在不同执行提供程序上对 ONNX 模型进行性能分析以及捕获 Windows ML 事件的工具。
在本文中,你将了解如何开始性能分析,以及如何检查资源使用情况视图和事件视图。
前提条件
- 安装最新版本的 Visual Studio Code。
- 安装 Foundry Toolkit VS Code 扩展。有关详细信息,请参阅安装 Foundry Toolkit。
在应用启动时进行性能分析
在此模式下,性能分析工具会分析启动且正在发送 Windows ML 事件的下一个应用。此选项非常适合测试只运行一次的应用。在这种情况下,你需启动性能分析,然后运行应用,接着就会显示资源使用情况。

该工具开始对新启动的应用进行性能分析。这意味着若要对 Python 笔记本进行性能分析,如果内核已经在运行,则需要重新启动内核才能为其开始性能分析。仅启动新笔记本不会自动开始性能分析。
要接收 Windows ML 事件,需要以管理员模式运行该工具。如果未以管理员模式启动 VS Code,则会显示一条通知,引导你重新启动 VS Code。你需要关闭所有其他 VS Code 实例,以便以管理员模式成功重启。 
对运行中的应用进行性能分析
在此模式下,性能分析工具开始对已在运行的应用进行性能分析。你可以根据以下条件选择进程:
- 进程 ID:例如 12345
- 进程名称:通常是不带
.exe的应用名称。将对第一个匹配项进行性能分析。 - 进程路径:例如
c:\Users\xxx\Inference.Service.Agent.exe。将对第一个匹配项进行性能分析。
此选项非常适合对已在运行且无法出于性能分析目的将其重启的应用进行性能分析。

对 ONNX 模型进行性能分析
在此模式下,性能分析工具开始在指定的持续时间内对目标执行提供程序 (EP) 上的 ONNX 模型文件进行性能分析。你可以在其运行的同时查看资源使用情况。
此选项非常适合在不同的 EP 上对 ONNX 模型进行性能分析。

性能分析完成后,会显示一条通知,引导你打开或保存报告。

该报告包含有关 ONNX 模型的详细性能分析统计信息和结果。

每个操作的基准测试时间
如果启用了操作 (OP) 性能分析,将生成操作级别的数据,以便你更详细地检查模型。

报告包含每个操作的详细延迟。

为 Intel (OpenVINO) EP 启用操作级别的数据
若要在 Intel (OpenVINO) EP 上运行时查看操作级别的数据,请执行以下操作:
- 下载 Intel® Unified Telemetry
- 将内容解压到类似
C:\Users\XXX\Downloads\ut-tool-ext-v0.2.0-beta1.1的路径 - 在 Foundry Toolkit 设置中,将
Model Lab Intel Unified Telemetry Path设置为C:\Users\XXX\Downloads\ut-tool-ext-v0.2.0-beta1.1\bin
Intel Unified Telemetry 需要管理员权限才能运行。如果 VS Code 未以管理员身份运行,性能分析将提示提升权限并打开显示其进度的新的终端窗口。在进程完成之前,请勿关闭此窗口。
如果 VS Code 已经在以管理员身份运行,则不会收到提示,也不会打开其他窗口。
对 ONNX GenAI 模型进行性能分析
在此模式下,性能分析工具开始针对指定数量的提示词,在目标执行提供程序 (EP) 上对 ONNX GenAI 模型进行性能分析。你可以在其运行的同时查看资源使用情况。

你需要选择 GenAI 模型的文件夹,该文件夹必须包含 genai_config.json。
资源使用情况视图
在主窗口中,顶部的图表显示 CPU、GPU、NPU 和内存的使用情况。使用情况每秒更新一次,并保留 10 分钟。你可以使用右上角的工具通过放大、缩小和平移来浏览时间线。

此功能使用性能计数器。若要获得更高的准确性,你还可以尝试 Windows Performance Recorder。
Windows ML 事件视图
在主窗口中,底部的图表显示 Windows ML 事件。其时间线与“资源使用情况”视图同步,因此你可以轻松确定发生特定事件时资源的使用情况。
要接收 Windows ML 事件,需要以管理员模式运行该工具。如果未以管理员模式启动 VS Code,则会显示一条通知,引导你重新启动 VS Code。你需要关闭所有其他 VS Code 实例,以便以管理员模式成功重启。 
目前,仅显示以下事件类型:
- Ensure ExecutionProvider Ready(确保 ExecutionProvider 准备就绪):当 Windows ML 正在准备 EP 时
- Session Creation(会话创建):创建会话时
- Inference(推理):模型在会话上运行推理时

您学到了什么
在本文中,您学习了如何
- 以不同方式开始性能分析
- 检查“资源使用情况”视图
- 检查 Windows ML 事件视图