360推出XLearning:可支持多种机器学习,深度学习框架调度系统!

Posted 全球人工智能

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了360推出XLearning:可支持多种机器学习,深度学习框架调度系统!相关的知识,希望对你有一定的参考价值。


——


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

英文文件

架构设计


XLearning系统包括三种组件:

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

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

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

功能特性

1支持多种深度学习框架

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

2基于HDFS的统一数据管理

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

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

  • 占位符:与下载模式不同,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类读取数据分片,并通过管道将数据传递给工人中的执行程序进程。

同输入数据读取类似,柯林斯用户通过--output-strategyxlearning.output.strategy指定输出查询查询结果的保存方式.XLearning支持如下两种结果输出保存模式:

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

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

3可视化界面

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

  • 所有容器:显示当前作业所含容器列表及各容器对象信息,如Contianer ID,所在机器(Container Host),所属类型(容器角色),当前执行状态(Container Status),开始时间(Start Time),结束时间(完成时间),执行进度(Reporter Progress)。其中,点击集装箱ID超链接可查看该集装箱运行的详细日志;

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

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

如下图所示:


4原生框架代码的兼容性

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

编译和部署指南

1编译环境依赖

  • jdk> = 1.7

  • Maven> = 3.3

2编译方法

在源码根目录下,执行:

mvn package

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

  • 斌:作业提交脚本

  • lib:XLearning jar包及所依赖jar包

  • CONF:XLearning配置文件

  • sbin:XLearning History Server启动脚本

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

  • 实例:运行示例

3部署环境依赖

  • 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

运行示例

在XLearning客户端,使用$XLEARNING_HOME/bin/xl-submit提交脚本将作业提交至Yarn集群。以TensorFlow作业提交为例:

1上传训练数据至hdfs路径

将发布包解压后的数据文件夹上传至HDFS,如:

cd $XLEARNING_HOMEhadoop fs -put data /tmp/ 

2提交运行

 cd $XLEARNING_HOME/examples/tensorflow
 $XLEARNING_HOME/bin/xl-submit \
   --app-type "tensorflow" \
   --app-name "tf-demo" \
   --input /tmp/data/tensorflow#data \
   --output /tmp/tensorflow_model#model \
   --files demo.py,dataDeal.py \
   --launch-cmd "python demo.py --data_path=./data --save_path=./model --log_dir=./eventLog --training_epochs=10" \
   --worker-memory 10G \
   --worker-num 2 \
   --worker-cores 3 \
   --ps-memory 1G \
   --ps-num 1 \
   --ps-cores 2

提交脚本各参数含义如下:

参数名称 含义
应用程序名称 作业名称为“tf-demo”
应用型 作业类型为“tensorflow”
输入 输入文件,HDFS路径:/ TMP /数据/ tensorflow,对应本地路径./data
产量 输出文件,HDFS路径:/ tmp目录/ tensorflow_model,对应本地路径./model
需要传给各个容器的本地文件,包括demo.py,dataDeal.py
推出-CMD 训练执行命令
工人记忆 工人内存使用为10G
工人NUM 工人数目为2
工人内核 工人使用的CPU核数为3
PS-内存 parameterServer内存使用为1G
PS-NUM parameterServer数目为1
PS-核心 parameterServer使用CPU核数为2

相关更多详细参数请见说明运行提交参数部分。

原文:https://github.com/Qihoo360/XLearning/blob/master/README_CN.md


以上是关于360推出XLearning:可支持多种机器学习,深度学习框架调度系统!的主要内容,如果未能解决你的问题,请参考以下文章

谷歌推出量子机器学习框架TFQ-TensorFlow Quantum,一个可训练量子模型的机器学习框架

好用的可视化数据建模工具

商业分析数据分析机器学习实习推荐:腾讯爱奇艺京东360

HMS Core机器学习服务实现同声传译,支持中英文互译和多种音色语音播报

看TensorFlow如何玩转深度学习

360浏览器中有啥好用的获取视频的扩展程序吗