計算機視覺2-> 深度學習1 | Anaconda+Cuda+PyTorch環境配置


 

00 想說的

深度學習的環境我配置了兩個階段,暑假的時候在一個主攻視覺的實驗室干活,閑暇時候就順手想給自己的Ubuntu1804配置一個深度學習的環境。這會兒配到了anaconda+pytorch+cuda,但是記憶里是顯卡始終配不好。

1 torch.cuda.is_available()
2 >> False
3 # 表示顯卡不配套

當時我以為就崩了。

確實是崩了,應該是navigator出現了一些問題。

事實上根據后續的回憶,是當時的自己對這些東西沒有一個清楚的認識,pytorch裝好就開始配顯卡,然后anaconda跟pytorch不匹配;顯卡本身雖然麻煩但是也不至於崩。

后來

另一個階段就是2021年年末,在西安疫情封校的這段時間,沒課沒考試,所以繼續配置deep learning的環境。這一階段主要是搞顯卡的事情。於12月30號配好。

這篇記錄寫出來不會那么容易

  1. 因為暑假的時候沒有具體寫自己的記錄,只記錄了follow的教程;

  2. 而年末配好的時候,因為長出一口氣也沒有來做記錄這件事情。

  3. 過程中反復做的事情很多,中間甚至刪了一些東西。我在寫到這里時不敢說自己就能完成這篇總結。

    我盡量回憶出一個邏輯清晰的鏈條。

但還是要做這件事情的,

  1. 是加深一下對相關概念的理解,

  2. 是給自己后續重裝系統或者換電腦提供一個親身體驗的參考。

  3. 會帶有一些記錄性質,同時保持教程的可用性。

01 思路概覽

01-1 關系

pytorch是深度學習的框架,在python中以一個包的形式進入編程。

anaconda是python的發行版;

cuda是N卡的一種計算架構,不同的N卡版本對應不同的CUDA版本。

01-2 難點

N卡、Cuda、anaconda、pytorch各個環節的版本適配問題。

01-3 思路

現在想想,其實兩個階段做了很多無用功,主要思路應該是:

  1. python

    (對於深度學習步驟來說非必須的步驟,因為第二步包含了第一步)

    雖然Ubuntu上會自帶python,但是18.04上是2.7和3.5(默認使用2.7),有時候會不符合自己的要求。

    1 # 查看自帶版本
    2 python2 --version
    3 python3 --version

    若符合,此步略過;

    若不符合,動手

    1. 將python版本指向3版本

    2. 安裝更高級的python(如3.9)

    若后續發現python不合適,仍跳回這一步。

    ps:anaconda是python的一個發行版本,有管理工具conda,所以安裝anaconda不需要額外安裝python;這里主要是說python版本的事情。

  2. Anaconda

    這步比較常規,按照教程做就可以,留意的點是注意anaconda3的包很大,注意給自己的系統預留12G以上的空間。

    1 #查看anaconda版本
    2 conda -v
  3. 顯卡

    深度學習在CPU上也可以跑,但是在GPU上跑得更快。所以調用英偉達的顯卡也是必要的。

  4. cuda

    2022-0114補充:

    cuda和顯卡是要互相配套的,互相決定對方的版本。

    我們可以先到pytorch上看一下我們想下什么版本的pytorch。比如:

    所以這里我們決定安裝cuda10.2,並據此決定顯卡驅動的版本。

  5. pytorch

    在pytorch官網直接下載,即可大功告成。

下面是我的配置經驗。

0113 再記錄:

由於學習真空期確實比較閑,在windows10下又配置了一遍,感覺windows比ubuntu好配置一點,也有可能是已經有了一些環境基礎(pycharm+各種包),加之已經過了一遍整個過程,所以比較快。

02 Anaconda

python跳過,我們來談Anaconda,我主要的參考:

  1. https://blog.csdn.net/qq_15192373/article/details/81091098

  2. https://blog.csdn.net/guolindonggld/article/details/82595473

02-1 簡單了解

Anaconda是Python的一個開源發行版本,主要面向科學計算。我們可以簡單理解為,Anaconda是一個預裝了很多我們用的到或用不到的第三方庫的Python。

而且相比於已經熟悉的pip install命令,Anaconda中增加了conda install命令,而后者在該平台下更為方便。

另外還有一個優點是它可以指定任意版本的Python(實際上Pycharm上也可以,只不過是智能切換PythonProject下的python版本,就在頁面左下角)

02-2 安裝

02-2-1 .sh文件

我們使用wget下載Anaconda的sh文件,

有關wget命令:

wget是一個下載文件的工具,它用在命令行下。對於Linux用戶是必不可少的工具,我們經常要下載一些軟件或從遠程服務器恢復備份到本地服務器。

1 wget https://repo.anaconda.com/archive/Anaconda3-5.3.1-Linux-x86_64.sh # 官網 如果網絡一般,下載較慢
2 # 這里我使用的是第一種官網下載,網絡良好,下的還比較快
3 wget https://mirrors.ustc.edu.cn/anaconda/archive/Anaconda3-5.3.1-Linux-x86_64.sh # 中科大   在中科大源下載

同理其實也可以在其他源下載sh文件,這個並不關鍵。

mark一下清華源:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/

后面在裝pytorch的時候,我還會提到這個換源下載的好處:快。

02-2-2 環境變量

打開終端:

1 echo 'export PATH="~/anaconda3/bin:$PATH"' >> ~/.bashrc
2 # 將anaconda的bin寫入環境變量

02-2-3 sh文件安裝

在放置anaconda的目錄下,比如你放在下面這個主目錄下:

就在這里打開終端,運行sh文件

1 bash Anaconda3-5.3.1-Linux-x86_64.sh
2 #  一路yes enter即可,不過每一步注意看信息的反饋。
3 4 #如果不想輸入yes enter之類的,嘗試以下命令:
5 bash Anaconda3-5.2.0-Linux-x86_64.sh -b -u

看到下列信息即為安裝完成:

在最后的問題“Do you wish to proceed with the installation of Microsoft VSCode? [yes|no]”,輸入no;

這表示不要重復安裝VSCode(默認讀者不需要或者已安裝)

02-2-4 刷新

關閉終端,重啟一個終端

 source ./bashrc 

測試python

 python

如果仍然顯示ubuntu自帶的python版本,我們執行:

1 sudo gedit ~/.bashrc
2 export PATH="/home/xupp/anaconda3/bin:$PATH"
3 source ~/.bashrc

02-3 使用

02-3-1 conda命令

Anaconda有很多使用技巧,基礎的、進階的都有;但是我沒怎么探索,畢竟這個用用就上手了。

 1 conda create -n python369 python=3.6.9
 2 # 創建一個Python 3.6.9版本的環境
 3 conda create -n example --clone base 
 4 # 直接Copy跟Base一樣的環境
 5 conda env remove -n python369
 6 # 刪除指定環境
 7 conda activate python369
 8 # 激活指定環境
 9 conda remove -n python369 pandas 
10 # 刪除指定環境的指定包

02-3-2 常用庫的安裝

另外附上anaconda的安裝包的問題:

對於python的正常使用,我們需要numpy、matplotlib、pandas等庫,所以我們需要安裝一下這些庫:

 1 #於2022-0109記錄
 2 conda install numpy
 3 # 含有numpy的語句可以使用了
 4 conda install pandas,
 5  6 # 這之后pandas和matplotlib以及sys就都能用了
 7 # 我疑心直接install pandas,numpy也可以使用了
 8  9 import d2lzh_pytorch as d2l
10 # 這個語句也可以用了。

02-4 關於適配問題

希望大家不要遇到我這樣的問題。但我還是要記錄一下:

我現在的Ubuntu18.04下是沒有anaconda-navigator的,我在終端輸入

1 anaconda-navigator

是沒有反應的,這才發覺我在暑假遇到的問題是什么,那就是python等各個版本與這個模塊的不兼容,當時我從那考各個教程都沒有什么結果,於是一狠心就把這個包給刪掉了,jupyter notebook還能正常使用。

至於怎么一個不兼容,大家可以看一下我重新執行

1 conda update anaconda-navigator

語句產生的結果:

可以看到python版本有一個降級,這點我也不甚明了,但是后面的東西我都配好了,所以我先就維持原狀了,不配置navigator了。

PS:

大家如果出現了這個問題,可以在這一步就調整一下自己的python版本,anaconda的每一個虛擬分支都是可以指定python版本的。然后再進行后面的安裝。保證各個環節的匹配,從而避免我的問題。

如果哪天重裝,或者升級系統,自己或許會再操作一下這個部分。

02-5 測試

在終端輸入

1 jupyter notebook

就會彈出jupyter notebook的窗口,進行編程。

具體使用可以參見:

https://www.zhihu.com/question/46309360/answer/254638807

進階用法:

https://www.zhihu.com/question/46309360/answer/742984819

這個文章寫的已經很詳細了。用法也沒必要特意總結。

(或者哪天有了自己的東西,我也要寫[doge])

03 CUDA

如果着急安裝可以直接跳轉到03-2

03-1 CUDA是什么?

CUDA(Compute Unified Device Architecture),是一種由NVIDIA推出的通用並行計算架構(注意並不是N卡驅動本身),該架構使GPU能夠解決復雜的計算問題。

簡單來講cuda是n卡的加速器。

包含:

  1. CUDA指令集架構(ISA

  2. GPU內部的並行計算引擎

我們可以使用C語言來為CUDA架構編寫程序,所編寫出的程序可以在支持CUDA的處理器上以超高性能運行。從CUDA3.0開始已經支持C++和FORTRAN。

利用CUDA,我們可以進行多線程編程。這也是今天計算機組成與系統結構老師提到的提高程序性能的一種方法。

03-2 安裝

03-2-1 准備1 | 支持CUDA

不是每一個電腦都能安裝CUDA的,我們首先需要查看一下自己的電腦是否支持CUDA加速。

可以通過命令行:

1 lspci | grep -i nvidia
2 # 查看電腦顯卡信息
3 ubuntu-drivers devices
4 # 查找對應的驅動程序
5 nvidia-smi
6 # 如果知道是N卡,可以直接這個命令,顯示具體顯卡型號
7 # 但不同電腦情況不同,比如你的電腦現在還不是N卡驅動,這個命令就不會生效

03-2-2 准備2 | gcc

cuda依賴c語言,所以檢查自己的系統是否已經有gcc。

 gcc -v
 # 若沒有
 sudo apt-get install gcc

03-2-3 N卡驅動安裝/更新

然后就是裝驅動/更新驅動,這里驅動與CUDA是有一個配套情況的,高版本的CUDA是需要高版本的N卡驅動的。

cuda官網查看版本適配情況:https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html#title-resolved-issues

 

  這里我推薦大家使用450以上的驅動版本。

也要根據ubuntu-drivers devices推薦(recommended)的版本進行安裝。

分兩種情況:

  1. 如果你的ubuntu-drivers devices命令中顯示了有450以上的版本:

    那就直接打開軟件與更新,進行更換:

  2. 如果沒有,需要安裝N卡驅動

    1 sudo apt-get install nvidia-driver-450
    2 sudo apt update
    3 4 # 或者
    5 sudo add-apt-repository ppa:graphics-drivers/ppa
    6 sudo apt update
    7 sudo ubuntu-drivers autoinstall
    8 sudo apt update

03-2-4 CUDA安裝

CUDA安裝有兩種方法,我應用的是第一種:

1 sudo apt install nvidia-cuda-toolki
2 # 地址在/usr/include和/usr/lib/cuda/lib64
3 # 自動安裝的是9.1版本,大家可以嘗試一下,如果后續適配方面不好,就在這一步采取第二種做法,手動官網安裝

第二種辦法是在官網或者鏡像源下載。

官網:https://developer.nvidia.com/zh-cn/cuda-toolkit

右上角->下載->CUDA->立即下載:

然后根據頁面指示做即可。CUDA官網的教程相當友好。

例如deb本地下載:

 1 wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
 2  3 sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
 4  5 wget https://developer.download.nvidia.com/compute/cuda/11.6.0/local_installers/cuda-repo-ubuntu1804-11-6-local_11.6.0-510.39.01-1_amd64.deb
 6  7 sudo dpkg -i cuda-repo-ubuntu1804-11-6-local_11.6.0-510.39.01-1_amd64.deb
 8  9 sudo apt-key add /var/cuda-repo-ubuntu1804-11-6-local/7fa2af80.pub
10 11 sudo apt-get update
12 13 sudo apt-get -y install cuda

deb聯網下載:

 1 wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
 2  3 sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
 4  5 sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
 6  7 sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /"
 8  9 sudo apt-get update
10 11 sudo apt-get -y install cuda

03-2-5 調用路徑

打開終端輸入

1 sudo gedit /etc/profile

在文末加入以下三行

1 export CUDA_HOME=/usr/local/cuda-<version>
2 3 export PATH=/usr/local/cuda-<version>/bin${PATH:+:${PATH}}
4 5 exportLD_LIBRARY_PATH=/usr/local/cuda-<version>/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
6 7 # 需要根據自己的版本進行配置
8 source ~/.bashrc

03-3 測試

1 nvcc -v
2 # 查看cuda版本
3 # CUDA Runtime API

1 nvidia-smi
2 # 此時應該都能打開這個命令了
3 #  CUDA Driver API

PS:關於為什么兩個地方的cuda版本不一樣?

在安裝CUDA 時候會安裝3大組件,分別是

  1. cuda 驅動程序

    用來控制 GPU 硬件

  2. toolkit cuda工具包

    包括nvcc編譯器等

  3. samples

    CUDA軟件開發包代碼實例

    包括很多樣例程序包括查詢設備、帶寬測試等等

理論上安裝完驅動以后只需要安裝CUDA toolkit就可以保證CUDA相關的程序運行。這也是03-2-4的命令行的意思。

上面說的 CUDA Driver API是依賴於 NVIDIA 驅動 安裝的;表示驅動所能支持的最大運行API版本。我的情況是11.0。

而CUDA Runtime API 是通過CUDA toolkit 安裝的。這就是我們一般所說的CUDA版本。

但是為什么我們的cuda版本會比下面的pytorch適配的低,還能正常運行呢?

裝了Anaconda之后Anaconda也會提供一個cudatoolkit工具包,同樣包含了CUDA的運行API,可以用來替代官方CUDA的CUDA Toolkit。這也就是為什么有時候我們通過nvcc-V查看的cuda版本很低(比如9.1),但是能成功運行cuda10.2的pytorch的原因。

本部分主要參考:

https://zhuanlan.zhihu.com/p/396344997

https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/

https://blog.csdn.net/ljp1919/article/details/102640512

04 PyTorch

04-1 安裝

進入pytorch官網https://pytorch.org/

從上面可以看到自己的cuda是9.1,

而pytroch官網已經是10+了

我們繼續:

實際上這並不影響,我現在用的是好的,沒有出現不適配的現象。(原因上一部分的末尾我有說明)。

大家可以在上一步就安裝與此步完全適配的cuda。

我們看到下面Run this Command:

1 conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch

但是根據我在windows下配置的經歷,這一步可能會很慢(ubuntu網絡配置的好的話可能沒問題,我當時應該是官網直接下載)。所以建議如下命令:

 conda install pytorch torchvision torchaudio cudatoolkit=10.2 

 

在Windows下這樣運行下載速度極快。

04-2 測試

1 conda list | grep torch
2 # 安裝的pytorch及其版本號

下面測試顯卡、cuda等的適配情況

1 jupyter notebook

輸入:

import torch 
torch.cuda.is_available()

若返回True,則一切正常,大功告成。

若返回Flase,則為顯卡驅動,cuda,pytorch不匹配

很可能是cuda版本高,顯卡驅動版本低。重新檢查一下03部分的內容是否出錯。事實上照着以上思路走下來,出現問題概率不大。畢竟我又在window也配了一遍了。




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM