nividia-cuda-visual-profiler可视化监控GPU,CPU等性能。
第一步:服务器端先下载cuda的tookit等工具。主要使用到了nvprof这一工具。
当我们模型在训练or预测时,使用如下命令行完成此任务的监控并将GPU,CPU,内存显存交换等信息存储。
nvprof --metrics all -o train.nvvp python3 run_sequence_tagging.py
参数介绍:
- metrics: 选择的监控参数,可以特定选择某些指标监控,如果需要监控所有,选择all即可。
- -o: output。输出到train.nvvp。
- 后面的为训练or预测时候python的命令及文件参数。
训练or预测完毕后,在当前目录下生成train.nvvp文件。
第二步:
因为我们的模型常常是运行在远端的服务器上,我们需要把输出的监测数据拷贝至本地查看。对于nvprof生成的`.nvvp`文件来说,需要在本地使用nvvp或nsight eclipse进行查看。这两者也都是cuda toolkit中自带的。需要强调的是,即使本地电脑没有N卡也是可以安装cuda toolkit的https://developer.nvidia.com/cuda-toolkit-archive
打开上述网址,选择10.1进行下载。下载过程尽量关闭360。下载完毕后选择稍后重启即可。
我们的cuda最终会安装在如下路径中。
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1
环境变量:
第三步:
需要下载java8。注意必须是8。java8以上的版本目前不支持cuda的工具包。自行百度下载并配置环境变量。
第四步:命令行输入nvvp以打开nvvp的可视化分析界面。此界面类似eclipse,选择一个work_space即可。File->Import后选择CUDA->nvprof,下一步后按照具体情况选择是single session还是multiple session,下一步在timeline data file处点击browse,选择已经传到本地的.nvvp文件即可。
教程使用:
Python
开始步骤
nvvp支持远程连接服务端完成某个程序的测试;也支持程序测试落地的nvvp文件解析;
连接服务端测试
第一步:File->new Session
先选择连接的服务器user和password
第二步:指定服务器端的cuda的目录
第三步:选择我们要运行的程序。本次我们运行的是python程序,因此我们需要找到python.exe的路径。(当然,我们可以去分析其他exe程序).
第四步:
Python这边需要指定参数,我们需要运行哪个python脚本。
之后默认即可。
nvvp文件分析
File->Import后选择CUDA->nvprof
界面分析
本次采用本地的nvvp文件分析。(ctrl+滚轮可以对时间轴缩小或放大)
分别点击主机到设备、设备到主机、设备到设备,观察GPU details,通过开始时间和持续时间分布,总结可以得出“主机到设备”是python程序将数据读取到内存。“设备到设备”是内存和显存的交换,“设备到主机”是内存到主机。
常用功能介绍
①点击conpute,可以看到properties的信息。
也可以点击时间轴中的块,对每一个块查看对应的属性。
②点击左下的Analysis,可以对结果进行分析。
例如点击
可以看出低内存拷贝/计算交叠率(一点都没有交叠,完全是拷贝——计算——拷贝);低内核并发;低存储拷贝吞吐率;低拷贝交叠率(完全是拷贝、传输、拷贝..)。
针对这些弊端可以制定对应的措施。
例如,点击第二项,low kernel concurrency,此时左边的显卡对应条亮起,我们点击more,获取解析信息,分析得出除了默认流外的其他流可以执行多个内核。
③点击显卡,观察GPU Details的信息。首先是初始化、之后是数据的转移,然后是一些核函数的运行状态分析。
主要有每个核函数执行时间,以及线程格、线程块尺寸,占用寄存器个数,静态共享内存、动态共享内存大小等参数,以及内存拷贝函数的执行情况。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)