安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

py3nvml实现GPU相关信息读取

11月19日 满月族投稿
  目录技术背景常规信息读取py3nvml的安装与使用py3nvml绑定GPU卡查看空闲GPU命令行信息获取单独查看驱动版本和显卡型号单独查看显存信息总结概要版权声明参考链接技术背景
  随着模型运算量的增长和硬件技术的发展,使用GPU来完成各种任务的计算已经渐渐成为算法实现的主流手段。而对于运行期间的一些GPU的占用,比如每一步的显存使用率等诸如此类的信息,就需要一些比较细致的GPU信息读取的工具,这里我们重点推荐使用py3nvml来对python代码运行的一个过程进行监控。常规信息读取
  一般大家比较常用的就是nvidiasmi这个指令,来读取GPU的使用率和显存占用、驱动版本等信息:nvidiasmiWedJan1215:52:042022NVIDIASMI470。42。01DriverVersion:470。42。01CUDAVersion:11。4GPUNamePersistenceMBusIdDisp。AVolatileUncorr。ECCFanTempPerfPwr:UsageCapMemoryUsageGPUUtilComputeM。MIGM。0QuadroRTX4000On00000000:03:00。0OnNA3039CP820W125W538MiB7979MiB16DefaultNA1QuadroRTX4000On00000000:A6:00。0OffNA3032CP87W125W6MiB7982MiB0DefaultNAProcesses:GPUGICIPIDTypeProcessnameGPUMemoryIDIDUsage0NANA1643GusrlibxorgXorg412MiB0NANA2940Gusrbingnomeshell76MiB0NANA47102G。。。AAAAAAAAAsharedfiles35MiB0NANA172424G。。。AAAAAAAAAsharedfiles11MiB1NANA1643GusrlibxorgXorg4MiB
  但是如果不使用profile仅仅使用nvidiasmi这个指令的输出的话,是没有办法非常细致的分析程序运行过程中的变化的。这里顺便推荐一个比较精致的跟nvidiasmi用法非常类似的小工具:gpustat。这个工具可以直接使用pip进行安装和管理:python3mpipinstallgpustatCollectinggpustatDownloadinggpustat0。6。0。tar。gz(78kB)78kB686kBsRequirementalreadysatisfied:six1。7inhomedechin。locallibpython3。8sitepackages(fromgpustat)(1。16。0)Collectingnvidiamlpy37。352。0Downloadingnvidiamlpy37。352。0。tar。gz(19kB)Requirementalreadysatisfied:psutilinhomedechin。locallibpython3。8sitepackages(fromgpustat)(5。8。0)Collectingblessings1。6Downloadingblessings1。7py3noneany。whl(18kB)Buildingwheelsforcollectedpackages:gpustat,nvidiamlpy3Buildingwheelforgpustat(setup。py)。。。doneCreatedwheelforgpustat:filenamegpustat0。6。0py3noneany。whlsize12617sha2564158e741b609c7a1bc6db07d76224db51cd7656a6f2e146e0b81185ce4e960baStoredindirectory:homedechin。cachepipwheels0dd980b6cbcdc9946c7b50ce35441cc9e7d8c5a9d066469ba99bae44Buildingwheelfornvidiamlpy3(setup。py)。。。doneCreatedwheelfornvidiamlpy3:filenamenvidiamlpy37。352。0py3noneany。whlsize19191sha25670cd8ffc92286944ad9f5dc4053709af76fc0e79928dc61b98a9819a719f1e31Storedindirectory:homedechin。cachepipwheelsb9b168cb4feab29709d4155310d29a421389665dcab9eb3b679b527bSuccessfullybuiltgpustatnvidiamlpy3Installingcollectedpackages:nvidiamlpy3,blessings,gpustatSuccessfullyinstalledblessings1。7gpustat0。6。0nvidiamlpy37。352。0
  使用的时候也是跟nvidiasmi非常类似的操作:watchcolorn1gpustatcpu
  返回结果如下所示:Every1。0s:gpustatcpuubuntu2004:WedJan1215:58:592022ubuntu2004WedJan1215:58:592022470。42。01〔0〕QuadroRTX400039C,35377979MBroot:Xorg1643(412M)dechin:gnomeshell2940(75M)dechin:slack47102(35M)dechin:chrome172424(11M)〔1〕QuadroRTX400032C,067982MBroot:Xorg1643(4M)
  通过gpustat返回的结果,包含了GPU的型号、使用率和显存使用大小和GPU当前的温度等常规信息。py3nvml的安装与使用
  接下来正式看下py3nvml的安装和使用方法,这是一个可以在python中实时查看和监测GPU信息的一个库,可以通过pip来安装和管理:python3mpipinstallpy3nvmlCollectingpy3nvmlDownloadingpy3nvml0。2。7py3noneany。whl(55kB)55kB650kBsRequirementalreadysatisfied:xmltodictinhomedechinanaconda3libpython3。8sitepackages(frompy3nvml)(0。12。0)Installingcollectedpackages:py3nvmlSuccessfullyinstalledpy3nvml0。2。7py3nvml绑定GPU卡
  有一些框架为了性能的最大化,在初始化的时候就会默认去使用到整个资源池里面的所有GPU卡,比如如下使用Jax来演示的一个案例:In〔1〕:importpy3nvmlIn〔2〕:fromjaximportnumpyasjnpIn〔3〕:xjnp。ones(1000000000)In〔4〕:!nvidiasmiWedJan1216:08:322022NVIDIASMI470。42。01DriverVersion:470。42。01CUDAVersion:11。4GPUNamePersistenceMBusIdDisp。AVolatileUncorr。ECCFanTempPerfPwr:UsageCapMemoryUsageGPUUtilComputeM。MIGM。0QuadroRTX4000On00000000:03:00。0OnNA3041CP038W125W7245MiB7979MiB0DefaultNA1QuadroRTX4000On00000000:A6:00。0OffNA3035CP035W125W101MiB7982MiB0DefaultNAProcesses:GPUGICIPIDTypeProcessnameGPUMemoryIDIDUsage0NANA1643GusrlibxorgXorg412MiB0NANA2940Gusrbingnomeshell75MiB0NANA47102G。。。AAAAAAAAAsharedfiles35MiB0NANA172424G。。。AAAAAAAAAsharedfiles11MiB0NANA812125Cusrlocalbinpython6705MiB1NANA1643GusrlibxorgXorg4MiB1NANA812125Cusrlocalbinpython93MiB
  在这个案例中我们只是在显存中分配了一块空间用于存储一个向量,但是Jax在初始化之后,自动占据了本地的2张GPU卡。根据Jax官方提供的方法,我们可以使用如下的操作配置环境变量,使得Jax只能看到其中的1张卡,这样就不会扩张:In〔1〕:importosIn〔2〕:os。environ〔CUDAVISIBLEDEVICES〕1In〔3〕:fromjaximportnumpyasjnpIn〔4〕:xjnp。ones(1000000000)In〔5〕:!nvidiasmiWedJan1216:10:362022NVIDIASMI470。42。01DriverVersion:470。42。01CUDAVersion:11。4GPUNamePersistenceMBusIdDisp。AVolatileUncorr。ECCFanTempPerfPwr:UsageCapMemoryUsageGPUUtilComputeM。MIGM。0QuadroRTX4000On00000000:03:00。0OnNA3040CP819W125W537MiB7979MiB0DefaultNA1QuadroRTX4000On00000000:A6:00。0OffNA3035CP035W125W7195MiB7982MiB0DefaultNAProcesses:GPUGICIPIDTypeProcessnameGPUMemoryIDIDUsage0NANA1643GusrlibxorgXorg412MiB0NANA2940Gusrbingnomeshell75MiB0NANA47102G。。。AAAAAAAAAsharedfiles35MiB0NANA172424G。。。AAAAAAAAAsharedfiles11MiB1NANA1643GusrlibxorgXorg4MiB1NANA813030Cusrlocalbinpython7187MiB
  可以看到结果中已经是只使用了1张GPU卡,达到了我们的目的,但是这种通过配置环境变量来实现的功能还是着实不够pythonic,因此py3nvml中也提供了这样的功能,可以指定某一系列的GPU卡用于执行任务:In〔1〕:importpy3nvmlIn〔2〕:fromjaximportnumpyasjnpIn〔3〕:py3nvml。grabgpus(numgpus1,gpuselect〔1〕)Out〔3〕:1In〔4〕:xjnp。ones(1000000000)In〔5〕:!nvidiasmiWedJan1216:12:372022NVIDIASMI470。42。01DriverVersion:470。42。01CUDAVersion:11。4GPUNamePersistenceMBusIdDisp。AVolatileUncorr。ECCFanTempPerfPwr:UsageCapMemoryUsageGPUUtilComputeM。MIGM。0QuadroRTX4000On00000000:03:00。0OnNA3040CP820W125W537MiB7979MiB0DefaultNA1QuadroRTX4000On00000000:A6:00。0OffNA3036CP035W125W7195MiB7982MiB0DefaultNAProcesses:GPUGICIPIDTypeProcessnameGPUMemoryIDIDUsage0NANA1643GusrlibxorgXorg412MiB0NANA2940Gusrbingnomeshell75MiB0NANA47102G。。。AAAAAAAAAsharedfiles35MiB0NANA172424G。。。AAAAAAAAAsharedfiles11MiB1NANA1643GusrlibxorgXorg4MiB1NANA814673Cusrlocalbinpython7187MiB
  可以看到结果中也是只使用了1张GPU卡,达到了跟上一步的操作一样的效果。查看空闲GPU
  对于环境中可用的GPU,py3nvml的判断标准就是在这个GPU上已经没有任何的进程,那么这个就是一张可用的GPU卡:In〔1〕:importpy3nvmlIn〔2〕:freegpuspy3nvml。getfreegpus()In〔3〕:freegpusOut〔3〕:〔True,True〕
  当然这里需要说明的是,系统应用在这里不会被识别,应该是会判断守护进程。命令行信息获取
  跟nvidiasmi非常类似的,py3nvml也可以在命令行中通过调用py3smi来使用。值得一提的是,如果需要用nvidiasmi来实时的监测GPU的使用信息,往往是需要配合watchn来使用的,但是如果是py3smi则不需要,直接用py3smil就可以实现类似的功能。py3smil5WedJan1216:17:372022NVIDIASMIDriverVersion:470。42。01GPUFanTempPerfPwr:UsageCapMemoryUsageGPUUtilComputeM。03039C819W125W537MiB7979MiB0Default13033C87W125W6MiB7982MiB0DefaultProcesses:GPUMemoryGPUOwnerPIDUptimeProcessNameUsage
  可以看到略有区别的是,这里并不像nvidiasmi列出来的进程那么多,应该是自动忽略了系统进程。单独查看驱动版本和显卡型号
  在py3nvml中把查看驱动和型号的功能单独列了出来:In〔1〕:frompy3nvml。py3nvmlimportIn〔2〕:nvmlInit()Out〔2〕:CDLLlibnvidiaml。so。1,handle560ad4d07a60at0x7fd13aa52340In〔3〕:print(DriverVersion:{}。format(nvmlSystemGetDriverVersion()))DriverVersion:470。42。01In〔4〕:deviceCountnvmlDeviceGetCount()。。。:foriinrange(deviceCount):。。。:handlenvmlDeviceGetHandleByIndex(i)。。。:print(Device{}:{}。format(i,nvmlDeviceGetName(handle)))。。。:Device0:QuadroRTX4000Device1:QuadroRTX4000In〔5〕:nvmlShutdown()
  这样也不需要我们自己再去逐个的筛选,从灵活性和可扩展性上来说还是比较方便的。单独查看显存信息
  这里同样的也是把显存的使用信息单独列了出来,不需要用户再去单独筛选这个信息,相对而言比较细致:In〔1〕:frompy3nvml。py3nvmlimportIn〔2〕:nvmlInit()Out〔2〕:CDLLlibnvidiaml。so。1,handle55ae42aadd90at0x7f39c700e040In〔3〕:handlenvmlDeviceGetHandleByIndex(0)In〔4〕:infonvmlDeviceGetMemoryInfo(handle)In〔5〕:print(Totalmemory:{}MiB。format(info。total20))Totalmemory:7979MiBIn〔6〕:print(Freememory:{}MiB。format(info。free20))Freememory:7441MiBIn〔7〕:print(Usedmemory:{}MiB。format(info。used20))Usedmemory:537MiB
  如果把这些代码插入到程序中,就可以获悉每一步所占用的显存的变化。总结概要
  在深度学习或者其他类型的GPU运算过程中,对于GPU信息的监测也是一个非常常用的功能。如果仅仅是使用系统级的GPU监测工具,就没办法非常细致的去跟踪每一步的显存和使用率的变化。如果是用profiler,又显得过于细致,而且环境配置、信息输出和筛选并不是很方便。此时就可以考虑使用py3nvml这样的工具,针对于GPU任务执行的过程进行细化的分析,有助于提升GPU的利用率和程序执行的性能。版权声明
  本文首发链接为:https:www。cnblogs。comdechinphyppy3nvml。html
  作者ID:DechinPhy
  更多原著文章请参考:https:www。cnblogs。comdechinphy
  打赏专用链接:https:www。cnblogs。comdechinphygalleryimage379634。html
  腾讯云专栏同步:https:cloud。tencent。comdevelopercolumn91958参考链接https:zhuanlan。zhihu。comp31558973
投诉 评论

魅蓝回归首款手机亮相!5000mAh大电池加持,699起售很早之前,魅蓝就有官宣回归手机市场,时间进入2022年,魅蓝也在年初为我们带来了惊喜,于今日发布了旗下首款回归之作魅蓝10。其实这款魅蓝10正如官方所说一样,是一部基础款手机。……8G的iphone4s目前还有什么用?4s发布那会儿还在大学,没有钱,只能看着别人用很是羡慕。13年双11的时候买的4s(那时候已经出了5s了,实习工资不高,对4s的热爱是主要原因),每次系统更新都更新,越用……芯片航母重整旗鼓,中国缺芯难题能否柳暗花明?在数字经济的背景下,芯片已经成为当下电子设备应用最广的主要元器件。而随着5G和物联网等技术的落地,芯片的使用量更是持续上涨。然而因疫情引发的诸多连锁反应,导致芯片产能和供应受到……苹果停止在俄罗斯销售手机,小米为首的国产品牌,或成大赢家?苹果公司在近日宣布,停止在俄罗斯销售产品,其中自然就包括iP苹果是俄罗斯最大的厂商品牌之一,去年占据了13的市场份额,排名为第三;俄罗斯目前最大的手机品牌是三星,三星……郑州不少市民扫码变红,咋解决?如果最近14天,没出郑州市,未收到政府的短信,直接到社区签订承诺书,社区现场给办理转码。我今天下午刚去办理过。5分钟搞定。坐标东区如果出了郑州,或者收到政府短信,需要再加……海思麒麟我还行2021年12月9日,极客湾整理了目前所有移动SOC的Geekbench5的CPU排行榜,果不其然前面清一色的Apple处理器,但是,当我往下看时,发现了亮点。麒麟900……py3nvml实现GPU相关信息读取目录技术背景常规信息读取py3nvml的安装与使用py3nvml绑定GPU卡查看空闲GPU命令行信息获取单独查看驱动版本和显卡型号单独查看显存信息总结概要版权声明参考链接技术背……任嘉伦还能持续火多久?放心吧,依照任嘉伦的实力,更火的还在后面,有实力的演员都是靠作品火起来的,不是被粉丝捧来捧去火起来的。最初出圈的是大唐荣耀,后来出圈的是锦衣之下,现在的周生如故和一生一世……A股万亿赛道启动储能板块里的十二大潜力优质龙头股新型储能发展规划开始大力推进,将扩大风电光电装机容量,推动新能源储能格局的全面展开。众所周知绿色能源不单单只是装上光伏和风机,电力的完善和储存才是核心要素,要是保存不好,……壹号掌机OnexPlayer1S8。4英寸玩游戏,比笔记本电好像很多人都喜欢玩PC游戏,比如就我自己来说,每次出门的时候,都会把笔记本电脑和游戏手柄一同带上,然后只要有闲暇的时间,就会拿出来玩玩游戏。不过后来我也意识到了一个问题,那就是……vivoX70系列曝光!搭载多平台处理器,最高支持55W快充前段时间,网上曾经曝出过关于vivo下一代X系列旗舰的消息。不过,由于爆料所透露的信息较少,并没有引起众多网友的广泛关注。而就在今天上午,有数码博主曝出了疑似vivoX70Pr……小米红米Note10Pro怎么样?小米红米Note10Pro(6GB128GB5G版)最新价格是1599元,如果你正想入手一台好点的手机的话,我想这会是其中一个很好的选择!上市时间为2021年05月26日。这款……
缔造轻薄长续航标杆,ThinkPad2021春季新品公布2月底发布!红米K50规格被确认,天玑9000VC液冷散热iPhone13Pro谍照曝光,玫瑰金撞脸三星,代工厂重金招时隔五年,任正非再次表态,华为的状态已经截然不同机圈的2021年,是高端市场真刀真枪拼杀的一年!厂商们明年继美国第四个硅谷要诞生了?5G是哪个国家最先研发出来的?最终的专利又属于谁?马云81岁的父亲马来法,曲艺界的元老,却从不愿提及儿子马云职业选手也在用但鼠标加配重并不能锻炼技术每天10分钟,python进阶(15)新零售时代,无人货架线上便利店,你会选择哪一个?数字人民币最新使用方式来了领红包买保险还能藏私房钱责任与心作文550字一个人只有走的尽可能远,才会知道自己到底能走多远,早安人鱼之水红钻口红试色一只透亮的红柚子银行卡异地销户以建行为例今日观察王恒:两大法系的法官培训制度孕妇的生命终于被抢回来,152名陌生人的接力时刻不吃盐的危害有哪些从小被欺凌,长大后查出高功能自闭症米津玄师如今成为6亿人偶像2013暑期征文学习心得注意总做一种梦可能是身体出了问题大蒜泡酒治脚气吗治疗效果不太明显

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利