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

news/2024/11/25 16:25:32/

目录

一、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)都没有生效。

今日的学习就到这里了。


http://www.ppmy.cn/news/370651.html

相关文章

如何检测显卡类型和OpenGL版本?

摘要 OpenGL是一个行业标准的3D图像API。运行 CityEngine 需要 OpenGL 2.x 或更高版本。OpenGL 驱动通常与显卡驱动和支持的软件(例如:DirectX)一同安装。 过程 1.检测显卡类型(Windows): 1)…

宣布推出NVIDIA DGX GH200:首款100TB显卡显存系统

在 COMPUTEX 2023 上,NVIDIA 发布了 NVIDIA DGX GH200 ,这标志着 GPU 加速计算的又一次突破,为要求最严苛的巨型 AI 工作负载提供支持。 除了描述 NVIDIA DGX GH200 架构的关键方面外,本文还讨论了 NVIDIA Base Command 如何实现快…

Material—— RBD(Houdini To UE)

Houdini刚体碎块导入UE,有两个方面需还原,一是材质还原,一是动态还原; 一,ABC to UE 材质方面,Houdini里的每个Primtive Group属性,都表示UE内的对应材质球;导入时勾选Find Material…

Spark集群部署和启动与关闭

上一篇我们讲了Hadoop集群部署和启动与关闭,今天我们讲一下Spark集群部署和启动与关闭。首先我们先来了解一下Spark集群部署模式,分别有以下三种: Standalone   Standalone(独立模式)是Spark一种简单的集群部署模式&…

Python之快速排序

算法思路: 我们首先判断数组是否只有一个元素或没有元素,如果是则直接返回原数组。否则,我们选择一个基准值(这里我们选择数组的第一个元素),并将数组分为两个部分:小于基准值和大于基准…

[srpingboot]菜鸟学习-ReSTful

REST即表述性状态转移(英文:Representational State Transfer,简称REST),是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。它主要描述了资源的表述以及资源之间的…

htc e9刷android6,HTC One E9+(E9pw 联通4G)刷机图文详解教程

玩安卓手机最大的乐趣当然就是刷机了,为了让HTC One E9(E9pw 联通4G)手机变的更快,我们通常都会通过刷机来提高HTC One E9(E9pw 联通4G)手机的运行速度,下面跟大家分享怎么用奇兔刷机对HTC One E9(E9pw 联通4G)进行一键刷机,具体步…

htc x920e刷android7.0,HTC X920e (Butterfly)一键刷机图文教程

经常会有机友提问,我的HTC X920e (Butterfly)手机支不支持一键刷机?由于奇兔刷机已经支持多达上千款安卓手机一键刷机,所以有时候小编也无法及时回答上来,最简单的办法就是把手机连上奇兔刷机,即可看到手机是否支持一键刷机。一键…