时间:2021-05-23
对于显存不充足的炼丹研究者来说,弄清楚Pytorch显存的分配机制是很有必要的。下面直接通过实验来推出Pytorch显存的分配过程。
实验实验代码如下:
import torch from torch import cuda x = torch.zeros([3,1024,1024,256],requires_grad=True,device='cuda') print("1", cuda.memory_allocated()/1024**2) y = 5 * x print("2", cuda.memory_allocated()/1024**2) torch.mean(y).backward() print("3", cuda.memory_allocated()/1024**2) print(cuda.memory_summary())输出如下:
代码首先分配3GB的显存创建变量x,然后计算y,再用y进行反向传播。可以看到,创建x后与计算y后分别占显存3GB与6GB,这是合理的。另外,后面通过backward(),计算出x.grad,占存与x一致,所以最终一共占有显存9GB,这也是合理的。但是,输出显示了显存的峰值为12GB,这多出的3GB是怎么来的呢?首先画出计算图:
下面通过列表的形式来模拟Pytorch在运算时分配显存的过程:
如上所示,由于需要保存反向传播以前所有前向传播的中间变量,所以有了12GB的峰值占存。
我们可以不存储计算图中的非叶子结点,达到节省显存的目的,即可以把上面的代码中的y=5*x与mean(y)写成一步:
import torch from torch import cuda x = torch.zeros([3,1024,1024,256],requires_grad=True,device='cuda') print("1", cuda.memory_allocated()/1024**2) torch.mean(5*x).backward() print("2", cuda.memory_allocated()/1024**2) print(cuda.memory_summary())占显存量减少了3GB:
以上就是弄清Pytorch显存的分配机制的详细内容,更多关于Pytorch 显存分配的资料请关注其它相关文章!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
下面通过实验来探索Pytorch分配显存的方式。实验显存到主存 我使用VSCode的jupyter来进行实验,首先只导入pytorch,代码如下:impo
  1、何为流量机制  流量的分配机制,其实就是将网站平台内的流量通过相应的策略进行合理的分配,只有这样才能够实现流量的
2019年已经过了几个月,现在流量也恢复正常稳定。目前,淘宝流量的分配机制与以前不同。过去,你的产品排名越高,流量多,同样现在用AI分配流量,慢的是根据你的产品
经过多年的操盘经验加持,本人对淘宝的流量分配机制已经有了一定的了解,本次就来跟大家聊聊淘宝流量分配以及该如何操作!1、产品自然搜索流量的大小是怎么产生的?淘宝一
然而这次改版究竟能带来什么变化?改变线上同质化竞争格局流量重塑某服饰品牌商解析道:“手淘的改版将改变平台的流量分配机制,不再是遵循单一的线上分配流量