GPU显存占满利用率GPU-util为0

8 篇文章 4 订阅
订阅专栏

1. 💢问题描述

运行程序的时候提醒显存不够,查看了一下nvidia-smi,确实显存占满了,但是GPU-Util,gpu利用率有三个都是0,只有一个是56%
在这里插入图片描述
搜索后发现这个现象的原因还比较普遍,但是似乎没有几个可以很好解决这个问题,
参考:

  • 脚本之家的文章: Pytorch GPU内存占用很高,但是利用率很低如何解决,
  • 转载自CSDN博客: Pytorch GPU内存占用很高,但是利用率很低,
  • ✅总结自CSDN博客: 深度学习PyTorch,TensorFlow中GPU利用率较低,CPU利用率很低,且模型训练速度很慢的问题总结与分析 这篇的点赞量评论数最多,以这个为主要。看了一下,确实很明晰,也举了例子。

2. 🥗原因分析

下面的2.1和2.2部分来自于
深度学习PyTorch,TensorFlow中GPU利用率较低,CPU利用率很低,且模型训练速度很慢的问题总结与分析
可以移步去原文!

2.1 GPU内存占用率(memory usage)

  • GPU内存的占用率往往是由模型大小和batchsize决定的,如果发现GPU占用率很小,比如40%,70%等等。如果此时网络结构已经固定,则只需要改变batch size的大小,就可以尽量利用完整个GPU的内存。
    • 对GPU内存占用率影响最大的还是模型大小,包括网络的宽度,深度,参数量,中间每一层的缓存,都会在内存中开辟空间来进行保存,模型本身会占用很大一部分内存。
    • 其次是batch size的大小,也会占用影响内存占用率。batch size设置为128,与设置为256相比,内存占用率是接近于2倍关系。当你batch size设置为128,占用率为40%的话,设置为256时,此时模型的占用率约等于80%,偏差不大。所以在模型结构固定的情况下,尽量将batch size设置大,充分利用GPU的内存。
    • GPU会很快的算完你给进去的数据,主要瓶颈在CPU的数据吞吐量上面。

2.2 GPU内存利用率(volatile GPU-Util)

volatile memory 易失性存储器

  • 当没有设置好CPU的线程数时,这个参数是在反复的跳动的,0%,20%,70%,95%,0%。这样停息1-2 秒然后又重复起来。
  • 其实是GPU在等待数据从CPU传输过来,当数据从总线传输到GPU之后,GPU逐渐计算起来,利用率会突然升高,但是GPU的算力很强大,0.5秒就基本能处理完数据,所以利用率接下来又会降下去,等待下一个batch的传入。
  • 所以GPU利用率瓶颈在内存带宽和内存介质上以及CPU的性能上面
  • 提高GPU利用率的方式:
    • 硬件上(最好):更换好的四代或者更强大的内存条,配合更好的CPU。
    • 软件上(以pytorch为例):
    • PyTorch框架的数据加载Dataloader类中包含了一些优化,包括num_workers(线程数)以及pin_memory,可以提升速度。解决数据传输的带宽瓶颈和GPU的运算效率低的问题。
    • 在TensorFlow下也类似的设置。

详细来说

  1. 首先要将num_workers(线程数)设置合理,4,8,16是几个常选的几个参数。
    测试发现将num_workers设置的非常大,例如,24,32,等,其效率也不一定会变高,因为模型需要将数据平均分配到几个子线程去进行预处理,分发等数据操作,设高了反而影响效率。
    当然,线程数设置为1,是单个CPU来进行数据的预处理和传输给GPU,效率也会低。
  2. 其次,当服务器或者电脑的内存较大,性能较好的时候,可以打开pin_memory,就省掉了将数据从CPU传入到缓存RAM里,再给传输到GPU上;为True,会直接映射到GPU的相关内存块上,省掉了一点数据传输时间。

2.3 torch.utils.data.dataloader

官方文档: torch.utils.data.dataloader
确实有两个重要的参数:

num_workers (int, optional): how many subprocesses to use for data
loading. ``0`` means that the data will be loaded in the main process.
(default: ``0``)

collate_fn (callable, optional): merges a list of samples to form a
mini-batch of Tensor(s).  Used when using batched loading from a
map-style dataset.

pin_memory (bool, optional): If ``True``, the data loader will copy Tensors
into CUDA pinned memory before returning them.  If your data elements
are a custom type, or your :attr:`collate_fn` returns a batch that is a custom type,
see the example below.
使用这个参数,可以将tensor拷贝到cuda的pinned memory,

关于pinned memory,可以参考文章:博客园 6.1 CUDA: pinned memory固定存储,是一种加速数据从cpu到gpu传输速度的方式。

  • 使用pytorch时,训练集数据太多达到上千万张,Dataloader加载很慢怎么办? - 人民艺术家的回答 - 知乎
  • pytorch内存泄露-dataloader

2.4 其他相关内容

https://www.zhihu.com/question/298616211
在这里插入图片描述

3. 🍔好的实践经验

在调试过程,

  • 命令:top 实时查看CPU的进程利用率,这个参数对应你的num_workers的设置;
  • 命令: watch -n 0.5 nvidia-smi 每0.5秒刷新并显示显卡设置。实时查看你的GPU的使用情况,这是GPU的设置相关。
  • 这两个配合好。包括batch_size的设置。

使用了watch -n 0.5 nvidia-smi这个命令之后,才确实可以看到,其实GPU是在运行的,只是变化很快。一直在变动。

4. GPU加载数据非常慢

在这里插入图片描述
有一个公用服务器,多人使用,同时多块GPU,可以看到,其实前面0,2这两块GPU基本是满载的,1和3这两块也有人在使用,但是我所使用的4号GPU,加载速度非常慢,差不多3-5分钟才加载了600MB的内容。。。

所以考虑是CPU到GPU的数据传输问题导致的瓶颈,故去查看CPU信息:

lscpu

在这里插入图片描述结合top命令发现,CPU数量48个,但是top命令中cpu最多就是9.4,根本占不满。。所以应该不是硬件的问题,不是cpu和gpu之间数据传输导致的


参考: GPU导入模型非常缓慢的解决办法,大概可以感觉到,应该是cudann版本太老了的问题,

  • 以前跑得很快,用的是2.0.1-gpu-cuda11.0-cudnn8
  • 现在虽然使用的是新版本的PaddlePaddle,但是由于服务器的cuda版本只有11.1,不满足11.2的要求,所以退而求其次,使用了2.1.2-gpu-cuda10.2-cudnn7一个老的cudnn8的镜像,确实也是这次很慢。。。换!

在这里插入图片描述

GPU显存占满利用率GPU-util奇低
李响
12-02 7556
如上图。 但是有显存占用说明模型应该是在跑的。后来既然GPU利用不起来,我干脆同时跑多个模型,想充分利用,但是效果还不是很明显,速度依然都很慢。 查了查资料发现可以在Dataloader里加pin_memory=True, num_workers=8,这样能将数据放入显存,并且通过多线程减少数据读入的时间,模型训练速度会快一些。但是我试了试也没有明显的效果,就很奇怪。 当然也试过增大batch size,但是治标不治本。 问题原因 所以到底为什么导致了这个原因呢? 后来我偶然为了减小最后的tensorbo.
gpu参数查看工具
12-29
显卡参数查看工具,并且可以实时查看gpu使用情况,可以及时看到电脑运行情况
Pytorch GPU内存占用很高,但是利用率很低
Golden-sun的博客
09-22 2万+
1.GPU 占用率,利用率 输入nvidia-smi来观察显卡的GPU内存占用率(Memory-Usage),显卡的GPU利用率GPU-utilGPU内存占用率(Memory-Usage) 往往是由于模型的大小以及batch size的大小,来影响这个指标 显卡的GPU利用率GPU-util) 往往跟代码有关,有更多的io运算,cpu运算就会导致利用率变低。比如打印loss, 输出图像,等等 这个时候发现,有一块卡的利用率经常跳到1%,而其他三块卡经常维持在70%以上 2.原因分析 当没有设置好C
怎样用int8减少GPU显存占用并提升效率——DeepLn算力云全程实操
最新发布
DeepLn_HPC的博客
04-17 1924
将模型中的32位浮点数转换为8位整数。这种转换通过使用缩放因子(scale)和偏移量(offset)完成。不仅缩减了数据存储的空间,还能在推理时降低计算资源的消耗。
Pytorch DataLoader 提高模型训练时的 Volatile Gpu-UtilGPU利用率
qq_43799400的博客
03-19 961
Pytorch DataLoader 函数,提高模型训练时的 GPU利用率 Volatile Gpu-Util
探秘GPUUtil: 提升你的GPU管理效率
gitblog_00001的博客
04-09 376
探秘GPUUtil: 提升你的GPU管理效率 项目地址:https://gitcode.com/anderskm/gputil GPUUtil 是一个开源项目,它提供了一种简单而有效的方式来监控和管理你的图形处理器(GPU)。如果你是数据科学家、深度学习工程师或者是对GPU性能有高要求的开发者,那么这个工具就非常适合你。 项目简介 GPUUtil 是由 anderskm 创建的一个轻量级命令行工具...
gpu 显存占用 与 volatile gpu-utilgpu利用率
热门推荐
nlite827109223的博客
12-07 4万+
1. https://github.com/tensorflow/tensorflow/issues/543 2. http://caffecn.cn/?/question/1861   gpu占用高,不表示利用率高,tensorflow不设置gpu占用多少的情况下,会默认占满gpu   要是需要同时跑几个gpu程序,可以设置tensorflow的最大gpu显存占用,不要设置根据需要增加...
深度学习PyTorch,TensorFlow中GPU利用率较低,CPU利用率很低,且模型训练速度很慢的问题总结与分析
qq_41568188的博客
06-02 5514
在深度学习模型训练过程中,在服务器端或者本地pc端,输入nvidia-smi来观察显卡的GPU内存占用率(Memory-Usage),显卡的GPU利用率GPU-util),然后采用top来查看CPU的线程数(PID数)和利用率(%CPU)。往往会发现很多问题,比如,GPU内存占用率低,显卡利用率低,CPU百分比低等等。接下来仔细分析这些问题和处理办法。** GPU内存占用率问题 这往往是由于模型的大小以及batch size的大小,来影响这个指标。当你发下你的GPU占用率很小的时候,比如40%,70%
深度学习学习——解决Low volatile GPU-Util but high GPU Memory Usage
m0_37876745的博客
10-18 2186
提高深度学习的训练效率: Pytorch Gpu Utlilization
GPU利用率与使用率
摩登都市天空---专栏
02-28 1万+
GPU利用率 广义的GPU利用是指对GPU利用率效率,包括GPU空间和时间上的利用效率。 狭义的GPU利用率是指GPU时间片上的利用率GPU可用的物理资源有哪些? GPU可利用资源:SM (计算单元)MEM(存储) Encoder(编码) Decoder (解码) CPU利用率计算方法 GPU利用不高的原因? GPU资源利用不高的原因大致如下: CP...
GPU利用率gpu-util)低下的可能原因
qq_42061298的博客
01-08 3147
本文章分享一下自身遇到的一个问题,参考很多其他文章对GPU利用率低的解答发现自己都解决了,可是利用率还是一会儿10%一会儿90%。我的原因是使用了VGG模块用于计算感知损失。 for epoch in range(start_epoch , opt.nEpochs): for iteration, batch in enumerate(training_data_loader, 1): ... vgg = Vgg19(requires_grad=False).to('cuda') ...
技巧-GPU显存利用率如何提高和batch_size/num_works等参数的实验测试
zwhdldz的博客
11-30 4746
PyTorch中使用多个GPU进行模型训练时,各个参数和指标之间存在一定的关系。GPU显存是限制模型训练规模的关键因素。当使用多个GPU进行训练时,每个GPU都会分配一部分显存用于存储中间变量、梯度、权重等。GPU显存的使用量取决于模型的复杂度、批量大小(batch size)以及数据类型等因素。举例:假设我们使用两个GPUGPU 0和GPU 1)进行训练,每个GPU显存为12GB。若批量大小为32个样本,模型复杂度为中等,则每个GPU可能需要大约4GB的显存
unist-util-visit:访问节点的实用程序
04-28
npm install unist-util-visit 用 import { u } from 'unist-builder' import { visit } from 'unist-util-visit' const tree = u ( 'tree' , [ u ( 'leaf' , '1' ) , u ( 'node' , [ u ( 'leaf' , '2' ) ] ) , u...
hast-util-to-html:将 hast 序列化为 HTML 的实用程序
07-23
hast-util-to-html 实用程序可以序列化为 HTML。 安装 此包 :需要 Node 12+ 才能使用它,并且必须使用import ed 而不是require d。 : npm install hast-util-to-html 采用 import { h } from 'hastscript' ...
ws-commons-util-1.0.2.zip_ws-comm-util.jar
09-21
ws-commons-util-1.0.2.jar xenserver 依赖包
opentracing-util-0.33.0-API文档-中文版.zip
03-30
赠送jar包:opentracing-util-0.33.0.jar 赠送原API文档:opentracing-util-0.33.0-javadoc.jar 赠送源代码:opentracing-util-0.33.0-sources.jar 包含翻译后的API文档:opentracing-util-0.33.0-javadoc-API...
api-util-1.0.0-M20-API文档-中英对照版.zip
04-09
赠送jar包:api-util-1.0.0-M20.jar; 赠送原API文档:api-util-1.0.0-M20-javadoc.jar; 赠送源代码:api-util-1.0.0-M20-sources.jar; 包含翻译后的API文档:api-util-1.0.0-M20-javadoc-API文档-中文(简体)-...
有关Pytorch训练时Volatile Gpu-Util(GPU利用率)很低,而Memory-ueage(内存占比)很高的情况解释与说明
等待戈多的博客
01-30 2万+
有关Pytorch训练时GPU利用率很低,而内存占比很高的情况前言有关GPU的Memory-usage的占用(GPU内存占有率)有关Volatile GPU-Utile的利用率GPU利用率) 直接参考 前言 模型开始训练时候,常用watch -n 0.1 nvidia-smi来观察GPU显存占比情况,如下图所示,通常GPU显存占比和GPU利用率都很高,但有的模型训练的时候GPU利用率Volatile GPU-util)占比在不断的动态变化,从0-100%之间不断浮动循环。 如果发生上述这种GPU利用
大模型ChatGLM Lora微调的参数详探- 多卡版本
人工智能曾小健
07-04 2776
但是,如果你想要尝试提高模型的精度,可能需要试验不同的batch size。不同的深度学习框架可能会有不同的命名规则,一般来说,xxit/s是每秒钟处理的批次(batch)数量,而不是每秒处理的数据条数。比如,如果我们有1000个样本的数据集,我们可以设置batch size为100,那么我们就会将数据集分成10批,每批包含100个样本,然后逐一将这10批数据输入到模型中进行训练。:这是一个标志,表示如果你的缓存中已经存在预处理过的数据集,那么这个标志会让你的程序忽略这些数据,重新预处理数据。
error while loading shared libraries: libxcb-render-util.so.0
09-07
这个错误是由于缺少 libxcb-render-util.so.0 库文件所引起的。这个库文件是 XCB(X protocol C-language Binding)的一个工具库,用于渲染图形界面。 要解决这个问题,你可以尝试以下几个步骤: 1. 检查库文件是否存在:可以通过运行以下命令来检查该库文件是否存在于系统中: ``` ls /usr/lib/libxcb-render-util.so.0 ``` 如果文件不存在,请执行下一步。 2. 安装缺失的库文件:你可以尝试重新安装 libxcb-render-util 库文件,方法视你使用的操作系统而定。 - 对于 Ubuntu/Debian 系统,可以使用以下命令进行安装: ``` sudo apt-get install libxcb-render-util0 ``` - 对于 CentOS/Fedora 系统,可以使用以下命令进行安装: ``` sudo dnf install libxcb-render-util ``` - 对于其他 Linux 发行版,请查阅对应发行版的文档以获取安装命令。 3. 更新库缓存:在安装完库文件后,需要更新库缓存以使系统能够正确找到新安装的库文件。执行以下命令来更新: ``` sudo ldconfig ``` 在完成以上步骤之后,你应该能够解决该错误并成功加载所需的库文件。如果问题仍然存在,请提供更多的信息,以便我能够更好地帮助你解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • pip install git(pip直接安装git上的项目) 69320
  • 禁用Windows Defender Antivirus Service 67928
  • vscode使用ssh远程连接失败(及其他问题合集) 62405
  • PaddleOCR本地部署(安装,使用,模型优化/加速) 50243
  • 带圈数字符号0-100和unicode编码 44349

分类专栏

  • 动手学深度学习pytorch 付费 53篇
  • 医学影像 付费 27篇
  • 医学数字图像处理
  • ITK 13篇
  • 医学影像知识 7篇
  • 传统算法 2篇
  • 项目实战 27篇
  • OCR数字仪表识别 32篇
  • PyQt 3篇
  • 电动工具所项目 15篇
  • mac 15篇
  • opencv 24篇
  • 学习Opencv 14篇
  • 数字图像处理 3篇
  • C++ 10篇
  • python基础 40篇
  • 意外接触的一些知识 50篇
  • 大模型实战营 4篇
  • OpenMMLab-AI实战营第二期 17篇
  • 强化学习 8篇
  • 量化交易 4篇
  • CVAT 3篇
  • OpenVINO 3篇
  • anyq 9篇
  • linux服务器相关 18篇
  • 工具日常使用 26篇
  • 工具推荐 11篇
  • 其他 22篇
  • 知识图谱 15篇
  • 必备技能 24篇
  • docker 8篇
  • git 14篇
  • pytorch 8篇
  • DL 5篇

最新评论

  • 正确访问其他程序的 MSFlexGrid类

    天龙地龙小老虎: 嗯嗯,说不定哪天我会回来借鉴你的这个开发经验。

  • 正确访问其他程序的 MSFlexGrid类

    吨吨不打野: 可能吧,哈哈哈,不过很久不做这个了

  • 正确访问其他程序的 MSFlexGrid类

    天龙地龙小老虎: 你这个代码,可以变成RPA的底层工具。

  • pip install git(pip直接安装git上的项目)

    waketzheng: ssh示例:pip install git+ssh://git@github.com/waketzheng/tomlkit.git@fix-326#egg=tomlkit

  • 禁用Windows Defender Antivirus Service

    街角男孩: 没有用,关不了,老是沙CRAK文件

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • MMSegmentation——流程化使用
  • 学习Opencv(蝴蝶书/C++)——5.矩阵的其他算子(友元函数)
  • 大模型实战营第二期——4. XTuner 大模型单卡低成本微调实战
2024年7篇
2023年40篇
2022年98篇
2021年182篇
2020年47篇
2019年1篇

目录

目录

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吨吨不打野

解决了问题,觉得还行就给点

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

深圳SEO优化公司鹰潭外贸网站制作价格阿里品牌网站设计公司漯河网站优化按天计费价格白城网站建设报价兴安盟关键词排名包年推广飞来峡百搜标王报价木棉湾阿里店铺托管哪家好晋中网络推广兴安盟网站seo优化报价常德模板推广报价山南网站优化排名哪家好池州企业网站建设周口网络营销哪家好铁岭网站关键词优化公司商洛优秀网站设计价格济宁设计网站推荐莱芜高端网站设计价格毕节关键词按天扣费公司徐州网站定制价格天水seo网站优化哪家好扬州网站设计模板哪家好思茅网站搭建公司横岗高端网站设计贵港企业网站改版黄石英文网站建设多少钱海口百搜标王公司江门至尊标王推荐哈尔滨SEO按效果付费报价张家界百姓网标王价格光明网站推广系统报价歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化