01 目标
- 在没有Linux环境的前提下,从头开始安装Linux环境与cuda
- 并且编译安装mxnet的gpu加速环境
- 及配置python接口。
02 步骤
- 安装ubuntu 16.04
- 安装cuda 8.0
- 安装anaconda3
- 编译mxnet 0.94
- 安装opencv3
03 说明
- 为什么使用16.04?
目前最新的长期支持版本,安装一些新玩意的时候,少解决大量的依赖,比如最常用的gcc版本依赖。
- 为什么使用cuda?
这还用说,玩深度学习,必备环境。
- 为什么使用anaconda3?
集成Python大量包,方便,方便,还是TMD的方便。
- 为什么使用MXNet?
因为速度快,多API支持,多GPU支持,……
- 为什么使用opencv?
这个……,据说scikit-image更好用呢。只是,目前图像领域的标配吧。为什么使用编译好的包安装?等你从源码编译安装过就知道了。
环境配置,她就是一个磨人的小妖精,不注意的话,会让很多初学者折在里面。
04 具体步骤要点记录
4.1 安装Ubuntu 16.04
使用etcher写入镜像到u盘,unetbootin写入的镜像老是会在校验文件的时候出现问题,目前16.04的镜像检查中已经能识别出unetbootin了,并会做相应的提示。
etcher可以用在mac,windows, linux环境下,下面是其界面:
剩下的Linux安装,就是常规的步骤了,不述。
4.2 安装cuda
下载安装cuda环境,差不多2G,使用下面命令进行安装:
sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.deb
sudo apt-get update
sudo apt-get install cuda
在安装cuda之前,不需要先安装Nvidia的驱动程序,cuda已经包括了驱动。必须要注意一点的是:关闭bios的UEFI安全功能
, 因为uefi出于安全性,要求所有内核模块必须要签名,像Nvidia这样的第三方驱动模块,签名不好弄。安装过程中,不关闭UEFI功能,始终无法加载nvidia模块。
使用nvidia-smi命令,如果显示正常,说明cuda安装成功。
4.3 安装anaconda3
下载最新的Anaconda3版本(使用Python3),国内请使用清华大学的地址下载:
选择最新的4.3版本,差不多500M,下载下来使用命令安装:
sudo bash Anaconda3-4.3.0-Linux-x86_64.sh
4.4 编译mxnet
下载最新源码,编译mxnet:
# clone源码
git clone https://github.com/dmlc/mxnet.git ~/mxnet --recursive
# 要求环境
sudo apt-get update
sudo apt-get install -y build-essential libatlas-base-dev libopencv-dev
# 编辑配置文件: mxnet/make/config.mk
USE_CUDA = 1
USE_CUDA_PATH = /usr/local/cuda
USE_OPENCV = 1
# 使用全部cpu核编译(不报错就编译成功)
make -j$(nproc)
# 安装python包
cd python
# 使用前面安装的anaconda3环境
/opt/anaconda3/bin/python setup.py install
此时,打开ipython交互环境,import mxnet,还是会报GOMP版本的错误。根据错误的信息,搜索各种答案,应该是当前系统的gcc版本是5.4,因此编译mxnet是支持了GOMP协议的4.0版本,而anaconda3使用的是gcc4.8编译,只支持GOMP协议的3.0。
最简单的方法,就是更新anaconda3的两个库文件:
# libgomp.so
ln -sf /usr/lib/x86_64-linux-gnu/libgomp.so.1 /opt/anaconda3/lib/libgomp.so.1.0.0
ln -sf /usr/lib/x86_64-linux-gnu/libgomp.so.1 /opt/anaconda3/pkgs/libgcc-4.8.5-2/lib/libgomp.so.1.0.0
# libstdc++.so
ln -sf /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /opt/anaconda3/pkgs/libgcc-4.8.5-2/lib/libstdc++.so.6
ln -sf /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /opt/anaconda3/lib/libstdc++.so.6
安装opencv3的python包
因为opencv3的编译过程太麻烦,曾经尝试过编译opencv3的python2与python3,中途出了很多问题,最终的python2环境也始终无法应用。
后来找到一个简单方法,直接下载编译好的opencv3包,使用conda命令安装。
根据自己的版本,去下面地址下载对应的包:
比如,下载了包:opencv3-3.1.0-py36_0.tar.bz2
直接使用conda命令安装:
/opt/anaconda3/bin/conda install opencv3-3.1.0-py36_0.tar.bz2
在ipython交互下,import cv2不报错,即安装成功。
最麻烦的环境已经配置好了,可以开始你的MxNet探索了。