查看GPU运行情况(nvidia-smi )和指定GUP训练/推理模型(CUDA_VISIBLE_DEVICES使用)

时间:2024-03-05 22:14:56

  在深度学习模型训练或者推理的时候我们常常会需要使用到GPU加速,而在服务器上会存在多块GPU,并且可能会有很多人在使用这些GPU,因此如何设置程序在指定的GPU上训练模型/推理,下面介绍我们如何在python程序中指定GPU运行。

1、查看服务器显卡运行状况

  在Linux服务器上我们可以使用以下命令行来查看,显卡运行情况(假设已经安装完cuda等对应驱动,并可以使用)

nvidia-smi           # 查看GPU运行情况
watch -n 10 nvidia-smi   # 每10s刷新一次GPU运行情况

  下面根据我现在这台电脑显示的内容来进行解释相关的返回结果。

   下面给大家讲解一下这些布局:

第一个长方形:显示的是所有显卡的运行情况各参数代表的含义是

第一列:GPU:表示显卡的编号,从0开始。

    Fan:N/A 是风扇转速,从 0 到 100% 之间变动,这个速度是计算机期望的风扇转速。

第二列:Name:显卡的名称。

    Temp:是温度,单位摄氏度。

第三列:Perf:是性能状态,从 P0 到 P12,P0 表示最大性能,P12 表示状态最小性能。

第四列:Persistence-M:是持续模式的状态,持续模式虽然耗能大,但是在新的 GPU 应用启动时,花费的时间更少,这里显示的是 off 的状态。Pwr:是能耗。

第五列:Bus-Id: 是涉及 GPU 总线的东西(不懂)

第六列:Disp.A : Display Active,表示 GPU 的显示是否初始化

     Memory Usage: 是显存使用率,已经使用/显存大小

第七列:GPU-Util:GPU 利用率

第八列:Volatile Uncorr. ECC:不太懂

    Compute M. :不懂

    MIG M.:不懂

注意到一栏中,一些地方会分成上下两个来表示不同的显卡信息,例如上图对应的显卡信息就是:只有一块显卡,编号是0,风扇转速34%,显卡名称是:GeForce RTX 208... ,温度为:42C,性能模式:P8,持续模式:off,能耗:35w,Bus-Id为:00000000:02:00.0,Disp.A开关是:on,显存使用情况:462MB/总量11018MB,GPU利用率:2%,后面的对我来说不太重要也就没有了解了。。。。

  以上是第一个长方形中反应的信息,如果有多块显卡,那么就会如下图一样(我截取的参考网站中的一张图),就可以看到有多块GPU的情况被反映出来了。

  

第二个长方形:显示的是每个进程的使用率

GPU:该进程使用的是那一块GUP编号

PID:该进程的PID ,可以使用 kill -9 [PID]的方式杀死该进程(常用于退出高占GUP的程序)

Type:表示支持图形(C)还是计算(G)

Process name:进程的名字,一些可以找到其路径

GPU Memory Usage:该进程的显存使用情况

2、os.environ来设置CUDA_VISIBLE_DEVICES

  os是python中非常常用的系统包,而os.environ则是设置查看系统环境变量的模块,我们可以通过这个模块把CUDA_VISIBLE_DEVICES的设置写入到环境变量中,这样在执行这个程序的时候就可以指定GPU运行了。

import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0,1"     ## 仅使用device0和 device1
os.environ["CUDA_VISIBLE_DEVICES"] = 2,0,3     ## 仅使用device2, device0和device3

  这里我们在使用的时候,提示一下注意顺序,以最后一行代码为例,在这个程序里会将gpu[0]对应真实的显卡2,gpu[1]对应真实的显卡0,gpu[3]对应真实的显卡3。

 

 

 

 

参考网站:

https://blog.csdn.net/Alger_magic/article/details/98851950