GPU nvidia-smi

服务器上有多块GPU,每块GPU上可能运行着多个python程序,之前在调试程序时,每次想要kill掉正在运行的程序,我都是 

ps -ef | grep xxx.py     这个命令会从当前所有正在运行的python进程中找到名称为xxx.py的进程,给出所有父进程ID和子进程ID,通常做法是先kill掉父进程PID,再一个个地kill掉子进程PID,这样的做法看似有些复杂。‘

今天问过一位大神,他给出一种好办法可以简单地kill掉显卡上正在运行的python进程,

nvidia-smi

将会给出每块显卡上正在运行的程序进程号,直接kill掉进程号就可以终止程序运行。

另外,我之前训练时总是出现过 CUDA: out of memory报错(是在训练faster R-CNN,batch size=1,min_scale=1024时),虽然图像的空间分辨率在1024以上,但是对于显卡的占用不会那么大(当时是1080Ti  12G显存),一个巧妙的调试方法是:

在pytorch中,使用数据加载器 dataloader 读取完一个batch size的训练图像后,先只把它放到显存上,

index=0

for idx,im_data,label in enumerate(train_loader):

     index+=1

    #output=net(im_data)

    调试程序,因为正常情况下,网络模型的前向传播和反向传播并不会占据高达12G的显存

    很有可能产生的错误就是,错误地把整个训练数据集中的数据都放到了显卡上。正常情况下,模型所占显存并不会很大。

    故而调试方法是:只是单纯地将训练数据集放到显卡上,并不把网络模型放到显卡上,观察显卡的现存占用情况,如果现存占用过大,则可能是把所有的数据都放到了显卡上。

猜你喜欢

转载自blog.csdn.net/WYXHAHAHA123/article/details/87392985