查看原文
其他

【新开源推荐 29】AI开发者的福音:360公司宣布开源深度学习调度平台 XLearning!

2017-12-11 开源最前线
开源最前线(ID:OpenSourceTop) 猿妹 整编

综合自:https://github.com/Qihoo360/XLearning


近日,360 公司宣布开源其深度学习调度平台 XLearning。该平台由 360 独立开发,集成了 TensorFlow、MXNet 等多个常用深度学习框架。借助该平台,人工智能行业内开发者将可在一个统一、稳定的平台上完成工作,其工作量和工作难度将大幅降低。


深度学习调度平台 XLearning


授权协议:BSD

操作系统:Java

开发厂商:360

Github:https://github.com/Qihoo360/XLearning


XLearning 简介


XLearning 是一款支持多种机器学习、深度学习框架调度系统。基于 Hadoop Yarn 完成了对 TensorFlow、MXNet、Caffe、Theano、PyTorch、Keras、XGBoost 等常用框架的集成,同时具备良好的扩展性和兼容性。


XLearning 系统包括三种组件:

● Client:XLearning客户端,负责启动作业及获取作业执行状态;

● ApplicationMaster(AM):负责输入数据分片、启动及管理Container、执行日志保存等;

● Container:作业的实际执行者,负责启动Worker或PS(Parameter Server)进程,监控并向AM汇报进程状态,上传作业的输出等。对于TensorFlow类型作业,还负责启动TensorBoard服务。



XLearning 功能特性


● 支持多种深度学习框架


支持TensorFlow、MXNet分布式和单机模式,支持所有的单机模式的深度学习框架,如Caffe、Theano、PyTorch等。对于同一个深度学习框架支持多版本和自定义版本。


● 基于 HDFS 的统一数据管理


训练数据和模型结果统一采用HDFS进行存储,用户可通过--input-strategy或xlearning.input.strategy指定输入数据所采用的读取方式。目前,XLearning支持如下三种HDFS输入数据读取方式:


Download: AM根据用户在提交脚本中所指定的输入数据参数,遍历对应HDFS路径下所有文件,以文件为单位将输入数据平均分配给不同Worker。在Worker中的执行程序对应进程启动之前,Worker会根据对应的文件分配信息将需要读取的HDFS文件下载到本地指定路径;


Placeholder: 与Download模式不同,Worker不会直接下载HDFS文件到本地指定路径,而是将所分配的HDFS文件列表通过环境变量INPUT_FILE_LIST传给Worker中的执行程序对应进程。执行程序从环境变量os.environ["INPUT_FILE_LIST"]中获取需要处理的文件列表,直接对HDFS文件进行读写等操作。该模式要求深度学习框架具备读取HDFS文件的功能,或借助第三方模块库如pydoop等。


InputFormat: XLearning集成有MapReduce中的InputFormat功能。在AM中,根据“split size”对所提交脚本中所指定的输入数据进行分片,并均匀的分配给不同Worker。在Worker中,根据所分配到的分片信息,以用户指定的InputFormat类读取数据分片,并通过管道将数据传递给Worker中的执行程序进程。

同输入数据读取类似,用户可通过--output-strategy或xlearning.output.strategy指定输出结果的保存方式。XLearning支持如下两种结果输出保存模式:


Upload: 执行程序结束后,Worker根据提交脚本中输出数据参数,将本地输出路径保存文件上传至对应HDFS路径。为方便用户在训练过程中随时将本地输出上传至HDFS,XLearning系统在作业执行Web界面提供对输出模型的当前状态主动保存的功能,详情请见“可视化界面”说明部分;

OutputFormat: XLearning集成有MapReduce中的OutputFormat功能。在训练过程中,Worker根据指定的OutputFormat类,将结果输出至HDFS。


● 可视化界面

作业运行界面大致分为三部分:


All Containers:显示当前作业所含Container列表及各Container对应信息,如Contianer ID、所在机器(Container Host)、所属类型(Container Role)、当前执行状态(Container Status)、开始时间(Start Time)、结束时间(Finish Time)、执行进度(Reporter Progress)。其中,点击Container ID超链接可查看该Container运行的详细日志;


View TensorBoard:当作业类型为TensorFlow时,可点击该链接直接跳转到TensorBoard页面;


Save Model:当作业提交脚本中“--output”参数不为空时,用户可通过Save Model按钮,在作业执行过程中,将本地输出当前模型训练结果上传至HDFS。上传成功后,显示目前已上传的模型列表。


如下图所示:



● 原生框架代码的兼容性


TensorFlow分布式模式支持“ClusterSpec”自动分配构建,单机模式和其他深度学习框架代码不用做任何修改即可迁移到XLearning上。



编译&部署指南


● 编译环境依赖

jdk >= 1.7

Maven >= 3.3


● 编译方法

在源码根目录下,执行:

mvn package


完成编译后,在源码根目录下的 target 目录中会生成发布包 xlearning-1.0-dist.tar.gz。该发布包解压后的主要目录结构如下:

bin:作业提交脚本

lib:XLearning jar包及所依赖jar包

conf:XLearning配置文件

sbin:XLearning History Server启动脚本

data:运行示例所需输入数据和文件

examples:运行示例


● 部署环境依赖

CentOS 7.2

Java >= 1.7

Hadoop = 2.6,2.7,2.8

可选各计算节点具有所需学习平台的依赖环境,如 TensorFlow、numpy、Caffe 等。

4 XLearning 客户端部署方法


在 XLearning 发布包根目录 $XLEARNING_HOME 下的 conf 目录中,分别配置如下文件:

xlearning-env.sh:设置相关环境变量,如:

JAVA_HOME

HADOOP_CONF_DIR


xlearning-site.xml:详细系统配置说明请见配置参数部分。


log4j.properties:配置日志级别 5 XLearning History Server 启动方法,执行:

$XLEARNING_HOME/sbin/start-history-server.sh


附:新开源报道汇总

《【新开源推荐 28】百度正式开源 Linux 发行版 MesaLock Linux》

《【新开源报道 27】百度开源高性能 Python 分布式计算框架 Bigflow》

《【新开源报道 26】滴滴开源基于 Vue.js 的移动端组件库 cube-ui》

《【新开源报道 25】Google 开源 Docker 镜像差异分析工具 container-diff》

《【新开源报道 24】美团点评开源MySQL闪回工具 —— MyFlash》

《【新开源报道 23】IBM 推出首套开源现代化字体 —— IBM Plex》

《【新开源报道 22】Microsoft 开源用于 VS Code 的 Java Debugger》

《【新开源报道 21】阿里开源容器技术Pouch和P2P文件分发系统“蜻蜓”》

《【新开源报道 20】Uber正式开源其分布式跟踪系统Jaeger》

《【新开源报道 19】Uber与斯坦福大学开源深度概率编程语言Pyro》

《【新开源报道 18】谷歌开放内部工具 Colaboratory 来协助 AI 开发》

《【新开源报道 17】这波开源满分!清华大学开源网络嵌入的工具包 —— OpenNE

《【新开源报道 16】AI开发者福音!微软亚马逊联合发布深度学习库 Gloun》

《【新开源报道 15】谷歌发布量子开源软件,量子计算机对科学家免费开放 》

《【新开元报道 14】微软开源用于Spark的深度学习库MMLSpark》

《【新开源报道 13】Facebook 开源帮助开发者消灭最顽固的软件 bug 的工具》

《【新开源报道 12】不只是阿里巴巴的操作系统,AliOS 宣布开源》

《【新开源报道 11】重磅!阿里巴巴正式开源全球化OpenMessaging和ApsaraCache项目》

《【新开源报道 10】IBM 和谷歌等巨头联手为开发者推出开源容器安全工具Grafeas》

《【新开源报道 9】Google开源Abseil,为C++和Python开发提供支持》

《【新开源报道 8】serverless 领域的福音!Oracle 宣布开源 Fn project》

《【新开源报道 7】苹果在 GitHub 上公布 macOS 和 iOS 内核源码》

《【新开源报道 6】百度开源移动端深度学习框架mobile-deep-learning(MDL)》

《【新开源报道 5】百度正式开源其 RPC 框架 brpc》

《【新开源报道 4】IBM 开源动态的应用服务器运行时环境 Open Liberty》

《【新开源报道 3】微信后台团队最近开源力作:PhxQueue分布式队列》

《【新开源报道 2】喜大普奔!阿里即将开源 ApsaraCache,云数据库 Redis 版分支》

【新开源报道 1】腾讯 Web UI 解决方案 QMUI Web 正式回迁开源》



●本文编号109,以后想阅读这篇文章直接输入109即可

●输入m获取文章目录


↓↓↓ 点击"阅读原文" 进入GitHub详情页 

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存