標籤:

mxnet在linux上的安裝

mxnet在linux上的安裝

4 人贊了文章

mxnet是比較熱門的,當前已歸到萬能apache門下的深度學習框架。官方各種文檔都非常全,我會把相關的資源都列到最下面,感興趣可以看看。

這裡,我主要寫一下從源代碼編譯和安裝的整個過程,包括一些重要的依賴包。

mxnet是cpu和gpu都兼容的,我當前是跑在gpu上的,所以先說一下cuda-8.0的安裝。

CUDA-8.0的安裝

首先從nvidia官網,下載cuda包和驅動:

  • cuda-8.0: developer.nvidia.com/cu (分別對下列屬性做相應的選擇:OS, architecture, distribution, version, installer type. e.g. 我的如下:Linux, x86_66, CentOS, 7, runfile(local))
  • 驅動下載: nvidia.com/Download/ind (分別對下列屬性做相應的選擇:產品類型,產品系列,產品家族,操作系統,CUDA toolkit, 語言。 e.g. 我的如下:Tesla, M-Class, M40, Linux-64bit, 8.0, Chinese), 點擊搜索即可跳轉下載頁面。

下面是具體安裝過程, 其中,若是從cuda-7.5升級到cuda-8.0,則需要先卸載/停用老驅動(所有optional項,都為升級需走的步驟)

1. [optional]卸載原先驅動:

sudo nvidia-smi -pm 0 #關才pmlsmod | grep nvidia | grep -v grep #查看當前使用中的nvidia驅動sudo modprobe -r nvidia #卸載上一命令列的所有驅動模塊

若直接modprobe -r nvidia時說,module in use, failed之類時,從lsmod的輸出結果中,把相關的模塊都mobprobe -r 一下就可以了。

2. 安裝新驅動:

license同意,選擇不需要DKMS, 不需要32位,接著一路OK。 (這是我的配置,同學們隨意)

sudo sh NVIDIA-Linux-x86_64-384.66.run

3. 重啟 (這是機器重啟):

sudo reboot

4. 安裝cuda-8.0:

重啟後,[optional]若是升級驅動的,則重新執行第1步,以卸載驅動,否則,直接執行下面,進行安裝:

sudo su cuda_8.0.44_linux.run

5. 測試安裝是否成功:

nvidia-smi/user/local/cuda/bin/nvcc --version

CUDNN的安裝

下載cudnn庫:developer.nvidia.com/rd

e.g. cudnn-8.0-linux-x64-v6.0.tgz

解壓後,直接拷貝到你cuda-8.0的對應目錄下即可:

tar xzvf cudnn-8.0-linux-x64-v6.0.tgzsudo cp cuda/include/cudnn.h /usr/local/cuda/includesudo cp -P cuda/lib64/libcudnn* /usr/local/cuda/lib64sudo ldconfig

OPENCV的安裝

opencv的安裝,完全參考了mxnet/setup-utils/install-mxnet-amz-linux.sh:

# Install OpenCV at /usr/local/opencvgit clone https://github.com/opencv/opencvcd opencvmkdir -p buildcd buildcmake -D BUILD_opencv_gpu=OFF -D WITH_EIGEN=ON -D WITH_TBB=ON -D WITH_CUDA=OFF -D WITH_1394=OFF -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..sudo make PREFIX=/usr/local install

其中,這個也是必須的,否則會說opencv找不到:

# Export env variables for pkg config, this is a must for mxnet export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH

OpenBlas的安裝

矩陣運算庫,裝openblas:

git clone https://github.com/xianyi/OpenBLAScd OpenBLASmake -j 10sudo make PREFIX=/usr/local install

環境變數配置

python, 一般肯定裝Anaconda. 直接到官網下載,執行就是了。

接著配置環境變數,即在.bash_profile中,添加如下,我上面裝的庫,基本都在/usr/local下面,所以相關的路徑都加進去了:

export ANACONDA_HOME=/opt/anacondaexport LD_LIBRARY_PATH=$ANACONDA_HOME/lib:/usr/local/lib:/usr/lib64:/usr/local/lib64:/usr/lib:/usr/local/cuda/lib64:$LD_LIBRARY_PATHexport PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATHexport PATH=$ANACONDA_HOME/bin:$PATH

MXNET的安裝

mxnet的安裝,跟caffe比,感覺簡單好多。基本也是參考安裝腳本 install-mxnet-amz-linux.sh:

git clone --recursive https://github.com/apache/incubator-mxnet.git mxnetcd mxnetcp make/config.mk .echo "USE_CUDA=1" >>config.mkecho "USE_CUDNN=1" >>config.mkecho "USE_BLAS=openblas" >>config.mk #echo "ADD_CFLAGS += -I/usr/include/openblas" >>config.mk #此步不用,因為我是裝在/usr/local,環境變數中已配echo "ADD_LDFLAGS += -lopencv_core -lopencv_imgproc -lopencv_imgcodecs" >>config.mkmake -j $(nproc) USE_OPENCV=1 USE_BLAS=openblas USE_CUDA=1 USE_CUDA_PATH=/usr/local/cuda USE_CUDNN=1

運行成功後,驗證結果:

find . -name "libmxnet.so"ldd lib/libmxnet.so

若so成功生成,但ldd後發現有些指向為Not found,則說明是你LD_LIBRARY_PATH沒配好,找到缺失的so,把路徑添加到環間變數里就可以了。

接著安裝mxnet python介面:

cd mxnet/python #進到mxnet的python目錄sudo python setup.py install #是否sudo隨自己便

驗證是否成功:

>>> from mxnet import ndarray as nd>>> x = nd.array([[1,2],[3,4]], ctx=mx.gpu(1))>>> x[[ 1. 2.] [ 3. 4.]]<NDArray 2x2 @gpu(1)>>>> y = nd.zeros((2,2))>>> y[[ 0. 0.] [ 0. 0.]]<NDArray 2x2 @cpu(0)>

Jupyter notebook配置

jupyter notebook,在anaconda里是有的,這裡是給它裝個插件,用於Notebook的形式打開markdown文件,便於看李沐大神的tutorials文檔。(其實他文檔里也都有寫明這些東東啦,我只是國慶前一天,沒人陪,閑得慌而己,哈)

p.s.不是全局的,可以不用sudo喲。

sudo pip install https://github.com/mli/notedown/tarball/masterjupyter notebook --generate-configvim ~/.jupyter/jupyter_notebook_config.py#add below in above file: c.NotebookApp.contents_manager_class = notedown.NotedownContentsManager

下面是jupyter的插件集,比如顯示每段code的執行時長等,所以可以選擇性地安裝:

一般,若直接執行第二步就可以了,因為我的機子只能訪問github,其它pip下載包的地址,都是訪問不了的,所以,就需發走兩步,首先手動安裝jupyter_contrib_nbextensions依賴的jupyter_highlight_selected_word插件。

#第一步git clone https://github.com/jcb91/jupyter_highlight_selected_word.gitsudo pip install -e jupyter_highlight_selected_word#第二步:沒有網路訪問問題,可以直接跑這一步git clone https://github.com/ipython-contrib/jupyter_contrib_nbextensions.gitsudo pip install -e jupyter_contrib_nbextensions

到此,mxnet的安裝就完成了。

學習資源

  • mxnet github地址 - 遇到問題,可以先到Issues里查,看是不是已知問題,可以如何解決。
  • mxnet英文教程,真的是手把手。據說是CMU的教授寫的。
  • mxnet中文教程,李沐,沐神和他的幾位小伙們一起寫的。超級贊。
  • 李沐老師,每周六在鬥魚上在開課喲,10:00-12:00AM。人超級NICE,講得超級細。強推!以往的上課視頻,也都有,網上都可以搜到,比如bilibili上就有,關注MXNet_Gluon, 到他空間里找就有了,比如第一周的課視頻
  • 只要看tutorial,就會找到這個論壇了,各種的問題,隨便問,隨便幫人答,大家開心就好。

thanks


推薦閱讀:

MXNet/Gluon第五課:Gluon高級和優化演算法基礎筆記
MXNet/Gluon第四課:BatchNorm,更深的卷積神經網路,圖像增強筆記
MXNet 視頻I/O讀取速度優化
mxnet訓練/導出/載入模型並預測(python和C++)

TAG:MXNet |