PS-Lite使用

作者: 王勇1024 | 来源:发表于2019-03-16 22:45 被阅读0次

入门

调试PS-Lite

一种调试方式是记录所有的通信日志。可以通过指定\color{red}{PS_VERBOSE}环境变量来实现:

  • \color{red}{PS\_VERBOSE=1}:记录连接信息
  • \color{red}{PS\_VERBOSE=2}:记录所有数据通信信息
    例如,在根目录执行\color{red}{make test; cd tests}。然后
export PS_VERBOSE=1; ./local.sh 1 1 ./test_connection

可能会有如下输出

[19:57:18] src/van.cc:72: Node Info: role=schedulerid=1, ip=127.0.0.1, port=8000
[19:57:18] src/van.cc:72: Node Info: role=worker, ip=128.2.211.110, port=58442
[19:57:18] src/van.cc:72: Node Info: role=server, ip=128.2.211.110, port=40112
[19:57:18] src/van.cc:336: assign rank=8 to node role=server, ip=128.2.211.110, port=40112
[19:57:18] src/van.cc:336: assign rank=9 to node role=worker, ip=128.2.211.110, port=58442
[19:57:18] src/van.cc:347: the scheduler is connected to 1 workers and 1 servers
[19:57:18] src/van.cc:354: S[8] is connected to others
[19:57:18] src/van.cc:354: W[9] is connected to others
[19:57:18] src/van.cc:296: H[1] is stopped
[19:57:18] src/van.cc:296: S[8] is stopped
[19:57:18] src/van.cc:296: W[9] is stopped

这里\color{red}{H},\color{red}{S}\color{red}{W}分别表示scheduler,server和worker。

使用特定的网络接口

默认情况下PS-Lite会自动选择一个可用的网络接口。但是,对于有多个网络接口的机器,我们可以通过环境变量\color{red}{DMLC_INTERFACE}来指定网络接口。例如,要使用无限带\color{red}{ib0}接口,我们可以采用如下方式:

export DMLC_INTERFACE=ib0; commands_to_run

如果所有的PS-Lite节点都运行在同一台机器上,我们可以通过设置\color{red}{DMLC_LOCAL}来使用内存拷贝取代本地网络接口来提高性能:

export DMLC_LOCAL=1; commands_to_run

启动PS-Lite的环境变量

如果我们想将PS-Lite移植到除\color{red}{ssh}\color{red}{mpirun}\color{red}{yarn}\color{red}{sge}之外的其它集群资源管理器上,本章将会很有用。
要想启动PS-Lite,我们需要提供为下面的环境变量提供正确的值:

  • \color{red}{DMLC\_NUM\_WORKER}:worker数量
  • \color{red}{DMLC\_NUM\_SERVER}:server数量
  • \color{red}{DMLC\_ROLE}:当前节点的角色,可以是worker,server或scheduler
  • \color{red}{DMLC\_PS\_ROOT\_URI}:scheduler节点的ip或域名
  • \color{red}{DMLC\_PS\_ROOT\_PORT}:scheduler节点监听的端口

不可靠网络下的重传

网络传输中出现消息丢失是比较常见的现象,当一个重要的消息传递失败时,程序会挂起。这时,可以让PS-Lite为每一个消息发送一个额外的ACK,如果在指定时间内没有收到ACK,则重传这条消息。要想启动这个功能,我们可以设置下面的环境变量:

  • \color{red}{PS\_RESEND}:是否启动重传机制,默认是0.
  • \color{red}{PS\_RESEND\_TIMEOUT}:如果超过指定的毫秒没有收到ACK,PS_Lite就会重发该消息,默认是1000.
    我们可以设置\color{red}{PS\_DROP\_MSG}来指定销毁接受到的消息的比例来用于测试。例如,\color{red}{PS\_DROP\_MSG=10}会将10%收到的消息销毁。

相关文章

  • PS-Lite使用

    入门 调试PS-Lite 一种调试方式是记录所有的通信日志。可以通过指定环境变量来实现: :记录连接信息 :记录所...

  • ps-lite概述

    概述 ps-lite旨在构建高可用分布式的机器学习应用。在ps-lite框架中,多个节点运行在多台物理机器上用于处...

  • ps-lite

    编译测试 mxnet & kvstore & ps-lite postoffice postoffice.cc创建...

  • 任务启动过程调用关系简化

    背景 两年前入职公司的时候,我们的机器学习任务都是启动在Mesos集群上,当时使用的训练框架还是ps-lite。一...

  • PS-Lite编译(Mac)

    下载PS-Lite源码 安装CLion 编译源码 make 编译出错 make: *** [/Users/admi...

  • mxnet分布式2

    mxnet分布式2 ps-lite论文阅读 https://www.usenix.org/system/files...

  • ps-lite架构解析

    数据流

  • PS-Lite核心类

    简单看一下各个类以及它们之间的关系 Postoffice是全局管理类,单例模式创建。管理当前节点角色、其他节点的连...

  • ps-lite相关环境搭建

    华丽丽跳坑了…今天用分布式的ps跑了线性规划…前期环境的搭建踩了不少坑,在此记录一下。环境:Mac OS 10.1...

  • 基于DC/OS建立分布式机器学习系统

    之前基于ps-lite实现了word2vec。下一步就是让这个算法能够分布式的跑起来。最简单的分布式方案大概是如下...

网友评论

    本文标题:PS-Lite使用

    本文链接:https://www.haomeiwen.com/subject/xbuemqtx.html