文档章节

创建一个MXNET和Scala的Docker环境

q
 qinhui99
发布于 2017/03/27 13:35
字数 1181
阅读 128
收藏 0

因为MXNET的scala接口目前不支持windows, 所以在周末做了一个MXNET和Scala的Docker,顺便跑跑看MXNET0.94版本有什么新的东西。这个Docker测试了两天,用起来还不错,于是把制作过程记录下来以备参考。相关的步骤:

1、  安装Docker.  https://www.docker.com/

2、启动Docker, 下载MXNET对应的DOCKER文件。https://hub.docker.com/r/kaixhin/mxnet/

启动Docker的时候会自动创建一个名称为default的虚拟机,并打开一个Docker客户端窗口。在客户端窗口输入命令:

docker pull kaixhin/mxnet

备注:这个不是官方版本,但是比官方版本的Docker文件要新。此外,这个是基于CPU的版本。想要GPU版本请浏览https://hub.docker.com/r/kaixhin

这个Dcoker文件大概有500多M,中国的网络你知道的,要准备好比较快的网络。否则…

 

3、创建共享目录和运行kaixhin/mxnet的容器

启动Docker自带的VirtualBox管理器,为default的虚拟机设置共享目录。例如,我本地的F:\win_folder,共享文件名是win_folder。

 

切换到Docker客户端窗口, 输入命令:

mkdir -p /home/docker/vm_folder

sudo mount -t vboxsf win_folder /home/docker/vm_folder

这两句命令把前面设置的共享目录win_folder和vm_folder挂接在一起。

 

启动容器:

docker run -it -v /home/docker/vm_folder:/container_folder  kaixhin/mxnet bash

这一行命令把共享目录映射到容器里的/container_folder, 并且启动容器。容器启动完后自动切换到mxnet目录下。例如,

root@6ab51b5fcbe9:~/mxnet#

 

4、安装JDK

首先手工下载jdk linux 64位版本。然后在Dcoker客户端输入:
sudo mkdir /usr/lib/jvm
sudo tar zxvf jdk-8u121-linux-x64.tar.gz -C /usr/lib/jvm
cd /usr/lib/jvm
ls
sudo mv jdk1.8.0_121 java

 

安装vim

sudo apt-get install vim-gtk

 

sudo vim ~/.bashrc

加入如下内容

export JAVA_HOME=/usr/lib/jvm/java
export JRE_HOME=${JAVA_HOME}/jre 
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib 

export PATH=${JAVA_HOME}/bin:$PATH

 

配置默认JDK版本

sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java/bin/java 300 
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java/bin/javac 300 
sudo update-alternatives --install /usr/bin/jar jar /usr/lib/jvm/java/bin/jar 300  
sudo update-alternatives --install /usr/bin/javah javah /usr/lib/jvm/java/bin/javah 300  

sudo update-alternatives --install /usr/bin/javap javap /usr/lib/jvm/java/bin/javap 300

 

然后执行

sudo update-alternatives --config java

 

 

5、安装maven

首先手工下载maven. 然后在Dcoker客户端输入:
sudo mkdir /usr/lib/maven
$ sudo tar zxvf apache-maven-3.3.9-bin.tar.gz -C /usr/lib/maven
$ cd /usr/lib/maven
$ls
$ sudo mv apache-maven-3.3.9 maven
 
$ sudo vim ~/.bashrc
在文件末尾追加:
# set maven environment
export M2_HOME=/usr/lib/maven/maven
export PATH=$M2_HOME/bin:$PATH
export  MAVEN_OPTS="-Xms256m -Xmx512m"
 
使环境变量生效
source ~/.bashrc

验证maven是否安装成功。

$ mvn –version

6、编译、打包生成支持scala的jar包和so文件

在Docker客户端窗口输入:

cd  /root/mxnet/

make scalapkg

这个编译打包的过程时间有些长,因为会从网络下载大概200多M的各种jar包。

这个命令结束后,会生成几个jar包,包括:

mxnet-core_2.11-0.1.2-SNAPSHOT-sources.jar (mxnet java接口源代码包)

mxnet-core_2.11-0.1.2-SNAPSHOT.jar(mxnet java接口包)

mxnet-full_2.11-linux-x86_64-cpu-0.1.2-SNAPSHOT.jar(大而全的编译用的包。里面包含mxnet java实现包和scala包以及slf4j包)

 

7、安装scala

首先下载scala-2.11.8.tgz。 因为Mxnet本身用的就是2.11.8,所以配合着下载这个版本。

在Dcoker客户端输入:

sudo mkdir /usr/lib/scala
$ sudo tar xvf scala-2.11.8.tgz -C /usr/lib/scala
$ cd /usr/lib/scala
$ls
 
$ sudo vim ~/.bashrc

在最后部分添加

#set scala

export SCALA_HOME=/usr/lib/scala/scala-2.11.8

export PATH=$PATH:${SCALA_HOME}/bin

 

重新生效

source ~/.bashrc

 

测试

scala –version

这样这个docker基本上就配置好了,可以在里面跑用Python,java和scala对mxnet进行调用的程序。

8、对容器提交前面所作的修改。(这步不要忘了)

在Dcoker客户端输入:

exit

docker ps –a

这一行会列出当前的所有容器。例如,

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES

6ab51b5fcbe9        mxnet3              "bash"              15 hours ago        Exited (0) 50 seconds ago                       trusting_stonebraker

留意一下你的CONTAINER ID,例如这里的6ab51b5fcbe9 。 下面会以6ab51b5fcbe9这个ID的容器提交修改。输入命令:

docker commit 6ab51b5fcbe9  mxnet

这行命令的意思是把6ab51b5fcbe9这个ID的容器提交并制作一个镜像image, 这个镜像的名字是mxnet。

命令执行完后将生成一个新的image mxnet。 这个mxnet的镜像将保存着我们前面所作的那些改动内容。

使用查看image命令

docker images

将会显示所有的image. 例如,

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

mxnet              latest              68c8459ff149        15 hours ago        2.4 GB

 

最后提醒,在下一次启动容器的时候,我们需要从镜像mxnet来启动,而不是原来的kaixhin/mxnet。

启动mxnet容器的命令:

docker run -it -v /home/docker/vm_folder:/container_folder  mxnet bash

 

© 著作权归作者所有

q
粉丝 66
博文 73
码字总数 34091
作品 0
深圳
程序员
私信 提问
运用 MXNet Scala API 接口进行图像分类

雷锋网(公众号:雷锋网)按:本文为雷锋字幕组编译的技术博客,原标题 Image Classification with MXNet Scala Inference API,作者为 Qing Lan, Roshani Nagmote 翻译 | 朱茵 整理 | 凡江 随...

雷锋字幕组
2018/07/20
0
0
深度学习框架 MXNet 成为 Apache 孵化器项目

MXNet 是一个轻量级、可移植、灵活的分布式深度学习框架,2017 年 1 月 23 日,该项目进入 Apache 基金会,成为 Apache 的孵化器项目。 MXNet 项目由 DMLC(Distributied (Deep) Machine ...

局长
2017/02/06
3.3K
5
云上深度学习实践(二)-云上MXNet实践

目录 云上深度学习实践(一)-GPU云服务器TensorFlow单机多卡训练性能实践 云上深度学习实践(二)-云上MXNet实践 1 MXNet 简介 1.1 MXNet特点 MXNet是一个全功能,灵活可编程和高扩展性的深...

撷峰
2018/07/13
0
0
MXNet/Gluon 中网络和参数的存取方式

Gluon是MXNet的高层封装,网络设计简单易用,与Keras类似。随着深度学习技术的普及,类似于Gluon这种,高层封装的深度学习框架,被越来越多的开发者接受和使用。 在开发深度学习算法时,必然...

SpikeKing
2018/05/29
0
0
mxnet训练模型、导出模型、加载模型 进行预测(python和C++)

版权声明:原创文章如需转载,请在左侧博主描述栏目扫码联系我并取得授权,谢谢 https://blog.csdn.net/u012234115/article/details/80656030 mxnet支持将已训练的模型导出成网络和参数分离的...

踏莎行hyx
2018/06/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

读书笔记:深入理解ES6 (五)

第五章 解构:使数据访问更便捷 第1节 为什么使用解构功能?   在ES5中,开发者们从对象、数组中获取特定数据并赋值给变量,编写了很多看起来同质化的代码。例如: 1 let options = {2 ...

张森ZS
13分钟前
10
0
CentOS7 yum方式安装MySQL5.7

在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB。 1 下载并安装MySQL官方的 Yum Repository [root@localho...

roockee
22分钟前
7
0
Allegro三种自定义设置快捷键的方法

Allegro自定义设置快捷键的三种方法: 1、在Allegro PCB editor 命令窗口直接定义 2、通过修改用户变量env文件来设置快捷键 3、定义笔画为快捷键 1、在Allegro PCB editor 命令窗口直接定义 ...

demyar
26分钟前
12
0
如何做一张能让人眼前一亮的大屏?

作为在职场驰骋的社会人,提到数据可视化大家应该都不陌生了。数据可视化的作用也不用我多说,主要是利用图形化手段,更清晰直观地将数据展示。多层次、交互式的可视化分析能够方便决策者理解...

朕想上头条
27分钟前
7
0
TL138/1808/6748-EthEVM开发板硬件CPU、FLASH、RAM

TL138/1808/6748-EthEVM是广州创龙基于SOM-TL138/1808/6748核心板开发的一款开发板,具有三个网络接口。由于SOM-TL138/1808/6748核心板管脚兼容,所以此三个核心板共用同一个底板。开发板采用...

Tronlong创龙
31分钟前
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部