现在计算机视觉领域深度学习已经成为主流,我在美读研的时候,深度学习并未取得大的突破,当时流行的图像识别分类器多采用手工设计特征+编码+SVM(支持向量机)框架下的算法,终于到了2012年(我刚毕业),在ILSVRC上,alexnet的横空出世,将分类错误率从之前的25.7%降到了15.3%,这只是一个5卷积层+2全连接层的卷积神经网络,却一下取得了10%的突破,这是深度学习在CV领域的一次翻身仗,自此以后,ImageNet的参赛者几乎全体转向了基于卷积神经网络的深度学习算法。基于此的应用如雨后春笋般一夜之间全冒了出来。深度学习尤其是卷积神经网络就如同万能的大杀器,在计算机视觉的各个领域开始发挥作用。
cuda的应用在这一进程中起到了毋庸置疑的作用,所以想要在这一领域开展工作,使用正确的硬件和计算框架是很重要的,本文提供了一个快速搭建MXNET环境的方案,虽然TensorFlow和Caffe是更加主流,但是MXnet作为Amazon主推的深度学习平台,具有轻量级,高性能等特点,并且支持多种语言,可以说是一个非常具有潜力的框架。
我的硬件环境是一台GPU服务器,有2块tesla p100进行GPU运算,对于一般人来说,你的硬件至少需要一个支持cuda的英伟达显卡,并且安装了任意linux环境,常规安装教程很多,但都很繁琐,由于我是用docker进行部署,所以可以非常快速的进行环境搭建,会用docker并且想省去安装过程的同学可以参考以下教程。
前提是你的linux环境中已经安装了docker,nvidia cuda驱动,NVIDIA docker等,这些步骤在网上有很多的教程,在此不表
获取镜像
https://hub.docker.com/search/?isAutomated=0&isOfficial=0&page=1&pullCount=0&q=mxnet&starCount=0 在docker官方取得你需要镜像的信息,并执行docker pull命令
docker pull mxnet/python:你的版本tag。
如果镜像下载速度慢,可以搜一些国内镜像服务器的地址,例如 docker pull registry.docker-cn.com/mxnet/python:1.3.0_gpu_cu90_mkl
随后启动该镜像:
启动镜像
执行docker ps -a ,获取你刚pull的镜像的 id,即下文命令 commit后面的字段
给你的镜像取一个名字
docker commit 90b97b96394a example:0.1
随后启动该镜像,如果需要进行外部访问,比如启动一个jupyter在浏览器中进行编码,需要配置端口映射,全部命令如下:
docker run -itd --runtime=nvidia --name=example -p 19999:8888 -p 16007:6006 example:0.2 /bin/bash
这时镜像应该已经启动,使用docker ps -a 指令查看容器运行状态,如果正常运行,即可进入容器。
执行命令 docker exec -it example bash 进入容器,此时已经配好了mxnet环境,进入python,随便敲几行代码进行测试。
我在实际使用过程中,发现该容器缺了很多基础组件,如python-dev ,matplotlib等,甚至连vi/vim都没有,所以要安装jupyter的话,注意添加相关依赖,如果报错缺包,安装这些包即可。 jupyter安装教程也很多,在此不表。
启动jupyter后,即可愉快的进行各种实验啦~