欢迎关注大数据技术架构与案例微信公众号:过往记忆大数据
过往记忆博客公众号iteblog_hadoop
欢迎关注微信公众号:
过往记忆大数据

奇虎360正式开源深度学习调度平台XLearning

本文系奇虎360系统部相关工程师投稿。

近两年人工智能技术发展迅速,以Google开源的TensorFlow为代表的各种深度学习框架层出不穷。为了方便算法工程师使用各类深度学习技术,减少繁杂的诸如运行环境部署运维等工作,提升GPU等硬件资源利用率,节省硬件投入成本,奇虎360系统部大数据团队与人工智能研究院联合开发了深度学习调度平台——XLearning。

XLearning

XLearning平台将大数据与深度学习相融合,基于Hadoop Yarn完成了对TensorFlow、MXNet、Caffe、Theano、PyTorch、Keras、XGBoost等常用深度学习框架的集成,是典型的“AI on Hadoop”的实现。XLearning从今年(2017)4月份正式开发上线运行,经多次版本迭代更新,为各学习框架的使用者提供了统一、稳定的调度平台,实现了资源共享,极大的提高了资源利用率,并且具有良好的扩展性和兼容性。目前已经在公司搜索、人工智能研究院、商业化、数据中心等业务部门广泛使用。
XLearning项目开源地址:
GitHub地址Gitee地址g-xlearning-dev@360.cn加入QQ群:588356340

XLearning架构

XLearning
  • Client:XLearning客户端,负责启动作业及获取作业执行状态;
  • ApplicationMaster(AM):负责输入数据分片、启动及管理Container、执行日志保存等;
  • Container:作业的实际执行者,负责启动Worker或PS(Parameter Server)进程,监控并向AM汇报进程状态,上传作业的输出等。对于TensorFlow类型作业,还负责启动TensorBoard服务。

XLearning功能特性

XLearning虽然架构简洁,但具有丰富的功能方便用户进行模型训练,并依托于Yarn提供有作业资源的统一管理。

支持多种深度学习框架

XLearning支持TensorFlow、MXNet分布式和单机模式,支持所有的单机模式的深度学习框架,如Caffe、Theano、PyTorch等。对于同一个深度学习框架支持多版本和自定义版本,满足用户个性化需求,不受限于集群机器上各学习框架的安装版本。

基于HDFS的统一数据管理

XLearning提供多种模式用于数据的输入、输出,包括数据的流式读写、直接HDFS读写等,可根据作业处理的数据量与集群机器硬盘容量,视情况决定所采用的读写方式。

可视化界面

为方便用户查看作业信息,XLearning提供可视化界面用于展示作业执行进度和输出日志等内容。作业执行完毕后,亦可查看日志内容,便于分析训练过程进展。对于TensorFlow类型作业,支持TensorBoard服务。作业运行界面大致分为三部分(如下图所示):

  • All Containers:显示当前作业所含Container列表及各Container对应信息,如Contianer ID、所在机器(Container Host)、所属类型(Container Role)、当前执行状态(Container Status)、开始时间(Start Time)、结束时间(Finish Time)、执行进度(Reporter Progress);
  • View TensorBoard:当作业类型为TensorFlow时,可点击该链接直接跳转至TensorBoard页面;
  • Save Model:用户可在作业执行过程中,可以将当前训练模型的输出结果上传至HDFS,并显示目前已上传的模型列表。
XLearning

原生代码兼容

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

Checkpoint功能

利用深度学习框架本身的Checkpoint机制和直接读写HDFS数据功能,XLearning方便用户实现训练恢复继续执行。

XLearning开源版本环境依赖简单,可直接运行于社区Hadoop版本,使用方便,入门学习成本极低。公司的Yarn版本是我们在社区版本上做了不少增强,比如支持GPU的资源调度、GPU通信亲和性的感知、DockerContainer支持等。依赖于这些特性公司在用的版本多出了GPU资源调度支持、作业Docker化、临时GPU虚拟机、Container Metrics可视化图表展示等功能。这些功能我们后续会通过提供Yarn Patch或者开源自用Yarn版本来分享给大家,也欢迎大家随时跟我们沟通。

快速入门

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

上传训练数据至hdfs路径

将发布包解压后的data文件夹上传至hdfs,如:

cd $XLEARNING_HOME
hadoop fs -put data /tmp/

提交运行

 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

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

参数名称含义
app-name作业名称为 "tf-demo"
app-type作业类型为 "tensorflow"
input输入文件,HDFS路径:/tmp/data/tensorflow,对应本地路径 ./data
output输出文件,HDFS路径:/tmp/tensorflow_model,对应本地路径 ./model
files需要传给各 container 的本地文件,包括 demo.pydataDeal.py
launch-cmd训练执行命令
worker-memoryworker内存使用为10G
worker-numworker数目为2
worker-coresworker使用CPU核数为3
ps-memoryparameterServer内存使用为1G
ps-numparameterServer数目为1
ps-coresparameterServer使用CPU核数为2

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

本博客文章除特别声明,全部都是原创!
原创文章版权归过往记忆大数据(过往记忆)所有,未经许可不得转载。
本文链接: 【奇虎360正式开源深度学习调度平台XLearning】(https://www.iteblog.com/archives/2302.html)
喜欢 (15)
分享 (0)
发表我的评论
取消评论

表情
本博客评论系统带有自动识别垃圾评论功能,请写一些有意义的评论,谢谢!