设备跟踪和管理正成为机器学习项目的中心焦点。该任务的核心是在模型培训过程中跟踪和报告gpu使用效率。
有效的GPU监控可以帮助我们配置一些非常重要的超参数,如批量大小,并有效识别训练中的瓶颈,如CPU活动(通常是预处理图像)占用时间长,导致活动时间长GPU在空闲状态下,需要等待下一批数据的交付。
利用率是多少?
过去的采样周期GPU 内核执行时间的百分比称为GPU的利用率。
如果这个值很低,那就意味着你 GPU 没有全速工作,可能是因为 CPU或者IO 操作瓶颈,如果使用小时付费的云服务器,那就是浪费时间和金钱!
使用终端命令监控
nvidia-smi
显示如下:
- 第一栏的Fan:N/A是风扇转速,从0到100%之间变动,这个速度是计算机期望的风扇转速,实际情况下如果风扇堵转,可能打不到显示的转速。有的设备不会返回转速,因为它不依赖风扇冷却而是通过其他外设保持低温(比如我们实验室的服务器是常年放在空调房间里的)。
- 第二栏的Temp:是温度,单位摄氏度。
- 第三栏的Perf:性能状态,从P0到P12,P0表示最大性能,P表示状态最小性能。
- 第四栏下方的Pwr:是能耗,在上面Persistence-M:是连续模式的状态。虽然连续模式耗能量大,但在新的状态下GPU启动应用程序需要更少的时间,这里显示的是off的状态。
- 第五栏的Bus-Id是涉及GPU总线的东西,domain:bus:device.function
- 第六栏的Disp.A是Display Active,表示GPU显示是否初始化。
- 第五栏下方Memory Usage是显存利用率。
- 第七栏浮动GPU利用率。
- 关于第八栏上方ECC的东西。
- 第八栏下方Compute M是计算模式。
nvidia-smi 其他命令参数
除直接操作外 nvidia-smi 除了命令,还可以添加一些参数来查看一些机器 Nvidia GPU 其他状态。下面作者简单介绍几个常用参数,其他需要的可以在手册中找到:man nvidia-smi。
-L 参数显示连接到系统的参数 GPU 列表。 nvidia-smi -L # 输出: GPU 0: NVIDIA GeForce RTX 3060 (UUID: GPU-55275dff-****-****-****-6408855fced9) GPU 1: NVIDIA GeForce RTX 3060 (UUID: GPU-0a1e7f37-****-****-****-df9a8bce6d6b) GPU 2: NVIDIA GeForce RTX 3060 (UUID: GPU-38e2771e-****-****-****-d5cbb85c58d8) GPU 3: NVIDIA GeForce RTX 3060 (UUID: GPU-8b45b004-****-****-****-46c05975a9f0) GPU UUID:此值是GPU世界上唯一不可变字母数字标识符。它与主板上的物理标签无关。它与主板上的物理标签无关。 -i 指定一个参数 GPU,多用于查看 GPU 指定其中一个信息 GPU。 -q 参数查看 GPU 所有信息。可通过 -i 指定参数检查一个 GPU 的参数。 如: nvidia-smi -i 0 -q
topo
topo 展示多GPU系统的拓扑连接信息通常与 -m 参数即 nvidia-smi topo -m,可自行查阅其他参数。
输出如下,这里不能用代码块对齐,直接贴图: