深度GPU環境,tensorflow/pytorch/mxnet的pip安裝,非源代碼編譯,基于cuda10/cudnn7.4.1/ubuntu18.04.md

os安裝

目前對tensorflow和cuda支持最好的是ubuntu的18.04 ,16.04這種lts,推薦使用18.04版本。非lts的版本一般不推薦。

Windows倒是也能用來裝深度GPU環境,但是Windows上的問題實在太多了,而且很多都是跟環境相關的,不具備普遍性,解決了也沒有意義。所以真心不推薦Windows環境。

這里需要注意的是,ubuntu有桌面版本和服務器版本的區別,自己用的話,肯定是要桌面版本的,但是如果只是放在角落里做運算機又或者是桌面版本安裝失敗的時候,可以考慮服務器版本。

ubuntu自帶的開源驅動似乎有點問題,1080ti的顯卡不支持,所以只能用服務器版本裝好之后,再考慮怎么裝上桌面。

而且ubuntu從17.04的很多東西都可以安裝在$HOME/.local 下面,省去了很多的麻煩。

從ubuntu官網下載ubuntu的iso鏡像。

balabalabala...

系統安裝就完成了。

安裝完之后的設置

升級

裝完之后,推薦先升級一下系統。試了一下,默認的源速度不怎么好,換一個國內的源。國內的話,有ali,163,tuna,中科大。參考各個國內源說明文檔去修改sources.list即可。

ali的ubuntu18.04 sources.list設置

deb https://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse

執行下述命令升級

sudo apt-get update
sudo apt-get upgrade

升級完系統之后,重啟一下系統。

sudo reboot

安裝rsync screen aptitude

因為系統里面現在還啥也沒有,安裝完之后對系統做一個易用性的設置。

sudo apt-get install rsync screen aptitude

pip安裝

因為我們這里是用pip安裝的各個框架,所以pip要先安裝一下

sudo aptitude install python3-pip

重要:ubuntu18.04里面自帶的已經是python3.6了,如果操作系統使用的是ubuntu16.04,其自帶的python是python3.5,則需要考慮使用conda等工具安裝python3.6之后再進行后續的各個框架安裝了。

cuda, cudnn的安裝

下載cuda

這里下載ubuntu18.04對應的最新的cuda10。作者下載的是deb(local)的版本,這是一個deb文件,裝好之后,就可以將整個cuda10的倉庫放在本地,省去在線下載的麻煩,一定要看清楚,不要下載錯了。

文件名為:

cuda-repo-ubuntu1804-10-0-local-10.0.130-410.48_1.0-1_amd64.deb

找不到的可以到這里下載我已經下載好的

下載cudnn

注冊一個nvidia的開發者帳號,下載cudnn7.4。地址

有時候國內的用戶訪問這個網址會出現問題提示正在維護,具體原因。。。請自備梯子或者用我已經下載好的。

這里下載的是cuda10對應的deb版本,不要下載錯了。

文件名為

libcudnn7_7.4.1.5-1+cuda10.0_amd64.deb

找不到的可以到這里下載我已經下載好的

安裝cuda庫

直接用dpkg安裝這個文件就好了。裝好了整個cuda的倉庫就在本地了。

sudo dpkg -i cuda-repo-ubuntu1804-10-0-local-10.0.130-410.48_1.0-1_amd64.deb
sudo apt-key add /var/cuda-repo-10-0-local-10.0.130-410.48/7fa2af80.pub # 執行這一行是為了導入key
sudo aptitude update # 執行升級,讓cuda庫起作用

這里安裝的其實是一個cuda的apt倉庫,相當于把cuda的apt倉庫的本地版本。到這里,cuda還沒有安裝好。

安裝nvidia驅動

想用nvidia的顯卡,不裝nvidia的驅動怎么行,其實ubuntu官方的倉庫里面是自己帶nvidia的閉源驅動的,不過我們這里使用的是cuda庫里面自帶的nvidia驅動。

使用命令行安裝的方式如下:

sudo aptitude install nvidia-driver-410 --without-recommends

不同的編號支持不同的顯卡,如果是1080ti等比較新的顯卡,直接用編號最高的應該就沒問題。

比較老舊的顯卡,可以到nvidia的官方網站查詢。

使用--without-recommends可以只安裝需要的東西,其他推薦安裝的東西可以都不安裝了,省了很多空間,

安裝完成之后,需要重啟一下系統。

sudo reboot

很多教程說要去下載sh的驅動文件,進行編譯安裝,這里不太推薦,因為很麻煩而且容易出問題,ubuntu對非開源驅動的支持還是比較好的,直接用cuda庫里面的驅動就可以。

關于驅動的安裝,有文章提到過cuda里面自己帶的驅動是有問題的,所以需要單獨裝驅動,而不是使用cuda里面自己帶的。但是我們這是測試過的發現,就算裝的不是最新的驅動,cuda也會嘗試給更新到最新,而且看上去沒啥問題,也許是特定版本的驅動才會出現的問題。這個需要具體問題具體分析了。

安裝cuda

直接執行下面的命令安裝就可以了:

sudo aptitude install cuda-runtime-10-0 --without-recommends

因為我這里只是要運行這些框架,并不是要編譯什么東西,所以這里裝的是cuda的runtime,也就是不帶任何工具,并且也沒裝任何額外的開發包,所以很快而且占用空間也不多。如果需要從源代碼編譯一些使用cuda的框架,那么還是需要老老實實裝cuda,命令行如下:

sudo aptitude install cuda

在18.04版本之前,cuda都是單獨安裝的,安裝到了/usr/local下面,所以需要一些其他的設置,而現在,cuda直接安裝到/usr/lib下面去了,就不需要那些單獨的設置了。

安裝cudnn

因為我們下載的是deb,所以直接安裝就好了,很簡單,命令行如下:

sudo dpkg -i libcudnn7_7.4.1.5-1+cuda10.0_amd64.deb

安裝tensorflow

tensorflow的安裝碰到了一些小問題,目前tf官方最新版本的1.12只支持cuda9.2的環境,并沒提供官方的cuda10支持。所以想要在我們現在已經裝好的環境里面使用tensorflow,就有下面三種方式了:

  • 從源代碼編譯tensorflow,開啟cuda10的支持,順便可以做一下優化編譯。
    • 這個方案比較但疼的是tf的代碼在google的服務器上,國內需要梯子才能下載,而且編譯要幾個小時,很麻煩,不太推薦。
  • 使用nvidia-docker,這是個很不錯的主意,而且還能提供環境隔離等,并且不限host機的cuda環境,因為只跟docker內部的cuda的環境有關。
    • 這個方案安裝nvidia-docker已經簡單很多了,幾乎是傻瓜式操作,但是docker的使用還是有些復雜,而且真心不如在本地直接安裝方便好用,值得考慮,但是這里不推薦。有興趣的可以參考我的另一個blog。
  • 使用自帶cuda10支持的非官方編譯tensorflow,有很多熱心網友提供了自己編譯好的支持cuda10的tensorflow。
    • 這種熱心網友不多,而且人家編譯好的tensorflow未必適合你的機器,例如compute capability不兼容等問題。而且,如果碰上一個別有用心的網友,編譯好的tf里面帶一些惡意軟件也不一定。所以慎重考慮這種方式。

跟TinyMind的小伙伴打了個招呼,技術小哥給提供了一個編譯版本的Tensorflow,到這里下載一個編譯好的tf1.12。

GPU wheels for TensorFlow 1.12, built by TinyMind, the cloud machine learning platform.

To use the wheels on your own machine, Intel Broadwell or later CPU, and Nvidia computing capability 3.7 or later GPU with CUDA 10.0 and cuDNN 7.4 are required.

We use Compilation flags -march=native in our Broadwell CPU machine. Built for Ubuntu 18.04 LTS .

This version is optimized for compute capabilities 3.7 (K80, AWS P2/GCP), 6.0 (P100, GCP), 6.1(GTX1050/1060/1080/1080Ti) and 7.0 (V100, AWS P3).

TensorRT is not supported.

注意,compute capability是api版本,跟算力無關,可以到這里查找你的顯卡對應的compute capability。

文件名為:

tensorflow-1.12.0-cp36-cp36m-linux_x86_64.whl

下載完后,重開一個終端,輸入:

pip3 install tensorflow-1.12.0-cp36-cp36m-linux_x86_64.whl

注意:tf官方放在pypi里面的tensorflow-gpu從1.7版本開始就默認開啟了avx2的指令集優化,如果電腦的cpu型號比較老,例如e3 v2系列的cpu,安裝完成之后,運行的時候會出現段錯誤之類的問題,這種情況只能考慮自己編譯tf或者換cpu了。TinyMind小哥提供的版本是帶著avx2指令集優化的。

安裝mxnet

重開一個終端,輸入

sudo aptitude install libgfortran3 # 一個依賴庫,必須裝一下
pip3 install mxnet-cu100mkl

安裝pyTorch

重開一個終端,輸入

pip3 install https://download.pytorch.org/whl/cu100/torch-1.0.0-cp36-cp36m-linux_x86_64.whl
pip3 install torchvision

這個安裝命令是pyTorch官方給的,官方很貼心的給出了基本所有可能用到的環境(conda,pip,windows,linux)下的安裝命令。比tf社區強多了。

測試安裝

Tensorflow

mxnet

pyTorch

import torch
x = torch.rand(5, 3)
print(x)

torch.cuda.is_available()

總結

個人比較喜歡mxnet,他的社區和學習資料都是中文為主的,對國人很友好。而目前發展勢頭最猛的pyTorch也是很值得期待的,特別是1.0發布之后,有facebook這棵大樹在后面,整個生態也都在完善起來。另外,雖然有各種蛋疼的問題,但是目前用戶群最廣,文檔資料最齊全,model-zoo最大的仍然是tensorflow。而且有slim這樣的工業級框架加持,tf絕對是大多數場景的不二之選。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容