91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

解決pytorch GPU 計算過程中出現內存耗盡的問題

發布時間:2020-10-18 15:47:00 來源:腳本之家 閱讀:523 作者:bob_chen_csdn 欄目:開發技術

Pytorch GPU運算過程中會出現:“cuda runtime error(2): out of memory”這樣的錯誤。通常,這種錯誤是由于在循環中使用全局變量當做累加器,且累加梯度信息的緣故,用官方的說法就是:"accumulate history across your training loop"。在默認情況下,開啟梯度計算的Tensor變量是會在GPU保持他的歷史數據的,所以在編程或者調試過程中應該盡力避免在循環中累加梯度信息。

下面舉個栗子:

上代碼:

total_loss=0
for i in range(10000):
  optimizer.zero_grad()
  output=model(input)
  loss=criterion(output)
  loss.backward()
  optimizer.step()
  total_loss+=loss
  #這里total_loss是跨越循環的變量,起著累加的作用,
  #loss變量是帶有梯度的tensor,會保持歷史梯度信息,在循環過程中會不斷積累梯度信息到tota_loss,占用內存

以上例子的修正方法是在循環中的最后一句修改為:total_loss+=float(loss),利用類型變換解除梯度信息,這樣,多次累加不會累加梯度信息。

局部變量逗留導致內存泄露

局部變量通常在變量作用域之外會被Python自動銷毀,在作用域之內,不需要的臨時變量可以使用del x來銷毀。

在設計Linear Layers 的時候,盡量讓其規模小點

對于nn.Linear(m,n)這樣規模的線性函數,他的空間規模為O(mn),除此規模的空間來容納參數意外,還需要同樣規模的空間來存儲梯度,由此很容易造成GPU空間溢出。

相關的進程管理bash cmd

nvidia-smi監控GPU,

watch -n 1 nvidia-smi實時監控GPU,

watch -n 1 lscpu實時監控CPU,

ps -elf進程查看,

ps -elf | grep python查看Python子進程,

kill -9 [PID]殺死進程PID。

Referance:

Pytorch documentations

以上這篇解決pytorch GPU 計算過程中出現內存耗盡的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

武邑县| 桦川县| 墨竹工卡县| 绥德县| 辽阳市| 汾西县| 巢湖市| 定兴县| 奎屯市| 天峨县| 大丰市| 枣阳市| 三穗县| 沙河市| 青铜峡市| 舞阳县| 莱西市| 宁晋县| 合肥市| 肥乡县| 射洪县| 青河县| 凤庆县| 昆明市| 莲花县| 佛山市| 都昌县| 辽源市| 二连浩特市| 兰考县| 太湖县| 新巴尔虎左旗| 漳平市| 平定县| 西充县| 无棣县| 远安县| 唐海县| 炉霍县| 卢湾区| 山阴县|