作者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/m.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