并行深度学习系统 SpeeDO

Apache
Scala
跨平台
2016-06-02
cyruschoi

最近,AlphaGo又带起了一波深度学习的热潮。深度学习在很多领域都大幅提高了模型的精度,使得很多以前在实验室中的技术得以运用到日常的生活之中。然而,大多数深度学习网络非常复杂,需要大量的训练样本进行训练,很多网络需要一次训练,同时额外多次的训练来调参数。时间效率上远远无法满足当前的工业需求。因此需要并行的深度学习系统提高训练速度。

各大公司在构建并行深度学习系统上投入了大量的精力,包括谷歌、Facebook、微软、腾讯和百度等等。为了提高算法的并行效率,这些系统大部分使用了多机多GPU的方式。所谓多机,即是大量的机器通过网络连接组成训练集群;多GPU即是集群内部的每台机器上包含多个GPU,通过数据并行(每个GPU训练部分数据)、模型并行(每个GPU训练部分网络)或者两者混合的方式提高加快训练速度。GPU浮点运行效率很高,这导致了并行系统的主要瓶颈在于I/O效率,因此这些系统使用了诸如InfiniBand和RDMA(Remote Direct Memory Access,全称远程直接数据存取,专用于解决网络传输中服务器端数据处理的延迟)等高性能技术, 而这些技术需要昂贵的硬件支持,大大增加了系统构建和维护的成本和难度,导致这些系统很难复制和普及到通用场景。

SpeeDO(Open DEEP learning System的逆序)是一个为通用硬件设计的并行深度学习系统。SpeeDO不需要特殊的I/O硬件,支持CPU/GPU集群,因此可以很方便地在各种云端环境上部署,如AWS、Google GCE、Microsoft Azure等等。

SpeeDO采用了目前通用的参数服务器(parameter server)架构,依赖一系列基于JVM的开源库,使用Scala语言开发。

SpeeDO的架构图如下图所示:


流程图如下图所示:

SpeeDO的主要组件及其功能如下:

Caffe:开源深度学习库,基于C++,支持CPU/GPU。原版不支持多GPU/多机并行。

Akka:JVM上的消息队列库,负责参数服务器和工作节点之间的并发消息处理。

Redis:基于内存的高效并行Key-Value数据库。主要用于在参数服务器和工作节点之间传递训练的模型。这些模型一般比较大(几十至上千MB不等),不适合直接通过Akka进行传输。

Yarn:Hadoop2的资源管理组件,实现在多台机器上一键部署参数服务器和工作节点,实时监控各节点的运行状态,处理异常。

SpeeDO提供docker镜像(只支持CPU)以方便系统的快速构建和测试,获取镜像:docker pull obdg/speedo:latest,使用方法请参考:https://github.com/openbigdatagroup/speedo

关于SpeeDO 的更多细节,可以参阅发表在NIPS 2015 Machine Learning Systems Workshop上的论文:http://learningsys.org/papers/LearningSys_2015_paper_13.pdf

SpeeDO的代码在Github上开源:https://github.com/openbigdatagroup/speedo,并提供了详细的安装脚本和Docker文件。

加载中

评论(0)

暂无评论

暂无资讯

暂无问答

转盘不转动的问题

转盘抽奖,把转盘图片作为背景时,在ie低版本浏览器转盘不转动的问题,这里需要注意的是转盘图片必须要以img标签出现

2015/07/07 09:30
64
0
Java 各种文件类型的Content Type

contentType = { "load": "text/html", "123": "application/vnd.lotus-1-2-3", "3ds": "image/x-3ds", "3g2": "video/3gpp", "3ga": "video/3gpp", "3gp": "video/3gpp", "3gpp": "video/3g...

2015/06/18 15:52
14
0
AOP 的利器:ASM 3.0 介绍

引言 什么是 ASM ? ASM 是一个 Java 字节码操控框架。它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。...

2013/09/21 13:06
514
0
ASM 介绍

引言 什么是 ASM ? ASM 是一个 Java 字节码操控框架。它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。...

2015/08/03 01:25
218
0
Slackware安装包全系列说明

以下是slackware默认的主要tagfile集,加上我自己的一些简短翻译,希望对大家有点帮助,有误之处请指正,版本是10,这里不包括gnome和kde。 -------------------------------------------- t...

2011/12/16 10:09
941
0
各种类型文件的Content-Type

ContentType属性指定响应的 HTTP内容类型。如果未指定 ContentType,默认为TEXT/HTML。 HTTP Content-Type的类型如下: 15 CONTENT_TYPE = { 16 '.load': 'text/html', 17 '.123': 'applica...

01/30 12:15
92
0
ASM的AOP编程介绍

引言 什么是 ASM ? ASM 是一个 Java 字节码操控框架。它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。...

2016/10/28 09:04
17
0
各种类型文件的Content Type

各种类型文件的Content Type

2015/12/21 16:21
161
0
用JSP写出猜数字的游戏,详解!

常能见到一款经典的益智游戏——猜数字。假定C为游戏主持者,M为玩家,过程是这样的: C任意选取4个不重复的数字(0-9),并以任意次序组成一个串; M开始猜测这4个数字,同样给出不重复且有次...

2011/10/02 21:11
2.3K
0
Ubuntu完全教程,让你成为Ubuntu高手!

Ubuntu完全教程,让你成为Ubuntu高手! Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意义的,您不是第一个为此困惑的人,当然,也不会是最后一...

2016/12/09 23:09
30
0

没有更多内容

加载失败,请刷新页面

没有更多内容

返回顶部
顶部