python运行提示显卡内存不足_Pytorch GPU显存充足却显示out of memory的解决方式
Pytorch GPU顯存充足卻顯示out of memory的解決方式
今天在測試一個(gè)pytorch代碼的時(shí)候顯示顯存不足,但是這個(gè)網(wǎng)絡(luò)框架明明很簡單,用CPU跑起來都沒有問題,GPU卻一直提示out of memory.
在網(wǎng)上找了很多方法都行不通,最后我想也許是pytorch版本的問題,原來我的pytorch版本是0.4.1,于是我就把這個(gè)版本卸載,然后安裝了pytorch1.1.0,程序就可以神奇的運(yùn)行了,不會再有OOM的提示了。雖然具體原因還不知道為何,這里還是先mark一下,具體過程如下:
卸載舊版本pytorch:
conda uninstall pytorch
安裝pytorch1.1.0,按照官網(wǎng)上的辦法,我的CUDA版本是9.0:
conda install pytorch torchvision cudatoolkit=9.0 -c pytorch
大功告成!
以上這篇Pytorch GPU顯存充足卻顯示out of memory的解決方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持我們。
時(shí)間: 2020-01-11
如果在python內(nèi)調(diào)用pytorch有可能顯存和GPU占用不會被自動釋放,此時(shí)需要加入如下代碼 torch.cuda.empty_cache() 我們來看一下官方文檔的說明 Releases all unoccupied cached memory currently held by the caching allocator so that those can be used in other GPU application and visible in nvidia-smi. Note e
Pytorch GPU運(yùn)算過程中會出現(xiàn):"cuda runtime error(2): out of memory"這樣的錯(cuò)誤.通常,這種錯(cuò)誤是由于在循環(huán)中使用全局變量當(dāng)做累加器,且累加梯度信息的緣故,用官方的說法就是:"accumulate history across your training loop".在默認(rèn)情況下,開啟梯度計(jì)算的Tensor變量是會在GPU保持他的歷史數(shù)據(jù)的,所以在編程或者調(diào)試過程中應(yīng)該盡力避免在循環(huán)中累加梯度信息. 下面舉個(gè)栗子: 上代
本文適合多GPU的機(jī)器,并且每個(gè)用戶需要單獨(dú)使用GPU訓(xùn)練. 雖然pytorch提供了指定gpu的幾種方式,但是使用不當(dāng)?shù)脑挄龅給ut of memory的問題,主要是因?yàn)閜ytorch會在第0塊gpu上初始化,并且會占用一定空間的顯存.這種情況下,經(jīng)常會出現(xiàn)指定的gpu明明是空閑的,但是因?yàn)榈?塊gpu被占滿而無法運(yùn)行,一直報(bào)out of memory錯(cuò)誤. 解決方案如下: 指定環(huán)境變量,屏蔽第0塊gpu CUDA_VISIBLE_DEVICES = 1 main.py 這句話表示只有第1塊
Pytorch 訓(xùn)練時(shí)有時(shí)候會因?yàn)榧虞d的東西過多而爆顯存,有些時(shí)候這種情況還可以使用cuda的清理技術(shù)進(jìn)行修整,當(dāng)然如果模型實(shí)在太大,那也沒辦法. 使用torch.cuda.empty_cache()刪除一些不需要的變量代碼示例如下: try: output = model(input) except RuntimeError as exception: if "out of memory" in str(exception): print("WARNING: out of
在使用Pytorch進(jìn)行神經(jīng)網(wǎng)絡(luò)訓(xùn)練時(shí),有時(shí)會遇到訓(xùn)練學(xué)習(xí)率不下降的問題.出現(xiàn)這種問題的可能原因有很多,包括學(xué)習(xí)率過小,數(shù)據(jù)沒有進(jìn)行Normalization等.不過除了這些常規(guī)的原因,還有一種難以發(fā)現(xiàn)的原因:在計(jì)算loss時(shí)數(shù)據(jù)維數(shù)不匹配. 下面是我的代碼: loss_function = torch.nn.MSE_loss() optimizer.zero_grad() output = model(x_train) loss = loss_function(output, y_train)
背景 在公司用多卡訓(xùn)練模型,得到權(quán)值文件后保存,然后回到實(shí)驗(yàn)室,沒有多卡的環(huán)境,用單卡訓(xùn)練,加載模型時(shí)出錯(cuò),因?yàn)閱慰C(jī)器上,沒有使用DataParallel來加載模型,所以會出現(xiàn)加載錯(cuò)誤. 原因 DataParallel包裝的模型在保存時(shí),權(quán)值參數(shù)前面會帶有module字符,然而自己在單卡環(huán)境下,沒有用DataParallel包裝的模型權(quán)值參數(shù)不帶module.本質(zhì)上保存的權(quán)值文件是一個(gè)有序字典. 解決方法 1.在單卡環(huán)境下,用DataParallel包裝模型. 2.自己重寫Load函數(shù),靈活.
如下所示: device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")#第一行代碼 model.to(device)#第二行代碼 首先是上面兩行代碼放在讀取數(shù)據(jù)之前. mytensor = my_tensor.to(device)#第三行代碼 然后是第三行代碼.這句代碼的意思是將所有最開始讀取數(shù)據(jù)時(shí)的tersor變量copy一份到device所指定的GPU上去,之后的運(yùn)算都在GPU上
最近接觸layui,比較簡潔美觀的一款ui,但也有很多小坑,記錄一下實(shí)現(xiàn)省市區(qū)下拉三級聯(lián)動更新回顯的問題 form.on('select(uprovinceId)', function(data){ initCityList('change'); }); 這里面有個(gè)問題就是 選擇的時(shí)候 如果 請選擇 的value 是"" 空字符串,當(dāng)選擇從河北省變到請選擇時(shí)不會觸發(fā)這個(gè)監(jiān)聽事件
總結(jié)
以上是生活随笔為你收集整理的python运行提示显卡内存不足_Pytorch GPU显存充足却显示out of memory的解决方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于Linux+GPU服务器下GPU显存
- 下一篇: 在显存不足时,增加batch size的