conda安裝GPU版pytorch默認(rèn)卻是cpu版本
一、問(wèn)題描述
按照pytorch官網(wǎng)安裝pytorch GPU版本,結(jié)果卻是CPU版本。

我的倔脾氣,嘿!反反復(fù)復(fù)安裝、卸載個(gè)五、六、七、八 遍。才意識(shí)到再操作一遍也是一樣的結(jié)果。
二、網(wǎng)上解決方案羅列【此節(jié)為反面方案羅列?。?!】
還是上網(wǎng)搜索:

結(jié)果發(fā)現(xiàn),遇到和我同樣問(wèn)題的還不少。
我發(fā)現(xiàn)大家的解決辦法不相同,大致如下:
解決方案一:卸載pytorch-mutex

解決方案二:卸載cpuonly

解決方案三:卸載numpy,哦呵…

如果繼續(xù)往下看,你或許明白上面的方案的確能解決問(wèn)題。但是,這種神秘性以及某種被約束的感覺(jué)真的不是太好。上面這些方案,其實(shí)就是瞎貓碰上死耗子?。。?/strong> 他們能起作用本身就是一個(gè)BUG。
程序員的詭異操作,寫(xiě)的代碼莫名其妙運(yùn)行起來(lái)了。。
想知道這個(gè)問(wèn)題產(chǎn)生的根本原因以及根本解決方案,那么請(qǐng)繼續(xù)跟著我一起往下看吧…
三、發(fā)現(xiàn)的根本原因[獨(dú)家]
3.1 pytorch文件命名格式
首先介紹一個(gè)pytorch的文件名的普通命名格式。
一個(gè)在python=3.7conda 環(huán)境下,cudatoolkit=10.1版本的pytorch=1.7.0的文件名為:pytorch-1.7.0-py3.7_cuda10.1.243_cudnn7.6.3_0.tar.bz2。
一個(gè)在python=3.7conda 環(huán)境下,CPU版本的pytorch=1.7.0的文件名為pytorch-1.7.0-py3.7_cpu_0.tar.bz2。
從上可以看出,不同的python版本,GPU/CPU,若是GPU版本,則cudatoolkit的版本,再加上pytorch的版本,唯一指定一個(gè)pytorch安裝文件。
明白這個(gè),我們?cè)倮^續(xù)往下。
3.2 問(wèn)題的根本原因:找不到對(duì)應(yīng)GPU版本的pytorch文件,所以conda就用CPU替代了=v=
先說(shuō)一下問(wèn)題產(chǎn)生的根本原因:指定某一版本cudatoolkit下的指定版本的pytorch不在源(國(guó)內(nèi)conda鏡像源或因外源)中,導(dǎo)致某一版本cudatoolkit下的指定版本的pytorch無(wú)法被conda install找到,然而不湊巧的是,源中卻有指定版本的pytorch,不過(guò)它是CPU版本。那么,conda install這個(gè)小機(jī)靈鬼自作主張的替你安裝了這個(gè)版本。結(jié)果就是,你覺(jué)得明明安裝的是GPU版pytorch,可是像是有種神秘力量讓你最終得到的總是cpu版pytorch。
例子1:
conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch
-c pytorch是指在官方源里找?guī)?。此時(shí),如果conda官方源里沒(méi)有(或者由于網(wǎng)絡(luò)問(wèn)題無(wú)法訪(fǎng)問(wèn)官方源)cudatoolkit=11.3對(duì)應(yīng)的GPU版pytorch,而此時(shí)conda install又找到一個(gè)CPU版的pytorch,那么結(jié)果是,它給你安裝了這個(gè)cpu版的pytorch。
例子2:
conda create -n pytorch-GPU python=3.7 # 創(chuàng)建一個(gè)python3.7的conda環(huán)境 conda activate pytorch-GPU # 進(jìn)入該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
我想通過(guò)國(guó)內(nèi)的鏡像源來(lá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),原來(lái)鏡像源里根本沒(méi)這個(gè)文件。于是,conda install這個(gè)小機(jī)靈鬼又自作主張的給我裝了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時(shí)會(huì)報(bào)錯(cuò)from torch.cuda.amp import GradScaler, autocast。網(wǎng)上說(shuō)是1.4版本太低,換1.7就好了。
3.3 解決方案
我們安裝前先要確定源中是否真的有我們組合出來(lái)的版本,[python|cudatoolkit|pytorch]這三個(gè)版本不同的組合,真的不一定有。
例如,我發(fā)現(xiàn)根本沒(méi)有滿(mǎ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)建一個(gè)python3.7的conda環(huán)境 conda activate pytorch-GPU # 進(jìn)入該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
仔細(xì)看下圖的倒數(shù)第5行,我們發(fā)現(xiàn),conda install找到對(duì)應(yīng)的gpu版本,此時(shí),它便不好去自作主張了,乖乖地給我安裝gpu版本吧。

到此這篇關(guān)于conda安裝GPU版pytorch默認(rèn)卻是cpu版本的文章就介紹到這了,更多相關(guān)安裝pytorch gpu會(huì)默認(rèn)安裝cpu內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Django實(shí)現(xiàn)自定義路由轉(zhuǎn)換器
有時(shí)候上面的內(nèi)置的url轉(zhuǎn)換器并不能滿(mǎn)足我們的需求,因此django給我們提供了一個(gè)接口可以讓我們自己定義自己的url轉(zhuǎn)換器,那么如何實(shí)現(xiàn),本文就來(lái)介紹一下2021-05-05
在PyCharm搭建OpenCV-python的環(huán)境的詳細(xì)過(guò)程
這篇文章主要介紹了在PyCharm搭建OpenCV-python的環(huán)境的詳細(xì)過(guò)程,本文通過(guò)圖文并茂的形式給大家介紹搭建步驟,對(duì)PyCharm搭建OpenCV-python環(huán)境相關(guān)知識(shí)感興趣的朋友一起看看吧2022-05-05
python中的set實(shí)現(xiàn)不重復(fù)的排序原理
這篇文章主要介紹了python中的set實(shí)現(xiàn)不重復(fù)的排序原理,需要的朋友可以參考下2018-01-01
Django urls.py重構(gòu)及參數(shù)傳遞詳解
這篇文章主要介紹了Django urls.py重構(gòu)及參數(shù)傳遞詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07
python?Helium自動(dòng)化庫(kù)的功能特性探索
這篇文章主要為大家介紹了python?Helium自動(dòng)化庫(kù)的功能特性探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-02-02

