XLearning - 深度学习调度平台

软件简介

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

架构设计

XLearning 系统包括三种组件:

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

功能特性

1 支持多种深度学习框架

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

2 基于 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- strategyxlearning.output.strategy指定输出结果的保存方式。XLearning 支持如下两种结果输出保存模式:

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

3 可视化界面

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

  • 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 。上传成功后,显示目前已上传的模型列表。

如下图所示:

4 原生框架代码的兼容性

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

XLearning - 深度学习调度平台的更多相关文章

  1. 中文译文:Minerva-一种可扩展的高效的深度学习训练平台(Minerva - A Scalable and Highly Efficient Training Platform for Deep Learning)

    Minerva:一个可扩展的高效的深度学习训练平台 zoerywzhou@gmail.com http://www.cnblogs.com/swje/ 作者:Zhouwan  2015-12-1 声明 ...

  2. TensorFlow-谷歌深度学习库 手把手教你如何使用谷歌深度学习云平台

    自己的电脑跑cnn, rnn太慢? 还在为自己电脑没有好的gpu而苦恼? 程序一跑一俩天连睡觉也要开着电脑训练? 如果你有这些烦恼何不考虑考虑使用谷歌的云平台呢?注册之后即送300美元噢-下面我就来介 ...

  3. 完全基于 Java 的开源深度学习平台,亚马逊的大佬带你上手

    本文适合有 Java 基础的人群 作者:DJL-Lanking HelloGitHub 推出的<讲解开源项目>系列.有幸邀请到了亚马逊 + Apache 的工程师:Lanking( htt ...

  4. 矩池云 | 高性价比的GPU租用深度学习平台

    矩池云是一个专业的国内深度学习云平台,拥有着良好的深度学习云端训练体验.在性价比上,我们以 2080Ti 单卡为例,36 小时折扣后的价格才 55 元,每小时单价仅 1.52 元,属于全网最低价.用户 ...

  5. 【深度解析】Google第二代深度学习引擎TensorFlow开源

    作者:王嘉俊 王婉婷 TensorFlow 是 Google 第二代深度学习系统,今天宣布完全开源.TensorFlow 是一种编写机器学习算法的界面,也可以编译执行机器学习算法的代码.使用 Tens ...

  6. 深度学习“引擎”之争:GPU加速还是专属神经网络芯片?

    深度学习“引擎”之争:GPU加速还是专属神经网络芯片? 深度学习(Deep Learning)在这两年风靡全球,大数据和高性能计算平台的推动作用功不可没,可谓深度学习的“燃料”和“引擎”,GPU则是引 ...

  7. 【PyTorch深度学习60分钟快速入门 】Part1:PyTorch是什么?

      0x00 PyTorch是什么? PyTorch是一个基于Python的科学计算工具包,它主要面向两种场景: 用于替代NumPy,可以使用GPU的计算力 一种深度学习研究平台,可以提供最大的灵活性 ...

  8. 惊不惊喜, 用深度学习 把设计图 自动生成HTML代码 !

    如何用前端页面原型生成对应的代码一直是我们关注的问题,本文作者根据 pix2code 等论文构建了一个强大的前端代码生成模型,并详细解释了如何利用 LSTM 与 CNN 将设计原型编写为 HTML 和 ...

  9. 深度学习在推断阶段(inference)的硬件实现方法概述

    推断(Inference),就是深度学习把从训练中学习到的能力应用到工作中去. 精心调整权值之后的神经网络基本上就是个笨重.巨大的数据库.为了充分利用训练的结果,完成现实社会的任务,我们需要的是一个能 ...

随机推荐

  1. Windows下Nexus 5的Android 5.0以上版本官方ROM的刷机教程

    博客链接:http://blog.csdn.net/qq1084283172/article/details/52334452 折腾Android逆向的时候,经常需要给Nexus 5刷机.最近给Nex ...

  2. jsp JDBC连接MySQL数据库操作标准流程参考

    1. 此案例以帐号密码后台更新维护为例子,对数据库调取数据更新流程进行演示: 代码示例: <%@page import="java.io.IOException"%> ...

  3. POJ2135 来回最短路(简单费用流)

    题意:       就是从1走到n然后再走回来,一条边只能走一次,要求路径最短. 思路:       比较水,可以直接一遍费用流,不解释了,具体的看看代码,敲这个题就是为了练 练手,好久不敲了,怕比赛 ...

  4. Intel汇编语言程序设计学习-第三章 汇编语言基础-上

    汇编语言基础 3.1  汇编语言的基本元素 有人说汇编难,有人说汇编简单,我个人不做评价,下面是一个简单的实例(部分代码): main PROC mov  eax,5  ;5送EAX寄存器 add   ...

  5. ERROR: Symbol file could not be found 寒江孤钓<<windows 内核安全编程>> 学习笔记

    手动下载了Symbols,设置好了Symbols File Path,串口连接上了以后,出现ERROR: Symbol file could not be found, 并且会一直不停的出现windb ...

  6. 『动善时』JMeter基础 — 7、jmeter.properties文件常用配置

    目录 1.默认语言设置 2.配置默认编码格式 3.GUI图标放大比例设置 4.功能区工具栏图标大小设置 5.视图区目录树图标大小设置 6.内容区编辑字体设置 7.添加JMeter元素快捷键设置 8.捕 ...

  7. pandas(10):数据增删改

    目录 一.对索引进行操作 1 操作索引值df.rename() 二.指定数据替换.修改df.replace() 三.特殊值--缺失值处理 四.新增行列 1 直接赋值添加新列 2 df.assign() ...

  8. apache-tomcat-7.0.92

    链接:https://pan.baidu.com/s/1wnTSjTknYfaeDV_pakrC9g 提取码:see7

  9. 【译】.NET 的新的动态检测分析

    随着 Visual Studio 16.9 的发布,Visual Studio 中的检测分析变得更好用了.本文介绍我们新的动态分析工具.这个工具显示了函数被调用的确切次数,并且比我们以前的静态检测工具 ...

  10. Django(13)django时区问题

    前言 我们都知道时区,标准时区是UTC时区,django默认使用的就是UTC时区,所以我们存储在数据库中的时间是UTC的时间,但是当我们做的网站只面向国内用户,或者只是提供内部平台使用,我们希望存储在 ...