天天看點

雙系統裝完ubuntu16.04後的一系列工作+部署深度學習開發環境

安裝完Ubuntu16.04就開始搗鼓該如何進行深度學習了。在此之前還需要經曆以下過程:

1、更換國内鏡像源

安裝完Ubuntu 系統後第1件事就是更換為國内源:

我試過了阿裡雲不行,中科大可!

解決方法:[judygeng] sudo apt-get update 報錯 ubuntu xenial InRelease 明文簽署檔案不可用,結果為‘NOSPLIT’(您的網絡需要認證嗎?)解決

2、更新軟體清單

輸入

sudo apt-get update
           

不更新的話可能下不了軟體包

3、安裝中文輸入法

我最先開始下谷歌拼音,發現好難用不習慣,最後還是下了個搜狗

參考:

Ubuntu16.04系統安裝搜狗輸入法詳細教程

4、安裝vim

因為gedit修改檔案時會出現warning,用vim打開檔案就沒事

參考:

(gedit:20620): WARNING **: Set document metadata failed: Setting

但是我發現雖然用gedit編輯檔案會出現warning,但它好用啊!可以直接複制粘貼,也能滑鼠定位。vim就很難了。是以就算裝了vim我還是沒用╮(╯_╰)╭

※※※部署深度學習環境

最近在學目标檢測,看到了一本書《MXNext深度學習實戰》,裡面講得超級詳細,從一開始的環境配置到最後的實戰都寫得清清楚楚。是以以下配置都和書裡面的内容基本一緻。

其實我本來是打算用tensorflow架構的,但書本說MXNext架構也很好,而且各種操作真的寫得很詳細,我跟着一步步做就不怕出現太大的問題。

這十多天來我用win10,caffe、tensorflow架構想跑網上目标檢測的demo沒一個成功的!!環境配置搞得我頭都大。各種版本要對應好,從github上download下來的有些還需要自己配置編譯,這又要用到vs,cmake。真真真的缺太多東西了,是以最後我隻能裝個雙系統用Ubuntu16.04了。我太難了。

這裡是用Pycharm+Docker搭建的深度學習環境。

Docker是一個環境隔離工具,采用這種方式不用安裝CUDA,cuDNN,MXNet,隻需安裝Docker,然後通過Docker這個工具從鏡像(image)庫中拉取對于版本鏡像就可以直接使用了,這樣就不需要每次都在本地安裝。

接下來就開始配置吧~過程很曲折,結果很美好

1、安裝驅動

1、在桌面左側打開system settings

2、點選software&update

雙系統裝完ubuntu16.04後的一系列工作+部署深度學習開發環境

3、點選additional drivers,選擇第一個,點選apply changes

雙系統裝完ubuntu16.04後的一系列工作+部署深度學習開發環境

4、最後點選restart重新開機就可以了

2、下載下傳pycharm專業版(2018.3.7)

官網:https://www.jetbrains.com/pycharm/download/other.html

安裝方法參考:

Ubuntu下安裝Pycharm專業版并激活

專業版需要花費,學生黨暫沒經費,是以就在網上找了激活碼。

親測好用!!找了好久,隻有這個行:

https://www.cnblogs.com/codehome/p/8342430.html

這裡顯示2021/2/19到期,過期後應該還可以用上面的連結擷取新的激活碼

雙系統裝完ubuntu16.04後的一系列工作+部署深度學習開發環境

3、下載下傳安裝Docker(版本18.03.1)

下載下傳位址

選擇docker-ce_18.03.1-ce-0~ubuntu_amd64.deb

雙系統裝完ubuntu16.04後的一系列工作+部署深度學習開發環境

進入下載下傳docker的檔案夾,我的是預設下到了~/Downloads檔案夾下

雙系統裝完ubuntu16.04後的一系列工作+部署深度學習開發環境

是以輸入以下指令:

cd ~/Downloads
           

再輸入:

sudo -dpkg -i docker-ce_18.03.1~ce-0~ubuntu_amd64.deb
           

驗證Docker是否安裝成功:

docker --version
           

出現Docker version 18.03.1-ce, build 9ee9f40 就說明成功了

雙系統裝完ubuntu16.04後的一系列工作+部署深度學習開發環境

4、安裝NVIDIA-docker

接下來的操作都是以root使用者進行,否則可能會出現一些問題。

切換root時我遇到了一個問題,解決方法:

linux使用su切換使用者提示 Authentication failure的解決方法

1、先安裝curl:

curl是一個指令行工具,通過指定的URL來上傳或下載下傳資料,并将資料展示出來。

apt install curl
           

2、添加gpg key并建立一個倉庫:

先輸入:

curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | apt-key add -
           

出現OK時再輸入:

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
           

再輸入:

curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | tee /etc/apt/sources.list.d/nvidia-docker.list
           

結果如下

雙系統裝完ubuntu16.04後的一系列工作+部署深度學習開發環境

最後再輸入:

apt-get update
           

結果如下

雙系統裝完ubuntu16.04後的一系列工作+部署深度學習開發環境

3、安裝nvidia-docker2

輸入:

apt-get install -y nvidia-docker2
           

這裡出現一個問題:

E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?

雙系統裝完ubuntu16.04後的一系列工作+部署深度學習開發環境

按照提示輸入:

apt-get install -y nvidia-docker2 --fix-missing
           

就完美解決,如圖:

雙系統裝完ubuntu16.04後的一系列工作+部署深度學習開發環境

安裝完成後需要重新導入Docker配置檔案:

pkill -SIGHUP dockerd
           

4、測試

這裡啟動一個名為nvidia/cuda的鏡像,如果機器中沒有該鏡像,那麼run指令在啟動前會自動拉取該鏡像),然後在鏡像中運作nvidia-smi指令,這條指令是用來檢視顯示卡資訊的。

輸入:

docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi
           

這裡又報錯了:

雙系統裝完ubuntu16.04後的一系列工作+部署深度學習開發環境

解決方法參考:

[程式羊的自我修養 ]在執行Dockerfile時出現Get https://registry-1.docker.io/v2/錯誤的解決方案

我用的是以下解決方法:

修改docker鏡像源:

docker預設的源為國外官方源,下載下傳速度較慢,可改為國内源加速,我用了阿裡雲的

修改或新增配置檔案,輸入:

gedit /etc/docker/daemon.json
           

添加如下參數:逗号不要漏了

"registry-mirrors": ["https://aeckruos.mirror.aliyuncs.com"],
           
雙系統裝完ubuntu16.04後的一系列工作+部署深度學習開發環境

再重新開機一下docker服務:

systemctl daemon-reload 
systemctl restart docker
           

解決了一個又來一個……

報錯:

雙系統裝完ubuntu16.04後的一系列工作+部署深度學習開發環境

解決辦法參考:nvidia-docker 安裝報錯記錄

正确的指令是需要加上cuda的版本号:

docker run --runtime=nvidia --rm nvidia/cuda:8.0-devel nvidia-smi
           

在這個過程中因為有一些源不太行,下到最後一點總是報錯報錯報錯,試了好幾個源,最後隻有改成阿裡雲才行,阿裡雲強!!!

搞定這個bug用了我好幾個小時。終于可以了,既氣又喜!

如果可以成功看到如下圖所示的顯示卡資訊就可以在鏡像中使用GPU了。

雙系統裝完ubuntu16.04後的一系列工作+部署深度學習開發環境

5、修改配置檔案

為了免得每次運作docker鏡像時都要加上–runtime=nvidia這個參數,可以在配置檔案中配置這個參數。

打開配置檔案

gedit /etc/docker/daemon.json
           

添加

"default-runtime":"nvidia",
           

如下圖所示:

雙系統裝完ubuntu16.04後的一系列工作+部署深度學習開發環境

儲存檔案,重新開機一下docker服務:

service docker restart
           

最後就可以使用以下指令在鏡像中看到顯示卡驅動資訊了:

docker run --rm nvidia/cuda:8.0-devel nvidia-smi
           

10、拉取MXNet鏡像

接下來在鏡像庫中拉取MXNet鏡像,Docker官方倉庫提供了多種多樣的MXNet鏡像:

https://hub.docker.com/r/mxnet/

這裡選擇python api對應的mxnet/python。

在docker中可以通過docker pull指令來拉取鏡像,鏡像名的命名規則一般是”倉庫名:标簽“,比如”mxnet/python:gpu“,這裡是按照《MXNet深度學習實戰》這本書采用的是MXNet1.3.1、CUDA8.0和Python3.x,可以通過以下指令拉取鏡像名為mxnet/python:1.3.1_gpu_cu80_py3的鏡像:

這裡也需要切換到root操作,開始時沒有用root就報錯了。

docker pull mxnet/python:1.3.1_gpu_cu80_py3
           

拉取鏡像一般需要幾分鐘時間,如下圖拉取成功。

雙系統裝完ubuntu16.04後的一系列工作+部署深度學習開發環境

接下來通過docker的run指令進入指定鏡像啟動容器并開始一些簡單的操作。

進入指定鏡像:

docker run --rm -it mxnet/python:1.3.1_gpu_cu80_py3 bash
           

其中,”–rm“參數表示退出容器後自動删除該容器,”-it“參數表示指定鏡像名稱。

如果成功啟動了容器,則指令行的字首如下所示:

[email protected]:/#
           

符号@後面的字元串表示啟動的容器的ID。

接下來的所有操作都會在這個容器環境中,不會影響機器環境。

然後通過輸入

python3
           

進入python環境,在該鏡像中預設使用python3.5.2

接着輸入

import mxnet as mx
           

沒有報錯就可以正常使用mxnet了。

接下來可以執行一些簡單的操作:

a=mx.nd.array([1,2,3]).as_in_context(mx.gpu(0))
b=mx.nd.array([4,5,6]).as_in_context(mx.gpu(0))
print(a+b)
           

以上操作如下圖所示:

雙系統裝完ubuntu16.04後的一系列工作+部署深度學習開發環境

太興奮啦!!!!搞了一天終于把環境搭建好了,接下來就可以好好跑模型了~

在某個環節出錯了不要慌,網上有很多解決方法,一個不行試多幾個,總有一個是可以的,不要放棄啊,想想成功後的欣喜,這一切都是值得的。