mxnet在linux上的安裝
4 人贊了文章
mxnet是比較熱門的,當前已歸到萬能apache門下的深度學習框架。官方各種文檔都非常全,我會把相關的資源都列到最下面,感興趣可以看看。
這裡,我主要寫一下從源代碼編譯和安裝的整個過程,包括一些重要的依賴包。
mxnet是cpu和gpu都兼容的,我當前是跑在gpu上的,所以先說一下cuda-8.0的安裝。
CUDA-8.0的安裝
首先從nvidia官網,下載cuda包和驅動:
- cuda-8.0: https://developer.nvidia.com/cuda-80-download-archive (分別對下列屬性做相應的選擇:OS, architecture, distribution, version, installer type. e.g. 我的如下:Linux, x86_66, CentOS, 7, runfile(local))
- 驅動下載: http://www.nvidia.com/Download/index.aspx?lang=cn (分別對下列屬性做相應的選擇:產品類型,產品系列,產品家族,操作系統,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庫:https://developer.nvidia.com/rdp/cudnn-download
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 |