MXNet 分布式环境部署

1. MxNet 分布式介绍

先忽略吧, 回头在填上去

2. 分布式部署方法

假设有两台主机ip地址分别是 xxx.xxx.xxx.114xxx.xxx.xxx.111

这两台主机的环境如下

ubuntu Server 16.04SLT
python3.6| anaconda3
opencv3
cuda8
cudnn7

2.2 Step1. 搭建MxNet环境

根据文献[^Installing MXNet]以源代码的方式安装MxNet; 注意每台机器生配置的环境需要保持一致;

需要分别在114 和111主机上搭建MxNet环境

MxNet的安装方法有很多,免密码登录只是其中的一种方式. 建议使用源代码的方式去安装, 因为后面需要使用MxMet的源代码里面的文件.

#进入anaconda虚拟环境
source activate base # root # 下载MxNet1.2.1 源代码
wget https://github.com/apache/incubator-mxnet/releases/download/1.2.1/apache-mxnet-src-1.2.1-incubating.tar.gz # 解压源代码到目录 ~/source/下面
tar -zvxf apache-mxnet-src-1.2.1-incubating.tar.gz -d ~/source/
# 进入source目录,并编译
cd ~/source/apache-mxnet-src-1.2.1-incubating
# 编译参数解析
# USE_OPENCV=1 代表使用opencv
# USE_CUDA_PATH=/usr/local/cuda 是指定使用的cuda路径
#USE_CUDNN=1是使用cudann
make -j $(nproc) USE_OPENCV=1 USE_BLAS=openblas USE_CUDA=1 USE_CUDA_PATH=/usr/local/cuda USE_CUDNN=1 # 进入源文件的python目录, 编译python接口的MxNet
cd ~/source/apache-mxnet-src-1.2.1-incubating
python setup.py install

等待安装好以后,进如python终端,测试是否可以识别mxnet即可:

import mxnet
print(mxnet.__version__) # 应该可以输出版本 1.2.1

好, 到此为止,MxNet安装完毕;

2.1 Step2. 设置SSH免密码登录

在网上找到一片很靠谱的博客,参考这篇文章即可,不再赘述.

ubuntu开启SSH服务远程登录

2.3 Step3. 搭建分布式的环境

解析:

两台主机免密码互联是分布式之间数据传递的前提,再搭建分布式之前,一定要确保第2步没有问题;

mxNet的分布式运行比较简单,在tools文件夹中的launcher.py是管理分布式下运行的文件的,直接在哪运行该文件的时候添加相应的参数即可;

在安装好MxNet和设置好ssh免密码登录以后就可以使用了, 基本上不需要添加任何设置.

为了说明运行参数,同时为了测试分布式环境,我们将在分布式下运行apache-mxnet-src-1.2.1-incubating/examples/image-classification/train_mnist.py

进入源代码的目录下的tools文件夹, 找到launcher.py文件

cd ~/source/apache-mxnet-src-1.2.1-incubating/tools

在此处建立文件名host文件, 并在该文件中输入两台主机的ip地址;

xxx.xx.xxx.111
aaa.aa.aaa.114

ps: 这个名字host可以随意的起的,是为了在运行lanucher的时候让服务器知道在哪里进行分布式运行

运行launch.py

MxNet官方文档中有详细介绍MxNet分布式的使用方式,可以查看官方文档的详细内容[1]

python launch.py -n 2 -H host --launcher ssh `which python` ../example/image-classification/train_mnist.py
# --n 是代表要启动几台host
# -H 是要指定host的ip地址

如果不出任何错误,且train_mnist.py运行成功表明环境搭建成功了.

参考文献

[^Installing MXNet]: Installing MXNet


  1. distributed_training ↩︎

MXNet 分布式环境部署的更多相关文章

  1. ubuntu12.04+hadoop2.2.0+zookeeper3.4.5+hbase0.96.2+hive0.13.1伪分布式环境部署

    目录: 一.hadoop2.2.0.zookeeper3.4.5.hbase0.96.2.hive0.13.1都是什么? 二.这些软件在哪里下载? 三.如何安装 1.安装JDK 2.用parallel ...

  2. Flume环境部署和配置详解及案例大全

    flume是一个分布式.可靠.和高可用的海量日志采集.聚合和传输的系统.支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(比如文本.HDF ...

  3. 分布式版本库——Windows下Git的环境部署以及在GitHub上开源自己的项目

    分布式版本库--Windows下Git的环境部署以及在GitHub上开源自己的项目 这几天着实忙的焦头烂额,可惜不是搞技术,今天周日,难得闲下来,写篇大家都想学习的Git教程,其实廖雪峰老师的网站已经 ...

  4. Hadoop1.X集群完全分布式模式环境部署

    Hadoop1.X集群完全分布式模式环境部署 1 Hadoop简介 Hadoop是Apache软件基金会旗下的一个开源分布式计算平台.以Hadoop分布式文件系统(HDFS,Hadoop Distri ...

  5. quartz集群分布式(并发)部署解决方案-Spring

    项目中使用分布式并发部署定时任务,多台跨JVM,按照常理逻辑每个JVM的定时任务会各自运行,这样就会存在问题,多台分布式JVM机器的应用服务同时干活,一个是加重服务负担,另外一个是存在严重的逻辑问题, ...

  6. Flume+Kafka+Strom基于伪分布式环境的结合使用

    目录: 一.Flume.Kafka.Storm是什么,如何安装? 二.Flume.Kafka.Storm如何结合使用? 1) 原理是什么? 2) Flume和Kafka的整合  3) Kafka和St ...

  7. ubuntu + hadoop2.5.2分布式环境配置

    ubuntu + hadoop2.5.2分布式环境配置 我之前有详细写过hadoop-0.20.203.0rc1版本的环境搭建 hadoop学习笔记——环境搭建 http://www.cnblogs. ...

  8. 分布式环境下限流方案的实现redis RateLimiter Guava,Token Bucket, Leaky Bucket

    业务背景介绍 对于web应用的限流,光看标题,似乎过于抽象,难以理解,那我们还是以具体的某一个应用场景来引入这个话题吧. 在日常生活中,我们肯定收到过不少不少这样的短信,“双11约吗?,千款….”,“ ...

  9. Hadoop基础教程之分布式环境搭建

    前面,我们已经在单机上把Hadoop运行起来了,但我们知道Hadoop支持分布式的,而它的优点就是在分布上突出的,所以我们得搭个环境模拟一下. 在这里,我们采用这样的策略来模拟环境,我们使用3台ubu ...

随机推荐

  1. JAVA数据结构--AVL树的实现

    AVL树的定义 在计算机科学中,AVL树是最先发明的自平衡二叉查找树.在AVL树中任何节点的两个子树的高度最大差别为1,所以它也被称为高度平衡树.查找.插入和删除在平均和最坏情况下的时间复杂度都是.增 ...

  2. 数组去重 && 快速排序 && 数组中重复元素最多的 && 深拷贝

    var arr0 = [1,3,3,3,4,4,4,4,5,5]; var arr1 = [10,9,2,5,7,34,65,48,90,103]; var newArr=[]; /* for(var ...

  3. Netstat 的 10 个基本用法

    Netstat 简介 Netstat 是一款命令行工具,可用于列出系统上所有的网络套接字连接情况,包括 tcp, udp 以及 unix 套接字,另外它还能列出处于监听状态(即等待接入请求)的套接字. ...

  4. IIS进程池异常崩溃,导致网站 service unavailable,原因排查与记录。

    昨晚十点钟的样子,网站崩溃,开始 service unavailable,最近开始业务高峰,心里一惊,麻痹肯定进程池又异常崩溃了.又碰到什么问题?上次是因为一个异步线程的问题,导致了进程池直接崩溃,后 ...

  5. 后台如何通过Request取得多个含有相同name的控件的值?

    在Asp.net开发中,所有html控件的值都是可以在服务器端用后台代码的Request[name]来获取其值的.但如果有多个相同name的Html控件提交到后台,怎么分别取各个控件的值呢?而多数情况 ...

  6. JUnit快速入门

    一.一个简单的Junit测试流程: 1.在项目中导入junit-4.7.jar包, 方法:右击项目,选择Build Path->Configure Build Path->Librarie ...

  7. android viewpager 拿到当前显示的 fragment 的实例

    一个 ViewPager 通过 FragmentPagerAdapter 绑定了 3 个 fragment 可以通过 Fragment fragment = getSupportFragmentMan ...

  8. 【wordpress】wordpress初探

    接下来,开始wordpress之旅! 访问wordpress文件夹下的index.php 点击现在就开始. 这里要求我们输入数据库名. 所以先去mysql中新建一个wordpress库 create ...

  9. Unity自动打包工具

    转载 https://blog.csdn.net/ynnmnm/article/details/36774715 最开始有写打包工具的想法,是因为看到<啪啪三国>王伟峰分享的一张图,他们有 ...

  10. Java 合并两个有序链表

    编程实现合并两个有序(假定为降序)单链表的函数,输入为两个有序链表的头结点,函数返回合并后新的链表的头节点, 要求:不能另外开辟新的内存存放合并的链表. 递归方式: /* * 递归方式 */ publ ...