本文是2017.1月份的时候安装的步骤, 现在可能有些已经不适用, 请大家注意鉴别.
安装依赖:
sudo apt-get update
sudo apt-get install -y build-essential git libatlas-base-dev libopencv-dev
下载mxnet源码用于编译:
Install git if not already installed.
sudo apt-get update
sudo apt-get -y install git
下载源码:
git clone --recursive https://github.com/dmlc/mxnet
安装nvidia驱动程序
将nouveau加入黑名单
sudo gedit /etc/modprobe.d/blacklist.conf
将下面的代码加到文件最后:
blacklist nouveau
重启电脑
这么做的目的是禁用Ubuntu自带的显卡驱动,为我们下面安装NVIDIA显卡驱动做准备.
安装驱动的时候, 需要关闭XWIN
Ctrl+Alt+F1进入命令行界面;
接着:
sudo service lightdm stop
sudo rm /tmp/.X0-lock (删除此文件,如果本来就没有的话,就会报错)
在完成这一步的时候, 我使用了另一台PC, 用ssh远程登录:
ssh elijha@192.168.1.110
然后输入密码即可远程登录.
安装驱动
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
重启电脑,就可以进入界面了, 如果进不去,进入BIOS启动页面,在Boot(或Security)中找到Security BOOT ,将其disable就可以了.
查看驱动
nvidia-prime query
lspci | grep VGA //显示显卡信息
其实上面两步我也不知道是在干嘛, 反正输出的消息八成就没毛病了. 我装的时候没出问题.
安装CUDA
前往 https://developer.nvidia.com/cuda-downloads 选择对应的安装方式。国内读者建议网络安装方式deb(network),这样ubuntu会选择就近的国内的源安装,速度可能比较快。
(注: 实际安装的时候发现用apt-get并不快,因为它还是从developer.nvidia…下载的, 所以和apt源无关)
按照NVIDIA给的命令下载好了之后, 在terminal中找到下载好的.run文件所在的目录, 直接执行:
./cuda_8.0.44_linux.run
改一下环境变量:
~$ sudo gedit .bashrc
文件尾加入:
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
保存退出. 然后执行:
source .bashrc
之后可以通过下面命令查看你的显卡使用情况:
nvidia-smi
测试一下cuda有没有装好:
测试1
cd /usr/local/cuda/samples/1_Utilities/deviceQuery
sudo make
sudo ./deviceQuery //能执行表示正确
测试2:
cd ../../5_Simulations/nbody/
sudo make
./nbody -benchmark -numbodies=256000 -device=0 //能执行表示正确
安装CuDNN
暂时还没做, 参考了用MXnet实战深度学习之一:安装GPU版mxnet并跑一个MNIST手写数字识别 tensorflow0.10.0-gpu以备今后的需要.
参考地址:http://phunter.logdown.com/posts/314562
可选安装: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
如果用户选择安装atlas或者openblas等其他BLAS的实现,需要额外的修改。如果ubuntu的atlas实现(sudo apt-get install libatlas-base-dev或者sudo apt-get install libopenblas-dev),需要修改为:
USE_BLAS = atlas
或者
USE_BLAS = openblas
(注: 打开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
We have added MXNet Python package path in your ~/.bashrc.
Run the following command to refresh environment variables.
$ source ~/.bashrc
见到的方法:
在Mxnet目录中执行:
cd python; python setup.py install
然后说要安装numpy, 我也不知道我是怎么就自己装上了. 安装的命令如下:
sudo apt-get install python-numpy
下面几个不知道干什么用, 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
测试一下mxnet能否运行:
测试方法1: 可以按照Mxnet官方的方法, 在命令行中逐行输入下面命令:
python
import mxnet as mx
a = mx.nd.ones((2, 3), mx.gpu())
print ((a * 2).asnumpy())
会显示
[[ 2. 2. 2.]
[ 2. 2. 2.]]
这时候在Ubuntu的terminal中逐行执行,以及在pycharm中写成一个.py文件然后执行,都能正确输出结果; 但是从pycharm的terminal中逐行执行, 就始终报错, 让我用”USE_CUDA = 1” 重新编译mxnet来生成新的dmlc-core文件夹里的东西… 玄学…
测试方法2: 在mxnet路径下执行
sudo python example/image-classification/train_mnist.py
这时可能会报错, 提示在import requests时没有这个包. requests包是一个和http什么什么有关的东西, 我估计是首次执行的时候需要自动下载数据集, 而下载的命令写在train_mnist.py中, 调用了requests里的api. 这里手动下载一下就行了:
pip install requests