作者clansoda (小笨)
看板DataScience
标题[问题] Pytorch记忆体问题
时间Sat Mar 20 11:33:09 2021
想要请问版上各位pytorch的使用者会不会有记忆体管理的问题呢
我目前遇到的状况是存下来的pth file约800MB 包含了optimizer之类的
所有关於training的参数与超参数,但是load进去环境里面之後立刻就占了2.4GB
我相信是会有一些overhead没错,但是三倍这个数字好像超乎我的理解之外了
接着是一张4000 * 6000的图片就会占100MB左右的记忆体,当我call
model(img)之後,记忆体的使用量会瞬间暴增5GB,我有点不太懂这里面到底
发生甚麽事,又应该要做甚麽来解决呢
我目前已经是有call .eval()也有在with torch.no_grad()里面作业了
但是还是只能一次inference一张图片,结果gpu的效果大打折扣
有没有人遇到类似的情况或者知道该怎麽解决这个问题呢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 124.218.7.190 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/DataScience/M.1616211193.A.78E.html
1F:推 yiefaung: 看你model中间最大的feature map? 03/21 01:38
2F:推 jameschiou: CNN需要intermidiate result才能做backpropagation 03/21 17:51
3F:→ jameschiou: 喔喔抱歉没仔细看问题...的确如楼上说要注意中间最大 03/21 17:54
4F:→ jameschiou: 的feature map 03/21 17:54
5F:推 yoyololicon: 你图也太大了吧... 03/22 08:41
6F:→ clansoda: 感谢各位回覆,确实可以研究这件事 03/22 22:23
7F:→ clansoda: yoyo大,我这个是原始图片,进去前会resize成800 * 800 03/22 22:23
8F:→ clansoda: 想请问一下,我自己测试後发现我一开始读取alexnet会吃 03/22 23:17
9F:→ clansoda: 约1.4GB的记忆体,我模拟5 x 3 x 224 x 224的资料约占 03/22 23:18
10F:→ clansoda: 不到1MB的记忆体,我开启no_grad之後跑model(inputs) 03/22 23:18
11F:→ clansoda: 记忆体仍会从1414上升到1540,也就是上升了126MB的记忆 03/22 23:19
12F:→ clansoda: 体用量,根据我的理解记忆体的使用量理论上应该是weight 03/22 23:20
13F:→ clansoda: 加上gradients加上中间计算的hidden embedding size 03/22 23:20
14F:→ clansoda: 前面weight已经计算过了,gradients我也先关掉了 03/22 23:20
15F:→ clansoda: 难道剩下的记忆体就是中间计算层所占用的? 03/22 23:21
16F:→ clansoda: 根据实验,这个记忆体的占用会随着batch size上升而上升 03/22 23:21
17F:→ clansoda: 请问有人知道这个记忆体的使用是来自哪里呢? 03/22 23:21
18F:→ yiefaung: 就真的是feature map 不然你中间结果是存在哪里...当然 03/23 11:07
19F:→ yiefaung: 也跟batch size成正比 03/23 11:07
20F:→ yiefaung: 如果你图刚读进来是用int8存 5*3*224*224/1024/1024= 03/23 11:10
21F:→ yiefaung: 0.717 的确不到1MB 然後你运算的时候用float32 就直接4 03/23 11:13
22F:→ yiefaung: 倍起跳 再来你图变大 batch size变大 feature map变大 03/23 11:13
23F:→ yiefaung: 记忆体用量当然也变大 03/23 11:13
24F:→ watashino: 正常feature map不会比图本身大阿 03/27 01:00
25F:→ watashino: 当然还是要看你model啦 03/27 01:00
26F:→ yoyololicon: feature map几乎都比图大才对吧 第一层直接三个chan 03/27 08:48
27F:→ yoyololicon: nel变64个channel之类 03/27 08:48