目录

一、pynvml库的简单使用

二、显存清理


在跑神经网络训练或者推理的时候,有的时候很有必要实时监测一下显存的状态。NVIDIA显卡在终端管理界面,使用命令:watch -n 3 nvidia-smi可以指定每隔几秒中来显示一下显卡信息。当然NVIDIA也是开发了python库,很方便的实时查看GPU信息。

一、pynvml库的简单使用

这个pynvml库是NVIDIA为自己家显卡开发的一个获取显卡当前信息的python包。我们一般比较关注的就是显卡实时的显存量信息、温度信息和电源信息,这个库都有相应的接口来实现实时查看的功能,非常方便。直接上代码:

pynvml.nvmlInit()#初始化
pynvml.nvmlDeviceGetCount()#设备数量
pynvml.nvmlDeviceGetHandleByIndex(i)#显卡句柄
pynvml.nvmlDeviceGetName(handle)#显卡名称
memo_info = pynvml.nvmlDeviceGetMemoryInfo(handle)#显存信息
memo_info.total#总显存
memo_info.free#空余显存
memo_info.used#已经使用的显存
pynvml.nvmlDeviceGetTemperature(handle, 0)#温度
pynvml.nvmlDeviceGetFanSpeed(handle)#风扇速度
pynvml.nvmlDeviceGetPowerState(handle)#电源状态
import torch
import pynvmlpynvml.nvmlInit()#初始化
#设备情况
deviceCount = pynvml.nvmlDeviceGetCount()
print('显卡数量:',deviceCount)
for i in range(deviceCount):handle = pynvml.nvmlDeviceGetHandleByIndex(i)gpu_name = pynvml.nvmlDeviceGetName(handle)print('GPU %d is :%s'%(i,gpu_name))#显存信息memo_info = pynvml.nvmlDeviceGetMemoryInfo(handle)print("GPU %d Memory Total: %.4f G"%(i,memo_info.total/1024/1024/1000) )print("GPU %d Memory Free: %.4f G"%(i,memo_info.free/1024/1024/1000))print("GPU %d Memory Used: %.4f G"%(i,memo_info.used/1024/1024/1000))#温度Temperature = pynvml.nvmlDeviceGetTemperature(handle, 0)print("Temperature is %.1f C" %(Temperature))#风扇转速speed = pynvml.nvmlDeviceGetFanSpeed(handle)print("Fan speed is ",speed)#电源状态power_ststus = pynvml.nvmlDeviceGetPowerState(handle)print("Power ststus", power_ststus)
#关闭
pynvml.nvmlShutdown()

结果如下:

二、显存清理

......
other codes
......
del(model)
torch.cuda.empty_cache()

有的时候需要程序运行过程中把显存清理掉,就可以采用上面的代码,完整代码如下:

import torch
import pynvml
from transformers import BertModeldef get_gpu_memory(handle):meminfo = pynvml.nvmlDeviceGetMemoryInfo(handle)free = meminfo.free/1024/1024/1000return freeif __name__ == "__main__":pynvml.nvmlInit()handle = pynvml.nvmlDeviceGetHandleByIndex(0)print('初始显存:%.4f G'%get_gpu_memory(handle))model = BertModel.from_pretrained('./output/training_patent_sbert-Chinese-BERT-wwm2019-10-09_10-42-20_with_20K_Trains/0_BERT/')device = torch.device('cuda:0')model.to(device)print('加载Bert模型后,剩余显存:%.4f G' % get_gpu_memory(handle))dummy_tensor_4 = torch.randn(370, 60, 510, 510).float().to(device)print('加载数据转到GPU上后,剩余显存:%.4f G'%get_gpu_memory(handle))# 然后释放dummy_tensor_4 = dummy_tensor_4.cpu()print('把GPU上的数据转移到CPU上,剩余显存:%.4f G'%get_gpu_memory(handle))torch.cuda.empty_cache()print('torch.cuda.empty_cache清理显存后,显存是:%.4f G' % get_gpu_memory(handle))del(model)print('del(model)清理显存后,显存是:%.4f G'%get_gpu_memory(handle))pynvml.nvmlShutdown()  # 最后关闭管理工具

结果如下:

观察显存变化,模型和数据放到GPU上会占用显存,data.cpu()并不会主动释放显存,需要使用torch.cuda.empty_cache()才能释放显存。然后这里是不能够把模型占用的显存释放出来,采用torch.cuda.empty_cache()和del(model)都没有生效。

今日的学习就到这里了。

实时监测GPU的显存和显存清理小功能学习相关推荐

  1. 常用的深度学习的linux代码(1.实时监测GPU情况2.当前正常使用的GPU情况3.杀掉特定某个进程4.杀掉特定某个进程)

    1.实时监测GPU情况 watch -n 1 nvidia-smi 2.当前正常使用的GPU情况 nvidia-smi 3.查看进程 ps -ef 杀掉特定某个进程 kill -9 PID 4.lin ...

  2. ubuntu实时监测显卡进程的方法

    个人微信公众号:AI研习图书馆,欢迎关注~ 深度学习知识及资源分享,学习交流,共同进步~ 1.引言 在使用GPU做计算时,比如深度学习网络训练的时候,我们可能希望能够实时检测显存的使用情况. 2.查看 ...

  3. 实时显示GPU的两种方法(灵机一动)

    实时显示GPU的两种方法(灵机一动) 文章目录 实时显示GPU的两种方法(灵机一动) 命令行CMD 实时显示GPU Jupyter Notebook 实时显示GPU 最近在跑程序的时候,我在想能不能实 ...

  4. 集显、独显、核显、SOC、POP、微型计算机树莓派的资料

    1.集显.独显.核显的概念与区别: 处理器集成显卡就是指集成在cpu内部的显卡,通常称为核心显卡(也叫APU),如Intel酷睿i3 i5 i7系列处理器以及AMD APU系列处理器中多数都集成了显卡 ...

  5. 台式计算机怎么看有没有开独显,怎么看是集显还是独显?台式电脑应该怎么选择...

    怎么看是集显还是独显?台式电脑应该怎么选择 在装机的时候我们经常会听到集显和独显,很多小白也并不知道集显和独显的区别,甚至都不知道怎么看自己的电脑是独显还是集显,下面电脑配置网就来为大家科普一下关于集 ...

  6. i5集显和独显的区别_集显核显独显有哪些区别 集显核显独显区别介绍【详解】...

    显卡是除处理器之外最受大家关心的硬件装备了,要是显卡配置不到位,其他再好都是浮云,而对于游戏玩家来说,显卡性能差的话更是影响游戏的运行,可折腾人了.今天小编为大家分享"集显".&q ...

  7. i5集显和独显的区别_【集显】集显和独显有什么区别,集显和核显区别_什么值得买...

    1,独显和集显的主要区别就是,独立显卡的性能是很强大的,有着很多集成显卡没有的东西 最基础的就是散热器,集成显卡在处理大型3D游戏的时候耗功很大,热量也大,而独立显卡有散热器,就能很好的发挥它的性能, ...

  8. 显著性检验 python_独显和集显的区别

    展开全部 1,独显和集显的主要区别32313133353236313431303231363533e78988e69d8331333366303062就是,独立显卡的性能是很强大的,有着很多集成显卡没 ...

  9. 买电脑时,独显和集显到底有什么区别呢?

    很多人在买电脑的时候就会纠结什么样的电脑适合我呢?独显的贵一点,集显会便宜一点,那我有必要买一个独显的呢? 下面和大家分享一下关于独显和集显的区别是什么?如有错误或不足还请指正! 1,独显和集显的主要 ...

最新文章

  1. 何恺明等人提TensorMask框架:比肩Mask R-CNN,4D张量预测新突破
  2. CF1B Spreadsheets
  3. JS 关闭window.open的窗体,并刷新父页面
  4. JavaScript的特殊函数
  5. How To: Team Build 自定义版本号
  6. Python高阶函数和eval函数
  7. android杀掉进程顺序
  8. 2021牛客多校5 - Double Strings(dp+组合数学)
  9. java web源代码_检测Java Web应用程序而无需修改其源代码
  10. sql去重常用的基本方法
  11. html img图片等比例缩放_我掏空了各大搜索引擎,整理了HTML图片标签笔记,满满干货...
  12. python动态图形_利用matplotlib实现根据实时数据动态更新图形
  13. Android Activity 生命周期
  14. Excel 常用快捷键总结(Alt系列)
  15. window xp系统安装php环境_在Windows XP下安装Apache+MySQL+PHP环境
  16. 网络安全攻防实验室通关教程-注入关
  17. 如何彻底卸载3dmax2020_3DMAX 2020安装失败,怎么把3DMAX 2020彻底卸载删除干净重新安装?...
  18. 点到点法式平面投影点的计算
  19. 做了一个可以查询飞机航班、火车班次的小应用
  20. 电脑tcp协议设置成服务器,电脑tcp协议设置成服务器

热门文章

  1. C++开源游戏推荐,铁路运输大亨OpenTTD
  2. 基于JAVA的高铁订餐微信小程序设计与实现
  3. Mac和Linux下pip更换源
  4. 微信或QQ分享跳转到APP指定页面
  5. 二叉树求最大宽度伪代码
  6. onload 和 onunload 事件
  7. 周博通 | 阿里语音AI入选MIT“全球十大突破技术”;阿里云率先达成国家绿色数据中心标准;iOS协程开发框架coobjc开源...
  8. VC基于HOOPS开发3D浏览器
  9. FIDO身份认证更加契合个人信息保护法
  10. Windows Hello FIDO2 认证让您更接近无密码