校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 解決Pytorch內存溢出,Ubuntu進程killed的問題

解決Pytorch內存溢出,Ubuntu進程killed的問題

熱門標簽:天津電話機器人公司 地圖標注線上如何操作 電銷機器人的風險 400電話辦理哪種 手機網頁嵌入地圖標注位置 河北防封卡電銷卡 開封自動外呼系統怎么收費 開封語音外呼系統代理商 應電話機器人打電話違法嗎

pytorch顯存越來越多的一個原因

optimizer.zero_grad()
loss.backward()
optimizer.step()
train_loss += loss

參考了別人的代碼發現那句loss一般是這樣寫

loss_sum += loss.data[0]

這是因為輸出的loss的數據類型是Variable。而PyTorch的動態圖機制就是通過Variable來構建圖。主要是使用Variable計算的時候,會記錄下新產生的Variable的運算符號,在反向傳播求導的時候進行使用。如果這里直接將loss加起來,系統會認為這里也是計算圖的一部分,也就是說網絡會一直延伸變大那么消耗的顯存也就越來越大。

用Tensor計算要寫成:

train_loss += loss.item()

correct_total += torch.eq(predict, label_batch).sum().item()
train_loss += loss.item()

當需要將模型中變量提取出來參與計算時,需要使用** .item()**

補充:linux下運行pytorch程序顯示“killed”或者“已殺死”

這是由pytorch對于內存不足的反應,確切說,是Linux內核對pytorch程序占用太多內存的反應。Linux內核一旦因為內存資源不足而生氣的時候,會使用OOM killer將占用內存最多的進程殺掉。

這種情況下,pytorch的python程序根本就來不及顯示相關的內存日志,直接在呼喊出killed這一個簡短有力的詞語后,就game over了。如果不提前掌握這個背景的話,你可真是會手足無措啊。

既然我們確定了是內存不足導致的問題(dmesg也能明確的顯示出kernel把占了近10個GB的python進程給kill了),

那我們的解決方案就有2個:

第一個是加大內存,將我的x99平臺的內存從16GB增加到64GB;這個方案先放棄了,因為內存條漲價太猛,我買不起了;

第二個是增加swap分區,當然性能會降低,但不需要額外增加成本。所以Gemfield今天的選擇就是第二個方案。

1、先禁止掉swap功能

sudo swapoff /swapfile

這個命令執行之后,如果你用free命令查看的話會發現swap分區的大小變為了0。

2、增加 /swapfile的大小

sudo dd if=/dev/zero of=/swapfile bs=1M count=30720 oflag=append conv=notrunc

這個命令會在現有的/swapfile后面追加30GB,加上之前的2GB的swap分區,現在共有32個GB的swap分區了。如果按照固態硬盤128GB有300多塊錢來算的話,這個命令花了七八十塊錢呢。

3、設置這個文件為swap分區的掛載點:

sudo mkswap /swapfile

4、再次啟用swap

sudo swapon /swapfile

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • linux或windows環境下pytorch的安裝與檢查驗證(解決runtimeerror問題)
  • 解決pytorch GPU 計算過程中出現內存耗盡的問題
  • 解決pytorch 保存模型遇到的問題

標簽:江蘇 山東 駐馬店 蘭州 宿遷 常州 成都 六盤水

巨人網絡通訊聲明:本文標題《解決Pytorch內存溢出,Ubuntu進程killed的問題》,本文關鍵詞  解決,Pytorch,內存,溢出,Ubuntu,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《解決Pytorch內存溢出,Ubuntu進程killed的問題》相關的同類信息!
  • 本頁收集關于解決Pytorch內存溢出,Ubuntu進程killed的問題的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 荥经县| 泸西县| 芦溪县| 蕲春县| 宿松县| 德昌县| 辉县市| 马龙县| 福建省| 安仁县| 高碑店市| 江都市| 彭水| 芒康县| 克东县| 郁南县| 大埔县| 凤山县| 三明市| 漠河县| 周宁县| 长葛市| 堆龙德庆县| 利川市| 林西县| 曲周县| 宜宾县| 封丘县| 芮城县| 开封市| 惠州市| 黑龙江省| 武鸣县| 怀化市| 堆龙德庆县| 涟水县| 通城县| 平邑县| 昌黎县| 泰顺县| 马关县|