conda安裝GPU版pytorch默認卻是cpu版本
一、問題描述
按照pytorch官網(wǎng)安裝pytorch GPU版本,結(jié)果卻是CPU版本。
我的倔脾氣,嘿!反反復復安裝、卸載個五、六、七、八 遍。才意識到再操作一遍也是一樣的結(jié)果。
二、網(wǎng)上解決方案羅列【此節(jié)為反面方案羅列?。?!】
還是上網(wǎng)搜索:
結(jié)果發(fā)現(xiàn),遇到和我同樣問題的還不少。
我發(fā)現(xiàn)大家的解決辦法不相同,大致如下:
解決方案一:卸載pytorch-mutex
解決方案二:卸載cpuonly
解決方案三:卸載numpy
,哦呵…
如果繼續(xù)往下看,你或許明白上面的方案的確能解決問題。但是,這種神秘性以及某種被約束的感覺真的不是太好。上面這些方案,其實就是瞎貓碰上死耗子?。?! 他們能起作用本身就是一個BUG。
程序員的詭異操作,寫的代碼莫名其妙運行起來了。。
想知道這個問題產(chǎn)生的根本原因以及根本解決方案,那么請繼續(xù)跟著我一起往下看吧…
三、發(fā)現(xiàn)的根本原因[獨家]
3.1 pytorch文件命名格式
首先介紹一個pytorch
的文件名的普通命名格式。
一個在python=3.7
conda 環(huán)境下,cudatoolkit=10.1
版本的pytorch=1.7.0
的文件名為:pytorch-1.7.0-py3.7_cuda10.1.243_cudnn7.6.3_0.tar.bz2
。
一個在python=3.7
conda 環(huán)境下,CPU
版本的pytorch=1.7.0
的文件名為pytorch-1.7.0-py3.7_cpu_0.tar.bz2
。
從上可以看出,不同的python版本,GPU/CPU,若是GPU版本,則cudatoolkit的版本,再加上pytorch的版本,唯一指定一個pytorch安裝文件。
明白這個,我們再繼續(xù)往下。
3.2 問題的根本原因:找不到對應GPU版本的pytorch文件,所以conda就用CPU替代了=v=
先說一下問題產(chǎn)生的根本原因:指定某一版本cudatoolkit
下的指定版本的pytorch
不在源(國內(nèi)conda鏡像源或因外源)中,導致某一版本cudatoolkit
下的指定版本的pytorch
無法被conda install找到,然而不湊巧的是,源中卻有指定版本的pytorch
,不過它是CPU版本。那么,conda install這個小機靈鬼自作主張的替你安裝了這個版本。結(jié)果就是,你覺得明明安裝的是GPU版pytorch,可是像是有種神秘力量讓你最終得到的總是cpu版pytorch。
例子1:
conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch
-c pytorch
是指在官方源里找?guī)?。此時,如果conda官方源里沒有(或者由于網(wǎng)絡問題無法訪問官方源)cudatoolkit=11.3
對應的GPU版pytorch
,而此時conda install又找到一個CPU版的pytorch
,那么結(jié)果是,它給你安裝了這個cpu版的pytorch
。
例子2:
conda create -n pytorch-GPU python=3.7 # 創(chuàng)建一個python3.7的conda環(huán)境 conda activate pytorch-GPU # 進入該conda環(huán)境 conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ # 換conda源 conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ # 換conda源 conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/ # 換conda源 conda install cudatoolkit=10.0 -c http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/linux-64/ # 安裝 cuda conda install cudnn=7.6 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/linux-64/ # 安裝cudnn conda install pytorch==1.7.0 torchvision==0.8 cudatoolkit=10.0 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/linux-64/# 安裝pytorch
我想通過國內(nèi)的鏡像源來安裝cudatoolkit=10.0
版本的pytorch==1.7.0
,結(jié)果我發(fā)現(xiàn)安裝的還是cpu版本。我在https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/linux-64/上發(fā)現(xiàn),原來鏡像源里根本沒這個文件。于是,conda install這個小機靈鬼又自作主張的給我裝了cpu版本的文件pytorch-1.7.0-py3.7_cpu_0.tar.bz2
,它給我裝的文件python版本相同,pytorch版本相同,唯一不同的就是CPU/GPU。
此處需要指出,若采用官方命令conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch,安裝的是pytorch==1.4.0版本,此版本在from torch.cuda.amp import GradScaler, autocast時會報錯from torch.cuda.amp import GradScaler, autocast。網(wǎng)上說是1.4版本太低,換1.7就好了。
3.3 解決方案
我們安裝前先要確定源中是否真的有我們組合出來的版本,[python|cudatoolkit|pytorch]這三個版本不同的組合,真的不一定有。
例如,我發(fā)現(xiàn)根本沒有滿足python=3.7
,cudatoolkit=10.0
以及pytorch=1.7.0
的版本,但是在鏡像源中,我發(fā)現(xiàn)有python=3.7
,cudatoolkit=10.1
以及pytorch=1.7.0
的版本,于是用以下命令安裝:
conda create -n pytorch-GPU python=3.7 # 創(chuàng)建一個python3.7的conda環(huán)境 conda activate pytorch-GPU # 進入該conda環(huán)境 conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ # 換conda源 conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ # 換conda源 conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/ # 換conda源 conda install cudatoolkit=10.1 -c http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/linux-64/ # 安裝 cuda conda install cudnn=7.6 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/linux-64/ # 安裝cudnn conda install pytorch==1.7.0 torchvision==0.8 cudatoolkit=10.1 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/linux-64/# 安裝pytorch
仔細看下圖的倒數(shù)第5行,我們發(fā)現(xiàn),conda install找到對應的gpu版本,此時,它便不好去自作主張了,乖乖地給我安裝gpu版本吧。
到此這篇關于conda安裝GPU版pytorch默認卻是cpu版本的文章就介紹到這了,更多相關安裝pytorch gpu會默認安裝cpu內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python之numpy.random.seed()和numpy.random.RandomState()區(qū)別及說明
這篇文章主要介紹了Python之numpy.random.seed()和numpy.random.RandomState()區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2017-10-10Pythont特殊語法filter,map,reduce,apply使用方法
這篇文章主要介紹了Pythont特殊語法filter,map,reduce,apply使用方法,需要的朋友可以參考下2016-02-02Python可視化工具如何實現(xiàn)動態(tài)圖表
這篇文章主要介紹了Python可視化工具如何實現(xiàn)動態(tài)圖表,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-10-10使用python本地部署DeepSeek運行時報錯?OSError:?[WinError?193]?%1?不是
文章介紹了在本地使用Python部署DeepSeek時遇到的OSError:?[WinError?193]?錯誤,通過檢查錯誤信息,發(fā)現(xiàn)與numpy版本有關,解決方法是卸載并重新安裝numpy,最終,問題得到解決,感興趣的朋友跟隨小編一起看看吧2025-02-02