从0搭建MXNet环境

浏览: 1413


01 目标

  1. 在没有Linux环境的前提下,从头开始安装Linux环境与cuda

  2. 并且编译安装mxnet的gpu加速环境

  3. 及配置python接口。

02 步骤

  1. 安装ubuntu 16.04

  2. 安装cuda 8.0

  3. 安装anaconda3

  4. 编译mxnet 0.94

  5. 安装opencv3

03 说明

  1. 为什么使用16.04?

    目前最新的长期支持版本,安装一些新玩意的时候,少解决大量的依赖,比如最常用的gcc版本依赖。

  2. 为什么使用cuda?

    这还用说,玩深度学习,必备环境。

  3. 为什么使用anaconda3?

    集成Python大量包,方便,方便,还是TMD的方便。

  4. 为什么使用MXNet?

    因为速度快,多API支持,多GPU支持,……

  5. 为什么使用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,使用下面命令进行安装:

  1. sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.deb

  2. sudo apt-get update

  3. sudo apt-get install cuda

在安装cuda之前,不需要先安装Nvidia的驱动程序,cuda已经包括了驱动。必须要注意一点的是:关闭bios的UEFI安全功能, 因为uefi出于安全性,要求所有内核模块必须要签名,像Nvidia这样的第三方驱动模块,签名不好弄。安装过程中,不关闭UEFI功能,始终无法加载nvidia模块。

使用nvidia-smi命令,如果显示正常,说明cuda安装成功。

4.3 安装anaconda3

下载最新的Anaconda3版本(使用Python3),国内请使用清华大学的地址下载:

https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/

选择最新的4.3版本,差不多500M,下载下来使用命令安装:

  1. sudo bash Anaconda3-4.3.0-Linux-x86_64.sh  

4.4 编译mxnet

下载最新源码,编译mxnet:

  1. # clone源码

  2. git clone https://github.com/dmlc/mxnet.git ~/mxnet --recursive

  3. # 要求环境

  4. sudo apt-get update

  5. sudo apt-get install -y build-essential libatlas-base-dev libopencv-dev

  6. # 编辑配置文件: mxnet/make/config.mk

  7. USE_CUDA = 1

  8. USE_CUDA_PATH = /usr/local/cuda

  9. USE_OPENCV = 1

  10. # 使用全部cpu核编译(不报错就编译成功)

  11. make -j$(nproc)

  12. # 安装python包

  13. cd python

  14. # 使用前面安装的anaconda3环境

  15. /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的两个库文件:

  1. # libgomp.so

  2. ln -sf /usr/lib/x86_64-linux-gnu/libgomp.so.1 /opt/anaconda3/lib/libgomp.so.1.0.0

  3. 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

  4. # libstdc++.so

  5. ln -sf /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /opt/anaconda3/pkgs/libgcc-4.8.5-2/lib/libstdc++.so.6

  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命令安装。

根据自己的版本,去下面地址下载对应的包:

https://anaconda.org/menpo/opencv3/files

比如,下载了包:opencv3-3.1.0-py36_0.tar.bz2

直接使用conda命令安装:

  1. /opt/anaconda3/bin/conda install opencv3-3.1.0-py36_0.tar.bz2

在ipython交互下,import cv2不报错,即安装成功。

最麻烦的环境已经配置好了,可以开始你的MXNet探索了。



推荐 0
本文由 全栈数据 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册