[問題] Pytorch記憶體問題

看板DataScience作者 (小笨)時間3年前 (2021/03/20 11:33), 編輯推噓3(3024)
留言27則, 5人參與, 3年前最新討論串1/1
想要請問版上各位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://www.ptt.cc/bbs/DataScience/M.1616211193.A.78E.html

03/21 01:38, 3年前 , 1F
看你model中間最大的feature map?
03/21 01:38, 1F

03/21 17:51, 3年前 , 2F
CNN需要intermidiate result才能做backpropagation
03/21 17:51, 2F

03/21 17:54, 3年前 , 3F
喔喔抱歉沒仔細看問題...的確如樓上說要注意中間最大
03/21 17:54, 3F

03/21 17:54, 3年前 , 4F
的feature map
03/21 17:54, 4F

03/22 08:41, 3年前 , 5F
你圖也太大了吧...
03/22 08:41, 5F

03/22 22:23, 3年前 , 6F
感謝各位回覆,確實可以研究這件事
03/22 22:23, 6F

03/22 22:23, 3年前 , 7F
yoyo大,我這個是原始圖片,進去前會resize成800 * 800
03/22 22:23, 7F

03/22 23:17, 3年前 , 8F
想請問一下,我自己測試後發現我一開始讀取alexnet會吃
03/22 23:17, 8F

03/22 23:18, 3年前 , 9F
約1.4GB的記憶體,我模擬5 x 3 x 224 x 224的資料約佔
03/22 23:18, 9F

03/22 23:18, 3年前 , 10F
不到1MB的記憶體,我開啟no_grad之後跑model(inputs)
03/22 23:18, 10F

03/22 23:19, 3年前 , 11F
記憶體仍會從1414上升到1540,也就是上升了126MB的記憶
03/22 23:19, 11F

03/22 23:20, 3年前 , 12F
體用量,根據我的理解記憶體的使用量理論上應該是weight
03/22 23:20, 12F

03/22 23:20, 3年前 , 13F
加上gradients加上中間計算的hidden embedding size
03/22 23:20, 13F

03/22 23:20, 3年前 , 14F
前面weight已經計算過了,gradients我也先關掉了
03/22 23:20, 14F

03/22 23:21, 3年前 , 15F
難道剩下的記憶體就是中間計算層所占用的?
03/22 23:21, 15F

03/22 23:21, 3年前 , 16F
根據實驗,這個記憶體的佔用會隨著batch size上升而上升
03/22 23:21, 16F

03/22 23:21, 3年前 , 17F
請問有人知道這個記憶體的使用是來自哪裡呢?
03/22 23:21, 17F

03/23 11:07, 3年前 , 18F
就真的是feature map 不然你中間結果是存在哪裡...當然
03/23 11:07, 18F

03/23 11:07, 3年前 , 19F
也跟batch size成正比
03/23 11:07, 19F

03/23 11:10, 3年前 , 20F
如果你圖剛讀進來是用int8存 5*3*224*224/1024/1024=
03/23 11:10, 20F

03/23 11:13, 3年前 , 21F
0.717 的確不到1MB 然後你運算的時候用float32 就直接4
03/23 11:13, 21F

03/23 11:13, 3年前 , 22F
倍起跳 再來你圖變大 batch size變大 feature map變大
03/23 11:13, 22F

03/23 11:13, 3年前 , 23F
記憶體用量當然也變大
03/23 11:13, 23F

03/27 01:00, 3年前 , 24F
正常feature map不會比圖本身大阿
03/27 01:00, 24F

03/27 01:00, 3年前 , 25F
當然還是要看你model啦
03/27 01:00, 25F

03/27 08:48, 3年前 , 26F
feature map幾乎都比圖大才對吧 第一層直接三個chan
03/27 08:48, 26F

03/27 08:48, 3年前 , 27F
nel變64個channel之類
03/27 08:48, 27F
文章代碼(AID): #1WLMpvUE (DataScience)
文章代碼(AID): #1WLMpvUE (DataScience)