精华内容
下载资源
问答
  • 今天小编就为大家分享一篇Pytorch释放显存占用方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • PyTorch节省显存占用方法

    千次阅读 2019-06-21 08:17:28
    1-使用inplace操作 2-使用混合精度运算 参考: [1]混合精度训练 ...[2]pytorch节省显存小技巧 https://blog.csdn.net/yangyang_yangqi/article/details/88051462 [3]Pytorch有什么节省内存...

    1-使用inplace操作

    2-使用混合精度运算

    参考:

    [1]混合精度训练

    http://kevinlt.top/2018/09/14/mixed_precision_training/

    [2]pytorch节省显存小技巧

    https://blog.csdn.net/yangyang_yangqi/article/details/88051462

    [3]Pytorch有什么节省内存(显存)的小技巧

    https://www.zhihu.com/question/274635237/answer/582278076?utm_source=wechat_session&utm_medium=social&utm_oi=42374529024000

    展开全文
  • 1、pytorch 的 checkpoint 是一个可以用时间换空间的技术,很多情况下可以轻松实现 batch_size 翻倍的效果. 快速使用链接: https://blog.csdn.net/ONE_SIX_MIX/article/details/89639334 2、apex 混合精度训练 快速...

    1、pytorch 的 checkpoint 是一个可以用时间换空间的技术,很多情况下可以轻松实现 batch_size 翻倍的效果.
    快速使用链接:
    https://blog.csdn.net/ONE_SIX_MIX/article/details/89639334
    2、apex 混合精度训练
    快速使用链接:
    https://zhuanlan.zhihu.com/p/79887894

    展开全文
  • ps:师傅希望想tensorflow一样设置GPU占用(tf.GPUOptions),但事实情况是好像pytorch根本就没有相关函数来设置(如8G显存我只用2G,来跑是否可行) 1.网上很多攻略关于pytorch 训练时显存持续增长的问题 其实这...

    ps:师傅希望想tensorflow一样设置 GPU占用(tf.GPUOptions),但事实情况是好像pytorch根本就没有相关函数来设置(如8G显存我只用2G,来跑是否可行)

    1.网上很多攻略关于pytorch 训练时显存持续增长的问题

    其实这个问题主要出现在0.4之前的版本,在累加loss时用的是loss_sum += loss,而非loss_sum += loss.data[0].因为loss其实是tensor,会持续不断的放进显存里面的.

    0.4之后的版本已经用loss.item() 替代loss.data[0],获取的直接是数字.

    2.占用优化.

    写了一些,发现有人以及总结的十分全面了,我就再稍微补充下写.最原始参考:https://www.zhihu.com/question/274635237

    博士就是吊.

    我从另外一个地方搬运:https://v2ex.com/t/532315

    在不修改网络结构的情况下, 有如下操作:

    1. 同意 @Jiaming, 尽可能使用 inplace 操作, 比如 relu 可以使用 inplace=True

    2. 进一步,比如 ResNet 和 DenseNet 可以将 batchnorm 和 relu 打包成 inplace,在 bp 时再重新计算。使用到了 pytorch 新的 checkpoint 特性,有以下两个代码。由于需要重新计算 bn 后的结果,所以会慢一些。
    gpleiss/efficient_densenet_pytorch ( https://github.com/gpleiss/efficient_densenet_pytorch)
    mapillary/inplace_abn ( https://github.com/mapillary/inplace_abn)

    3. 每次循环结束时 删除 loss,可以节约很少显存,但聊胜于无。可见如下 issue

    Tensor to Variable and memory freeing best practices ( https://discuss.pytorch.org/t/tensor-to-variable-and-memory-freeing-best-practices/6000/2)


    4. 使用 float16 精度混合计算。我用过 
    @NVIDIA 英伟达
    apex,很好用,可以节约将近 50%的显存,但是要小心一些不安全的操作如 mean 和 sum,溢出 fp16。

    NVIDIA/apex ( https://github.com/NVIDIA/apex)


    5. 对于不需要 bp 的 forward,如 validation 请使用 torch.no_grad , 注意 model.eval() 不等于 torch.no_grad() 请看如下讨论。

    'model.eval()' vs 'with torch.no_grad()' ( https://discuss.pytorch.org/t/model-eval-vs-with-torch-no-grad/19615)


    6. torch.cuda.empty_cache() 这是 del 的进阶版,使用 nvidia-smi 会发现显存有明显的变化。但是训练时最大的显存占用似乎没变。大家可以试试。

    How can we release GPU memory cache? ( https://discuss.pytorch.org/t/how-can-we-release-gpu-memory-cache/14530)


    7.另外,会影响精度的骚操作还有:

    把一个 batchsize=64 分为两个 32 的 batch,两次 forward 以后,backward 一次。但会影响 batchnorm 等和 batchsize 相关的层。


    相关链接:

    老外写的提高 pytorch 效率的方法,包含 data prefetch 等

    Optimizing PyTorch training code ( https://www.sagivtech.com/2017/09/19/optimizing-pytorch-training-code/)

     

    我对其中几点做下补充:

    6.其实https://oldpan.me/archives/pytorch-gpu-memory-usage-track中所写其实Pytorch已经可以自动回收我们“不用的”显存,类似于python的引用机制,当某一内存内的数据不再有任何变量引用时,这部分的内存便会被释放.Pytorch的开发者也对此进行说明了,这部分释放后的显存可以用,只不过不在Nvidia-smi中显示罢了。 torch.cuda.empty_cache()其实没啥用处.

    7.其实这个功能已经在Pytorch-0.4.0出现了可以将一个计算过程分成两半,也就是如果一个模型需要占用的显存太大了,我们就可以先计算一半,保存后一半需要的中间结果,然后再计算后一半。具体参考https://blog.csdn.net/TTdreamloong/article/details/84886621,使用了checkpoint包.显存实在不够的同学可以试试.

    展开全文
  • pytorch查看网络参数显存占用量等

    千次阅读 2020-12-10 16:05:19
    转载自:https://blog.csdn.net/weixin_45292794/article/details/108227437,可能略有修改,本文之作个人纪录学习使用,版权归原作者所有。 1.使用torchstat pip install torchstat from torchstat import ...

    转载自:https://blog.csdn.net/weixin_45292794/article/details/108227437,可能略有修改,本文之作个人纪录学习使用,版权归原作者所有。

    1.使用torchstat

    pip install torchstat
    
    
    from torchstat import stat
    import torchvision.models as models
    model = models.resnet152()
    stat(model, (3, 224, 224))

    关于stat函数的参数,第一个应该是模型,第二个则是输入尺寸,3为通道数。我没有调研该函数的详细参数,也不知道为什么使用的时候并不提示相应的参数。

     

    2.使用torchsummary

    pip install torchsummary
    
    from torchsummary import summary
    summary(model.cuda(),input_size=(3,32,32),batch_size=-1)

    使用该函数直接对参数进行提示,可以发现直接有显式输入batch_size的地方,我自己的感觉好像该函数更好一些。但是!!!不知道为什么,该函数在我的机器上一直报错!!!TypeError: can't convert CUDA tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory first.

     

    Update:经过论坛咨询,报错的原因找到了,只需要把

    pip install torchsummary

    修改为

    pip install torch-summary

     

    展开全文
  • 一、查看模型及中间变量的显存占用情况 1. 显存占用 参考博客: https://oldpan.me/archives/how-to-calculate-gpu-memory https://zhuanlan.zhihu.com/p/31558973 主要由两个部分组成: 模型参数 模型计算产生的...
  • 本文是整理了大神的两篇博客:如何计算模型以及中间变量的显存占用大小:https://oldpan.me/archives/how-to-calculate-gpu-memory如何在Pytorch中精细化利用显存:...https://zhuanlan.zhihu.com/p/3...
  • pytorch减少显存使用

    2020-07-29 11:27:52
    估计pytorch为了加快计算速度,使用了占用大量显存的运算方式,开辟出新的显并进行赋值。对这些函数进行修改可以减少大量显存: 将tensor分为多个batch,分别进行transpose b,c,h,w = out.shape # transpose ...
  • pytorch显存跟踪问题

    千次阅读 2019-11-03 00:06:54
    https://github.com/Oldpan/Pytorch-Memory-Utils 如何在Pytorch中精细化利用显存 ...浅谈深度学习:如何计算模型以及中间变量的显存占用大小 https://oldpan.me/archives/how-to-calculate-gpu-me...
  • pytorch gpu 显存调试 如何运行 gpu_memory_log import torch from gpu_memory_log import gpu_memory_log dtype = torch.float N, D_in, H, D_out = 64, 1000, 100, 10 device = torch.device("cuda") x = torch....
  • 显存用在刀刃上!17 种 pytorch 节约显存技巧

    千次阅读 多人点赞 2021-07-26 13:18:30
    引导显存都用在哪儿了?技巧 1:使用就地操作技巧 2:避免中间变量技巧 3:优化网络模型技巧 4:降低 BATCH_SIZE技巧 5:拆分 BATCH_SIZE技巧 6:降低 PATCH_SIZE技巧 7:优化损失求和技巧 8:混合精度训练技巧 9:...
  • Pytorch节省显存、加速训练的小技巧

    千次阅读 2020-07-22 12:08:49
    Pytorch节省显存、加速训练的小技巧 2020.7.22 张文政 GPU是深度学习模型的关键,对GPU来说,最重要的两个指标就是显存与算力。如何在代码层面最大程度地节省显存、在算力固定的情况下更快地训练,是值得学习地。...
  • 最近在做模型的优化工作,主要涉及精度,速度和显存优化,今天主要针对显存优化分享下关于Pytorch显存机制的笔记。 显存优化还涉及显存量查看,训练中显存使用分布查看,还有一些节省显存的tricks。我在这篇文章中...
  • 计算模型的显存占用率 如何计算模型以及中间变量的显存占用大小可以参考此文。 如何在Pytorch中精细化利用显存,牺牲计算速度减少显存用量,将计算过程分为两半,先计算一半模型的结果,保存中间结果再计算后面一半...
  • Pytorch GPU显存充足却显示out of memory解决办法

    万次阅读 热门讨论 2019-06-13 14:20:40
    今天在测试一个pytorch代码的时候显示显存不足,但是这个网络框架明明很简单,用CPU跑起来都没有问题,GPU却一直提示out of memory. 在网上找了很多方法都行不通,最后我想也许是pytorch版本的问题,原来我的pytorch...
  • 1-删除模型变量 del model_define 2-清空CUDA cache torch.cuda.empty_cache() 3-步骤2(异步)需要一定时间,设置时延 ... 您可能感兴趣的文章:Pytorch释放显存占用方式解决Pytorch 训练与测试时爆显存
  • Pytorch已经可以自动回收我们不用的显存,类似于python的引用机制,当某一内存内的数据不再有任何变量引用时,这部分的内存便会被释放。但有一点需要注意,当我们有一部分显存不再使用的时候,这部分释放的显存通过...
  • 一、 模型如下: ... (base): ModuleList(  (0): Conv2d(1, 24, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))  (1): ReLU(inplace)  (2): Conv2d(24, 24, kernel_size=(3, 3), stride...
  • pytorch显存机制torch.cuda.empty_cache()

    万次阅读 多人点赞 2019-05-22 20:50:02
    Pytorch已经可以自动回收我们不用的显存,类似于python的引用机制,当某一内存内的数据不再有任何变量引用时,这部分的内存便会被释放。但有一点需要注意,当我们有一部分显存不再使用的时候,这部分释放的显存通过...
  • 但是训练时最大的显存占用似乎没变。大家可以试试。 How can we release GPU memory cache? 另外,会影响精度的骚操作还有: 把一个batchsize=64分为两个32的batch,两次forward以后,backward一次。但会影响 ...
  • Pytorch 显存规划

    千次阅读 2019-03-02 13:55:05
    在上篇文章《浅谈深度学习:如何计算模型以及中间变量的显存占用大小》中我们对如何计算各种变量所占显存大小进行了一些探索。而这篇文章我们着重讲解如何利用Pytorch深度学习框架的一些特性,去查看我们当前使用的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,445
精华内容 578
关键字:

pytorch查看显存占用