Ubuntu 16.04 下機器學習和人工智慧的環境安裝(較詳盡)
為什麼用Ubuntu?
ubuntu是目前最為流行的linux的發行版,安裝簡單,視覺化,傻瓜化。目前的相關社群也比較完善,網上資料豐富,是新手上手linux環境下開發比較不錯的一個版本。
ubuntu目前一般每隔兩年會發行一版LTS版本,即長週期支援版,往往在4月份釋出。普通版本一般支援18個月,而LTS能夠支援三年以上。
目前最新的版本是18.04LTS,但是目前還比較新,所以我還是用16.04LTS為主。
安裝系統
先到ubuntu的官網,也可以搜尋引擎中搜索,ubuntu歷史版本中找到ubuntu16.04,下載iso檔案(沒必要去踩別的坑)。使用軟碟通或者rufus(超級棒的一款免費軟體,被作者的免費精神簡直感動到哭)製作U盤啟動盤。
設定電腦的BIOS,U盤啟動安裝。安裝過程中還是比較傻瓜式的。
其中關於硬碟的分配問題,之前還會就掛載目錄的“/”(系統根目錄,主要用以安裝系統)、“/home”(使用者目錄,如果分配了這個掛載目錄,那使用者的儲存空間會被從系統目錄的空間中獨立出來)、“/boot”(儲存安裝過程和升級過程中的一些檔案)做一下去區分,一般根目錄30G左右,boot分200M-400M,其餘都給home——但現在我一般安裝就是分配一個統一的根目錄,格式選擇EXT4,然後剩下大概1-2倍於物理記憶體的SWAP空間作為系統的虛擬記憶體。
然後下一步到底,完成安裝。
一般最新的linux核心都會支援比較新的硬體裝置,所有安裝完成後網絡卡驅動之類就已經完成,所以還是比較簡單,但是如果是NVIDIA的顯示卡,還是需要再安裝一下的,詳見NVIDIA顯示卡驅動安裝部分。
刪除軟體
Ubuntu安裝完後會發現系統有不少的預安裝軟體,有些十分雞肋,可以選擇刪除之。
命令: sudo apt-get remove XXX
如: sudo apt-get remove libreoffice-common gnome-mines gnome-sudoku unity-webapps-common等等
安裝NVIDIA驅動
ubuntu預設安裝的是開源的顯示卡驅動,一般安裝完成後大概率是用的CPU中整合的顯示卡驅動來完成顯示的。
我摸索的安裝方式有兩種,一種是上英偉達的官網下載你顯示卡對應的驅動檔案,選擇.run型別的檔案。一種是線上的PPA安裝方式。
先第一種:
首先是要終止目前的X服務(桌面顯示服務): Ctrl+Alt+F1切換到tty1,輸入賬號密碼,然後終止服務:
sudo service lightdm stop (當然貌似 sudo systemctl stop lightdm 也可以有一樣功效),可以切換至F7看一下圖形介面是否終止。
然後,需要禁用目前的開源nouveau的服務:
sudo vim /etc/modprobe.d/blacklist.conf
在最後新增:
也可以建立blacklist-nouvean.conf檔案:sudo vim /etc/modprobe.d/blacklist-nouvean.conf
新增:blacklist nouveau
options nouveau modeset=0
再更新一下
sudo update-initramfs -u
reboot
lsmod | grep nouveau
懶人安裝法:
Ctrl+alt+F1進入終端安裝顯示卡驅動,安裝驅動時,先關閉視覺化介面,sudo service lightdm stop,
將系統進行更新升級
sudo apt-get dist-upgrade #dist-upgrade相比較apt-get upgrade更為智慧,能夠根據庫的相互依賴性來決定安裝、刪除一些庫
sudo add-apt-repository ppa:graphics-drivers/ppa #嘗試了add-apt-repository和apt-add-repository都可以實現這個功能
sudo apt-get update
sudo apt-get install nvidia-384 #目前最新的為nvidia-390
輸入nvidia-smi,列印顯示卡資訊和驅動版本,ok
如果啟動時有問題則安裝上面的步驟將開源驅動列入黑名單
安裝cuda,cudnn
1.cuda
(本次安裝的版本為cuda8.0,cudnn6.0)
下載相應的cuda版本,將chmod 777 *.run,除了詢問是否安裝驅動選擇no,其他都是預設或yes
執行,後邊為響應的cuda版本
sudo ./cuda8.0*.run
Do you accept the previously read EULA? accept/decline/quit: accept
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 367.48? (y)es/(n)o/(q)uit: n
Install the CUDA 8.0 Toolkit? (y)es/(n)o/(q)uit: y
Enter Toolkit Location [ default is /usr/local/cuda-8.0 ]: Do you want to install a symbolic link at /usr/local/cuda? (y)es/(n)o/(q)uit: y Install the CUDA 8.0 Samples? (y)es/(n)o/(q)uit: y
安裝完畢後,進入 sudo gedit ~/.bashrc,宣告環境變數
export CUDA_HOME=/usr/local/cuda export PATH=$PATH:$CUDA_HOME/bin export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
設定環境變數和動態連結庫
sudo gedit /etc/profile
檔案末尾加入:
export PATH=/usr/local/cuda/bin:$PATH
儲存之後,建立連結檔案
sudo gedit /etc/ld.so.conf.d/cuda.conf
檔案中新增
/usr/local/cuda/lib64
執行
sudo ldconfig
儲存退出,執行source ~/.bashrc
測試安裝是否成功
cd /usr/local/cuda/samples/1_Utilities/deviceQuery ##可以使用tab補全,可能目錄有字母錯了
sudo make
./deviceQuery
列印cuda和顯示卡資訊
2.cudnn
下載cudnn,解壓檔案,
tar -xvf cudnn-8.0-linux-x64-v6.0.tgz
cd cuda/include資料夾,看到cudnn.h
sudo cp cudnn.h /usr/local/cuda/include/ # 複製標頭檔案
cd ../lib64
sudo cp lib* /usr/local/cuda/lib64 # 複製動態連結庫
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.6 # 刪除原有動態檔案
sudo ln -s libcudnn.so.6.0.21 libcudnn.so.6 # 生成軟連線
sudo ln -s libcudnn.so.6 libcudnn.so
後邊的數字可以根據版本修改
3.安裝tensorflow-gpu
首先安裝pip
sudo apt-get install python-pip python-dev build-essential
sudo pip install --upgrade pip
sudo pip install --upgrade virtualenv
然後使用pip命令安裝tensorflow-gpu,直接安裝可以用
sudo pip install tensorflow-gpu==1.3
(也可以不加==1.3)直接安裝最新的,如果覺得比較慢可以使用清華的映象,執行
pip install \ -i https://pypi.tuta.tsinghua.edu.cn/simple/ \tensorflow-gpu==1.3
安裝缺少的庫,再安裝補上
開啟python,
import tensorflow
ok安裝完成
4.安裝pytorch
因為牆的原因,最好翻一下,或者直接下載安裝包,
連結: https://pan.baidu.com/s/1elmOk2 密碼: qrcf
sudo pip install 安裝包
sudo pip install torchvision
然後進入python命令介面,
import torch
import torchvision
不報錯,完成
因為框架會用到ctcloss,因此百度需要安裝百度的warp_loss,這個執行速度快,git專案程式碼,又因為要支援pytorch,可以取下面git
如果沒有安裝git,需要安裝,執行
sudo apt-get install git
cd warp-ctc
mkdir build
cd build
如果使用gpu運算,設定環境變數,執行
export CUDA_HOME=/usr/local/cuda
如果沒有cmake,sudo apt-get install cmake,進行安裝
cmake ../
make
切換到../pytorch_binding
安裝pytorch的一些相關包,
sudo pip install lmdb
sudo pip install cffi
sudo pip install mahotas
warp-ctc關聯到pytorch,需要執行一個setup.py指令碼,首先進入warp-ctc/pytoch_bedding,修改setup.py中的第一個enable_gpu=True,如果為True,則不需要修改,執行
sudo python setup.py install
完成後重新開啟一個控制檯視窗,執行python命令列,執行import warpctc_pytorch,不報錯,完成
安裝IDE
我目前開發比較常用的是python,雖然linux有萬能的VIM,但畢竟vi的門檻還是比較高的,用不熟練的還是使用一些優秀的IDE(或者稱之為軟體)會比較合適一些,比如Pycharm,Anaconda等。
在這我記一下Pycharm的使用。
到pycharm的官網下載linux的安裝包,我們米少就下載社群版的就可以了。
下載完成後,解壓下載的tgz檔案:
如果涉及到許可權問題可以先改變檔案的許可權:sudo chmod 777 XXX (XXX表示你需要改變許可權的檔案目錄及檔名)
解壓壓縮包: tar -xvzf XXX -C ~ (XXX表示需解壓的檔名, -C的命令表示解壓到指定的路徑,此處示例中解壓到home,所以用~,當然解壓完成後你也可以去更改目錄的名字方便記憶)
進入執行檔案所在的目錄,即 cd XXX/bin (此處的XXX即上一步你所解壓的檔案目錄),可以ls一下,看到有一個pycharm.sh檔案
執行 sh pycharm.sh
這個時候我們的pycharm就開始執行了,以後執行pycharm就可以如此用 sh pycharm.sh執行。pycharm開啟後應該先到設定裡的預設設定新增python的環境,並將新增好的環境設定為你當前開發檔案的環境。
當然現在有了更為方便的snap的包管理工具,就可以使用sudo snap install XXX 來安裝需要的軟體,pycharm的官網有專門的snap安裝的指令,當然也能到snap的官網找軟體,但是目前snap的速度是相當的不理想,如果有apt包還是安裝apt的比較快一些。遺憾的是,目前在國內使用snap安裝你必須忍受那難以想象的網路速度,且用且珍惜!