XLearning 架构设计功能特性 深度学习调度平台

程序名称:XLearning 架构设计功能特性

授权协议: BSD

操作系统: 跨平台

开发语言: Java

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 服务。

功能特性

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

训练数据和模型结果统一采用 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
上。

XLearning 架构设计功能特性 官网

https://github.com/Qihoo360/XLearning

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


欧盟第7框架计划(FP7)的LarKC项目的目标是开发大规模知识加速器(LarKC,其发音为“lark”),LarKC被设计为一个大规模分布式不完备推理平台 ,该平台用于突破语义万维网(Semantic Web)推理系统目前面临的知识处理规
Salad 是一种有效且灵活的实现著名的异常检测方法回文构词法王et al . 2006(RAID)。Salad
multilanguage 是一个多语开发工具包,用于缓存多语系统的多语值,它拥有良好的性能,并且能防止内存泄露。
go-cortex 是一个服务,通过倾听你的句子,并视图理解你的意思,然后执行相应的动作。它使用 Wit.ai
DKPro Core 是基于 Apache UIMA 框架之上的自然语言处理(NLP)的软件组件。DKPro Core 提供了这样的第三方工具以及原NLP组件的包装。
NLTK 会被自然地看作是具有栈结构的一系列层,这些层构建于彼此基础之上。那些熟悉人工语言(比如
ERNIE 是基于持续学习的语义理解预训练框架,使用多任务学习增量式构建预训练任务。
Algorithm research 基于 AC 有限状态自动状态机的过滤服务。 AC 编译及使用方法 1. 编译之前请先确认安装好 libevent
spaCy 是一个 Python 和 CPython 的 NLP 自然语言文本处理库。 示例代码: >>> import spacy.en
Lango 是自然语言处理库,类似乐高游戏,可以把各个语言块构建在一起工作。
SyntaxNet 是一个框架,即学术圈所指的SyntacticParser,他是许多NLU系统中的关键组件。在这个系统中输入一个句子,他会自动给句子中的每一个单词
FudanNLP主要是为中文自然语言处理而开发的工具包,也包含为实现这些任务的机器学习算法和数据集。
HanLP: Han Language Processing 汉语言处理包 HanLP 是由一系列模型与算法组成的 Java 工具包,目标是普及自然语言处理在生产环境中的应用。HanLP
TextTeaser是一个自动摘要算法,结合了自然语言处理的力量和机器学习产生好结果。
专门针对中文文档的simhash算法库 简介 此项目用来对中文文档计算出对应的 simhash 值。 simhash 是谷歌用来进行文本去重的算法,现在广泛应用在文本处理中。
Lacona 是语言无关的 JavaScript 语言解析器。Lacona 可以根据一个任意但是定义良好的模式来预测自然语言。也就是说,你告诉 Lacona
UBY是一个大规模的统一的文章资源,为自然语言处理(NLP)基于ISO标准词汇标记框架(LMF)。
CRF是著名的条件随机场开源工具,也是目前综合性能最佳的CRF工具。CRF本身已经是个比较老的工具了,但鉴于其性能较好,仍然是自然语言处理很重要的一个工具。
OpenNLP 是一个机器学习工具包,用于处理自然语言文本。支持大多数常用的 NLP 任务,例如:标识化、句子切分、部分词性标注、名称抽取、组块、解析等。
LingPipe是一个自然语言处理的Java开源工具包。LingPipe目前已有很丰富的功能,包括主题分类(Top