您现在的位置是:生活百科网 > 生活百科 >
完美解决显卡利用率低(完美解决显卡利用率低 绝地求生)
2022-05-04 10:25生活百科 人已围观
简介完美解决显卡利用率低这老哥也是太牛了,用着3080就想要任性开4k了!捂脸这老哥配置这样:cpu:2700x显卡:3080现在问题是,在4k分辨率下,艾尔登法环和gta5cpu占用率30-80%波动,显卡占...
完美解决显卡利用率低
这老哥也是太牛了,用着3080就想要任性开4k了!捂脸这老哥配置这样:cpu:2700x 显卡:3080 现在问题是,在4k分辨率下,艾尔登法环和gta5 cpu占用率30-80%波动,显卡占用率40%-96%波动,60hz ,有时会突然掉帧 。
想知道是不是cpu瓶颈了?
显卡利用率一直在100正常吗
为啥GPU利用率总是这么低
榨干GPU的显存,使模型成功跑起来已有多种教程。
但是,又一个问题来了,GPU的利用率总是一会99%,一会10%,就不能一直99%榨干算力?导致算力不能够完全利用的原因是数据处理的速度没有跟上网络的训练速度。
因此,我们的抓手在于提高数据的读取、预处理速度。
定位问题
首先,我们得先判断到底是不是数据读取、预处理阶段是整个pipeline的瓶颈,不然岂不是优化了个寂寞。
pycharm run/profile 分析瓶颈
通过pycharm的run/profile xxx,我们可以看到程序执行的调用图,并且可以显示每个步骤的耗时以及其占比。
通过这个工具,我们可以分析在整套训练代码中时间的瓶颈,因此也能够更加准确的定位程序运行慢的症结所在。
下图为profile收集一个epoch结果之后所产生的调用图。
profile生成的程序调用链
我们可以看到,读取数据的这部分为黄色,说明数据读取部分是整个训练pipeline的瓶颈,因此我们便可以针对性的优化。
提高数据读取速度
数据读取速度慢主要是两个方面的问题:1.数据在机械硬盘中不是连续存储的,因此多个小文件的读取会浪费很多时间在寻道上;2.机械硬盘的物理特性决定其读取速度的上限。
打包数据
https://github.com/Lyken17/Efficient-PyTorchdata-loader
假如我们训练的图片都是比较小,但是数量比较多的情况下,我们可以采取将数据打包成一个大的文件,比如hdf5/pth等格式。
这种方式主要是降低了机械硬盘的寻道时间还有OS开启/关闭文件描述符的时间。
实现的方法可以参考上述repo。
把数据放到内存上
相比于机械硬盘来说,内存的速度可是快了几个量级,基本上可以说读取无延迟。
因此,如果内存够大的话,的确可以先把数据全部都挂载在内存上,然后训练的时候直接从内存读取。
sudo mount tmpfs /path/to/your/data -t tmpfs -o size=30Gmount用于挂载Linux系统外的文件,tmpfs即temporary file system。
许多软件为了提高一些常用的数据的读取速度,会把这些数据长期驻留在内存中以保持一个较快读写速度。
后面的路径则是指明需要挂载对数据的路径,-o则是tmpfs动态大小的上限。
需要注意的是,由于虚拟内存的存在(在linux为swap空间),数据并不一定都会放在物理内存中。
因此我们挂载的数据也可能会因为太久没有使用而被置换到机械硬盘中。
并且,由于再逻辑上这些数据是存储在内存中,因此断电之后这些数据都会会清空。
加钱
都2021年了,现在SATA接口的SSD价格早已跌破0.5元1G了,建议可以换个大容量的SSD,提高工作效率。
手头比较宽松的小伙伴/实验室也可以考虑一下NVMe协议的固态,速度直接起飞。
提高数据读取/预处理速度
选择opencv而不是PIL读取数据
https://www.kaggle.com/yukia18/opencv-vs-pil-speed-comparisons-for-pytorch-user

两个库在不同方法的速度对比
prefetch
预读就是在GPU还在训练一个batch的同时,CPU也没有闲着,赶紧把数据读到内存中并进行数据预处理。
在Pytorch1.7以前,一般使用Nvidia的apex库来进行prefetch。
但是有个问题就是可能会存在内存泄漏的问题,具体原因可以参考https://github.com/NVIDIA/apex/issues/439。
而在Pytorch1.7版本之后,torch.utils.data里面的DataLoader中就能够通过prefetch_factor属性来决定每个每个 worker提前加载的sample数量。
DALI出奇迹
DALI框架工作Pipeline
为了解决数据读取和预处理速度的问题,Nvidia推出了Data Loading Library1,包含了诸如数据加载、解码、裁剪、resize还有许多数据增强功能。
并且还能够将数据预处理阶段放到显卡上运行,进一步提高了数据增强的效率,目前已经可以轻松地被部署到TensorFlow,PyTorch,MXNet和PaddlePaddle框架。
实测在使用Pytorch+DALI能够比原来的速度提高将近四倍!2
References
1https://docs.nvidia.com/deeplearning/dali/user-guide/docs/2https://zhuanlan.zhihu.com/p/105056158
为什么你的显卡利用率总是0%?,显卡利用率一直在100正常吗
显卡利用率100%是好事还是坏事。
玩手机游戏的人变多,会不会导致显卡降价呢?(现在手机游戏并不比电脑游戏差啊,而普通电脑就能带动很高端的手机游戏,至少开3个都卡。
)思考显卡比我电脑还贵。
上一篇:核显天梯图(核显天梯图2022)
下一篇:女明星吻戏(明星拍吻戏是真的)
相关文章
- 2023北京本科普通批985院校投档线:清华685、北大683、武大653分
- 广东考生上华南理工大学难吗?
- 上海这3所大学2023考研复试分数线公布
- 最大相差178分!南京理工大学投档线集锦!最高681分,最低503分
- 2023湖北物理类投档线:武科大573、湖大563、江大536、武体506分
- 多少分能上南大?2023南京大学在苏录取数据盘点,这些途径可以走
- 2023山东高考,省内分数线最高的十所大学
- 国防科技大学录取分数线是多少?附国防科技大学毕业去向
- 郑州大学多少分能考上?2024才可以录取?附最低分数线
- 北京航空航天大学2023年录取分数线及省排名
- 哈尔滨工业大学(威海)、(深圳)校区2023年录取分数情况
- 2023广东本科投档线出炉!请看中大/华工/深大/华师/暨大等分数线
随机图文
工资流水账单怎么作假(offer工资流水账单怎么作假)
工资流水账单怎么作假看看真实的哈尔滨工资,数据不做假。说说你的工资水平...
什么事英语(什么事英语怎么说)
用心普及英语知识英语罐头本文是我的第381篇英语知识文章妈耶,这几天可把罐...
独角兽手表怎么调时间(独角兽手表怎么调时间和指针)
在我把玩的各类EDC装备中,有很多青铜、黄铜的手电、战术笔。这类装备的一个...
什么是共同基金(什么是共同基金投资法)
今日头条MSCI5月公布A股纳入名单,中小盘股未来也将纳入?4月11日,据第一财经...
拨云见雾(拨云见雾是什么意思)
拔云见雾是成语吗?拔云见雾是成语.拔云见雾一般是指拨云见日-即拨开乌云见到...
牛肉白菜(牛肉白菜饺子馅的做法)
懒人美食――懒人们的美食!其实我这说的懒人,并不能算是真正的懒人!上班...
中国机场排名(中国机场排名前20名)
2021年全国机场吞吐量排名正式出炉,总的来说2021年各机场的位次变动较大,主...
山东淄博爆炸「山东淄博爆炸事故」
大家好,小编来为大家解答山东淄博爆炸这个问题,山东淄博爆炸事故很多人还...
