GPU nvidia-smi

本文分享了在服务器上管理多GPU资源的有效方法,利用nvidia-smi命令快速kill掉显卡上的Python进程,以及在PyTorch中避免CUDA out of memory错误的调试技巧,通过仅将数据而非模型放入显存来检查内存占用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

服务器上有多块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的显存

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值