XLearning - 深度学习调度平台
XLearning - 深度学习调度平台
软件简介
XLearning **** 是奇虎 360 开源的一款支持多种机器学习、深度学习框架调度系统。基于 Hadoop Yarn 完成了对TensorFlow、MXNet、Caffe、Theano、PyTorch、Keras、XGBoost 等常用框架的集成,同时具备良好的扩展性和兼容性。
架构设计
XLearning 系统包括三种组件:
- Client :XLearning 客户端,负责启动作业及获取作业执行状态;
- ApplicationMaster(AM) :负责输入数据分片、启动及管理 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- strategy
或xlearning.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 - 深度学习调度平台的更多相关文章
- 中文译文: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 声明 ...
- TensorFlow-谷歌深度学习库 手把手教你如何使用谷歌深度学习云平台
自己的电脑跑cnn, rnn太慢? 还在为自己电脑没有好的gpu而苦恼? 程序一跑一俩天连睡觉也要开着电脑训练? 如果你有这些烦恼何不考虑考虑使用谷歌的云平台呢?注册之后即送300美元噢-下面我就来介 ...
- 完全基于 Java 的开源深度学习平台,亚马逊的大佬带你上手
本文适合有 Java 基础的人群 作者:DJL-Lanking HelloGitHub 推出的<讲解开源项目>系列.有幸邀请到了亚马逊 + Apache 的工程师:Lanking( htt ...
- 矩池云 | 高性价比的GPU租用深度学习平台
矩池云是一个专业的国内深度学习云平台,拥有着良好的深度学习云端训练体验.在性价比上,我们以 2080Ti 单卡为例,36 小时折扣后的价格才 55 元,每小时单价仅 1.52 元,属于全网最低价.用户 ...
- 【深度解析】Google第二代深度学习引擎TensorFlow开源
作者:王嘉俊 王婉婷 TensorFlow 是 Google 第二代深度学习系统,今天宣布完全开源.TensorFlow 是一种编写机器学习算法的界面,也可以编译执行机器学习算法的代码.使用 Tens ...
- 深度学习“引擎”之争:GPU加速还是专属神经网络芯片?
深度学习“引擎”之争:GPU加速还是专属神经网络芯片? 深度学习(Deep Learning)在这两年风靡全球,大数据和高性能计算平台的推动作用功不可没,可谓深度学习的“燃料”和“引擎”,GPU则是引 ...
- 【PyTorch深度学习60分钟快速入门 】Part1:PyTorch是什么?
0x00 PyTorch是什么? PyTorch是一个基于Python的科学计算工具包,它主要面向两种场景: 用于替代NumPy,可以使用GPU的计算力 一种深度学习研究平台,可以提供最大的灵活性 ...
- 惊不惊喜, 用深度学习 把设计图 自动生成HTML代码 !
如何用前端页面原型生成对应的代码一直是我们关注的问题,本文作者根据 pix2code 等论文构建了一个强大的前端代码生成模型,并详细解释了如何利用 LSTM 与 CNN 将设计原型编写为 HTML 和 ...
- 深度学习在推断阶段(inference)的硬件实现方法概述
推断(Inference),就是深度学习把从训练中学习到的能力应用到工作中去. 精心调整权值之后的神经网络基本上就是个笨重.巨大的数据库.为了充分利用训练的结果,完成现实社会的任务,我们需要的是一个能 ...
随机推荐
- 04- cookie与缓存技术
什么是cookie 定义:Cookies是一种能够让网站服务器把少量数据储存到客户端的硬盘或内存,或是从客户端的硬盘读取数据的一种技术.Cookies是当你浏览某网站时,由Web服务器置于你硬盘上的一 ...
- hdu4829 带权并查集(题目不错)
题意: Information Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...
- hdu4901 枚举状态(找集合对S(xor) ==T(and))
题意: 给你一个串数字,然后让你在这里面挑取两个集合S ,T,集合的要求是 (1)不能为空 (2)S集合的所有元素必须在T集合的左边 (3)S集合的XOR == T集合的AND 问 ...
- CTFHub-技能树-信息泄露
CTFHub-技能树-信息泄露 1.目录遍历 文件夹不多,直接手翻就行 2.PHPinfo 直接搜索ctfhub{就能找到 3.备份文件下载 3-1 网站源码 打开之后: 因为这里组合比较少可以手动测 ...
- PHP版本差异备忘录
5.2版本 默认开启了GPC [之后的版本默认不开启] 在声明为static方法时,无需在方法前面加入static关键 [以后的版本强制增加static关键字]
- Day008 下标越界及小结
数组的四个基本特点 其长度是确定的.数组一旦被创建,它的大小就是不可以改变的. 其元素必须是相同类型,不允许出现混合类型. 数组中的元素可以是任何数据类型,包括基本类型和引用类型. 数组变量属于引用类 ...
- Idea创建Maven Web项目的web.xml版本问题
问题描述:创建Maven Web项目时,选择MavenWebapp模板时,自动生成的web.xml文件版本为1.4,如图所示 如何才能修改为常用的4.0版本的xml文件呢? 这个文件是从Maven仓库 ...
- CentOS运行多个Tomcat操作步骤
一:修改环境变量 在/et/profile文件追加以下内容 # tomcat1 env ( 第一个tomcat 的环境变量) export CATALINA_HOME=/usr/local/apach ...
- 【.Net Core】分析.net core在linux下内存占用过高问题
现象 随着程序运行,内存占用率越来越高,直到触发linux的OOM,程序被杀死. 分析工具 运行环境:.net core 3.1(微软的分析工具要求最低3.0,无法分析2.1的core程序,需要先改为 ...
- restful 与 webapi 详解
restful 什么是API API全称Aplication Programming Itererface即应用程序编程接口, 我们在开发应用程序时经常用到.API作为接口,用来"连接&qu ...