Pytorch運(yùn)行過(guò)程中解決出現(xiàn)內(nèi)存不足的問(wèn)題
1. 前提
利用Transformer模型進(jìn)行O3濃度的反演
2. 問(wèn)題
2.1 速度慢
一開(kāi)始模型是在CPU上面跑的,為了加快速度,我改成了在GPU上跑
方法如下:
1、驗(yàn)證pytorch是否存在GPU版本
在Pycharm命令行輸入
import torch print(torch.cuda.is_available) # 若輸出為T(mén)rue,則存在GPU版本 # 若輸出為False,則不存在GPU版本
我的輸出為T(mén)rue,說(shuō)明pytorch是存在GPU版本的
2、將模型從CPU版本轉(zhuǎn)換到GPU版本
- 聲明使用GPU(指定具體的卡)
PS:torch.device()
是裝torch.Tensor
的一個(gè)空間。
device=torch.device('cuda' if torch.cuda.is_available() else 'cpu') # 'cuda' 這里如果沒(méi)有指定具體的卡號(hào),系統(tǒng)默認(rèn)cuda:0 device = torch.device('cuda:2') # 使用2號(hào)卡
- 將模型(model)加載到GPU上
model = Transformer() #例子中,采用Transformer模型 model.to(device)
- 將數(shù)據(jù)和標(biāo)簽放到GPU上【注意!什么數(shù)據(jù)可以被放入GPU-Tensor類型的數(shù)據(jù)】
# 只有Tensor類型的數(shù)據(jù)可以放入GPU中 # 可以一個(gè)個(gè)【batch_size】進(jìn)行轉(zhuǎn)換 inputs = inputs.to(device) labels = labels.to(device)
如果結(jié)果還是顯示你是在CPU上進(jìn)行訓(xùn)練,要不就是模型沒(méi)有加進(jìn)去,要不就是數(shù)據(jù)沒(méi)有加進(jìn)去
2.2 內(nèi)存不足
- 在使用CPU時(shí),出現(xiàn)了內(nèi)存不足的情況
RuntimeError: [enforce fail at C:\cb\pytorch_1000000000000\work\c10\core\impl\alloc_cpu.cpp:72] data. DefaultCPUAllocator: not enough memory: you tried to allocate 280410627200 bytes.
- 在使用GPU時(shí),出現(xiàn)了內(nèi)存不足的情況
torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 261.15 GiB (GPU 0; 8.00 GiB total capacity; 487.30 MiB already allocated; 5.71 GiB free; 506.00 MiB reserved in total by PyTorch) If reserved memory is >> allocated memory try sett
我的模型在訓(xùn)練的時(shí)候沒(méi)有問(wèn)題,在進(jìn)行預(yù)測(cè)的時(shí)候,總是出現(xiàn)內(nèi)存不足(1)一開(kāi)始我以為是batch_size
大小的問(wèn)題,在從128更改到4后,發(fā)現(xiàn)依舊存在問(wèn)題,這說(shuō)明不是batch_size
大小的問(wèn)題。
(2)然后,我猜測(cè)是反演過(guò)程的問(wèn)題
我在進(jìn)行模型反演的過(guò)程中,直接將全部數(shù)據(jù)輸入到模型model
中(大概有10萬(wàn)行),為了驗(yàn)證這個(gè)問(wèn)題,我添加了一個(gè)for循環(huán),一個(gè)一個(gè)數(shù)據(jù)的反演
問(wèn)題解決!
學(xué)習(xí)鏈接:
- pytorch 中判斷和指定模型和數(shù)據(jù)在GPU或CPU上–有用
- Pytorch | GPU | 將代碼加載到GPU上運(yùn)行
- pytorch中cuda out of memory問(wèn)題
到此這篇關(guān)于Pytorch運(yùn)行過(guò)程中解決出現(xiàn)內(nèi)存不足的問(wèn)題的文章就介紹到這了,更多相關(guān)Pytorch 內(nèi)存不足內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Keras預(yù)訓(xùn)練模型ResNet50進(jìn)行圖像分類方式
這篇文章主要介紹了使用Keras預(yù)訓(xùn)練模型ResNet50進(jìn)行圖像分類方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05一篇文章學(xué)會(huì)兩種將python打包成exe的方式
最近有部分小伙伴問(wèn)我,python 寫(xiě)的項(xiàng)目可不可以打包成exe程序,放到?jīng)]有python環(huán)境上的電腦中執(zhí)行? 答案當(dāng)然是可以的,下面這篇文章主要給大家介紹了如何通過(guò)一篇文章學(xué)會(huì)兩種將pyton打包成exe的方式,需要的朋友可以參考下2021-11-11各個(gè)系統(tǒng)下的Python解釋器相關(guān)安裝方法
這篇文章主要介紹了各個(gè)系統(tǒng)下的Python解釋器相關(guān)安裝方法,Python在很多Linux發(fā)行版中已經(jīng)被默認(rèn)安裝,需要的朋友可以參考下2015-10-10純用NumPy實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)的示例代碼
這篇文章主要介紹了純用NumPy實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-10-10tensorflow識(shí)別自己手寫(xiě)數(shù)字
這篇文章主要為大家詳細(xì)介紹了tensorflow識(shí)別自己手寫(xiě)數(shù)字,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03Python第三方庫(kù)face_recognition在windows上的安裝過(guò)程
今天為大家介紹下face recognition在Windows系統(tǒng)上安裝與使用,但在Windows平臺(tái)上face recognition性能會(huì)有所下降2019-05-05Python基于matplotlib實(shí)現(xiàn)繪制三維圖形功能示例
這篇文章主要介紹了Python基于matplotlib實(shí)現(xiàn)繪制三維圖形功能,涉及Python使用matplotlib模塊進(jìn)行三維圖形繪制相關(guān)操作技巧,需要的朋友可以參考下2018-01-01