Ubuntu下安装MxNet

 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011636567/article/details/78238293

本文是2017.1月份的时候安装的步骤, 现在可能有些已经不适用, 请大家注意鉴别.

http://blog.csdn.net/u012436149/article/details/52554176 >Ubuntu 16.04 Cuda7.5 tensorflow0.10.0-gpu 
http://phunter.logdown.com/posts/314562 >用MXnet实战深度学习之一:安装GPU版mxnet并跑一个MNIST手写数字识别 tensorflow0.10.0-gpu

安装依赖:

sudo apt-get update
sudo apt-get install -y build-essential git libatlas-base-dev libopencv-dev
  • 1
  • 2

下载mxnet源码用于编译:

Install git if not already installed.

sudo apt-get update
sudo apt-get -y install git
  • 1
  • 2

下载源码:

git clone --recursive https://github.com/dmlc/mxnet
  • 1

安装nvidia驱动程序

将nouveau加入黑名单

sudo gedit /etc/modprobe.d/blacklist.conf  
  • 1

将下面的代码加到文件最后:

 blacklist nouveau
  • 1

重启电脑

这么做的目的是禁用Ubuntu自带的显卡驱动,为我们下面安装NVIDIA显卡驱动做准备.

安装驱动的时候, 需要关闭XWIN

Ctrl+Alt+F1进入命令行界面; 
接着:

sudo service lightdm stop  
sudo rm /tmp/.X0-lock  (删除此文件,如果本来就没有的话,就会报错)
  • 1
  • 2

在完成这一步的时候, 我使用了另一台PC, 用ssh远程登录:

ssh [email protected]
  • 1

然后输入密码即可远程登录.

安装驱动

sudo apt-get remove --purge nvidia-*

sudo rm /etc/X11/xorg.cong   
sudo apt-add-repository ppa:graphics-drivers/ppa -y  

sudo apt-get update  
sudo apt-get install nvidia-367 nvidia-settings nvidia-prime(这里需要注意,367代表驱动的版本;其实后面下载的CUDA里面自带了一个显卡驱动,但是未必是最新的. 这里的目的就是手动下载最新的显卡驱动)   
sudo apt-get install mesa-common-dev   
sudo apt-get install freeglut3-dev   
sudo ldconfig -n   
sudo update-initramfs -u
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

重启电脑,就可以进入界面了, 如果进不去,进入BIOS启动页面,在Boot(或Security)中找到Security BOOT ,将其disable就可以了.

查看驱动

nvidia-prime query    
lspci | grep VGA //显示显卡信息
  • 1
  • 2

其实上面两步我也不知道是在干嘛, 反正输出的消息八成就没毛病了. 我装的时候没出问题.

安装CUDA

前往 https://developer.nvidia.com/cuda-downloads 选择对应的安装方式。国内读者建议网络安装方式deb(network),这样ubuntu会选择就近的国内的源安装,速度可能比较快。 
(注: 实际安装的时候发现用apt-get并不快,因为它还是从developer.nvidia…下载的, 所以和apt源无关) 
按照NVIDIA给的命令下载好了之后, 在terminal中找到下载好的.run文件所在的目录, 直接执行:

./cuda_8.0.44_linux.run
  • 1

改一下环境变量:

~$ sudo gedit .bashrc  
  • 1

文件尾加入:

export PATH=/usr/local/cuda/bin:$PATH    
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH  
  • 1
  • 2

保存退出. 然后执行:

source .bashrc  
  • 1

之后可以通过下面命令查看你的显卡使用情况:

nvidia-smi
  • 1

这里写图片描述 
测试一下cuda有没有装好:

测试1

cd /usr/local/cuda/samples/1_Utilities/deviceQuery  
sudo make  
sudo ./deviceQuery  //能执行表示正确
  • 1
  • 2
  • 3

测试2:

cd ../../5_Simulations/nbody/  
sudo make    
./nbody -benchmark -numbodies=256000 -device=0  //能执行表示正确
  • 1
  • 2
  • 3

安装CuDNN

暂时还没做, 复制了http://phunter.logdown.com/posts/314562 >用MXnet实战深度学习之一:安装GPU版mxnet并跑一个MNIST手写数字识别 tensorflow0.10.0-gpu以备今后的需要. 
可选安装:Mxnet也支持cuDNN,它是nVidia推出的深度学习加速工具包,能高效实现一些卷积等深度学习常用操作,在内存使用和计算速度上面能有所提高。大家可以到这里 https://developer.nvidia.com/cudnn 申请开发者项目,如果批准通过可以下载安装cuDNN工具包,具体请参照nVidia官方教程。

编译支持GPU的MXnet

在~/mxnet/目录里找到mxnet/make/子目录,把该目录下的config.mk复制到mxnet/目录,用文本编辑器打开,找到并修改以下几行:

USE_CUDA = 1
USE_CUDA_PATH = /usr/local/cuda
  • 1
  • 2

如果用户选择安装atlas或者openblas等其他BLAS的实现,需要额外的修改。如果ubuntu的atlas实现(sudo apt-get install libatlas-base-dev或者sudo apt-get install libopenblas-dev),需要修改为:

USE_BLAS = atlas
  • 1

或者

USE_BLAS = openblas
  • 1

(注: 打开config.mk, 发现里面本来就是USE_BLAS = atlas; 而正好前面下载的依赖项中, 本身就是libatlas-base-dev,所以不用改.)

安装Python对mxnet的语言支持(还有R, scala等, 我没用到所以没做)

这里我有点忘了, 当时按mxnet官方教程走完之后好像就可以直接在pycharm里调用mxnet的API了. 但是好像别人的博客里执行的东西和官方不一样, 这里都记录下来了:

Mxnet官方给的方法:

Install MXNet for Python with all required dependencies

cd ~/mxnet/setup-utils
bash install-mxnet-ubuntu-python.sh
  • 1
  • 2

We have added MXNet Python package path in your ~/.bashrc. 
Run the following command to refresh environment variables.

$ source ~/.bashrc
  • 1

博客里面见到的方法:

在Mxnet目录中执行:

cd python; python setup.py install
  • 1

然后说要安装numpy, 我也不知道我是怎么就自己装上了. 安装的命令如下:

sudo apt-get install python-numpy
  • 1

下面几个不知道干什么用, mxnet官方教程是这么写的, 但是别人的博客里没提到, 可能可以不装:

Next, we install graphviz library that we use for visualizing network graphs you build on MXNet. We will also install Jupyter Notebook used for running MXNet tutorials and examples.

sudo apt-get install -y python-pip
sudo pip install graphviz
sudo pip install Jupyter
  • 1
  • 2
  • 3

测试一下mxnet能否运行:

测试方法1: 可以按照Mxnet官方的方法, 在命令行中逐行输入下面命令:

python
import mxnet as mx
a = mx.nd.ones((2, 3), mx.gpu())
print ((a * 2).asnumpy())
  • 1
  • 2
  • 3
  • 4

会显示

[[ 2.  2.  2.]
[ 2.  2.  2.]]
  • 1
  • 2

这里出现了意见很夭寿的事情…这时候在Ubuntu的terminal中逐行执行,以及在pycharm中写成一个.py文件然后执行,都能正确输出结果; 但是从pycharm的terminal中逐行执行, 就始终报错, 让我用”USE_CUDA = 1” 重新编译mxnet来生成新的dmlc-core文件夹里的东西… 玄学…

测试方法2: 在mxnet路径下执行

sudo python example/image-classification/train_mnist.py
  • 1

这时可能会报错, 提示在import requests时没有这个包. requests包是一个和http什么什么有关的东西, 我估计是首次执行的时候需要自动下载数据集, 而下载的命令写在train_mnist.py中, 调用了requests里的api. 这里手动下载一下就行了:

pip install requests

猜你喜欢

转载自blog.csdn.net/CVAIDL/article/details/88801229