QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

奇虎 360 正式开源其深度学习调度平台,支持 TensorFlow、MXNet 等框架

  • 2017-12-06
  • 本文字数:3802 字

    阅读完需:约 12 分钟

奇虎 360 今日宣布开源深度学习调度平台 XLearning,项目开源地址: https://github.com/Qihoo360/XLearning

XLearning 由 360 系统部大数据团队与人工智能研究院联合开发,基于 Hadoop Yarn 完成了对 TensorFlow、MXNet、Caffe、Theano、PyTorch、Keras、XGBoost 等常用深度学习框架的集成。平台上线运行近一年时间,经多次版本迭代更新,为各类深度学习框架的使用者提供了统一、稳定的作业提交平台,实现了资源共享,极大的提高了资源利用率,并且具有良好的扩展性和兼容性,在公司搜索、人工智能研究院、商业化、数据中心等业务部门得到广泛使用。

我们第一时间采访了XLearning 项目负责人李远策,了解平台建设背景和设计思想。李远策,2013 年加入奇虎 360,先后参与公司 Hadoop、Spark 、深度学习等平台的建设,历经公司 Hadoop 平台高速发展及 Spark 平台从无到大规模实践及深度学习平台的落地。曾主持 数据仓库索引、MPI on Yarn、XLearning 等多个项目。工作中专注于解决平台中的各种 Bug 及用户遇到的各类问题,爱好开源,乐于学习和分享。目前主要关注 大数据索引、大数据 + 深度学习等领域。

AI 前线:_ 请问 XLearning 在 360 公司的研发历史是什么样的?起初是为了解决什么问题?目前在 360 公司有哪些应用场景?_为什么会在现在选择开源?

李远策:人工智能技术最近两年发展迅速,以 Google 开源的 TensorFlow 为代表的各种深度学习框架层出不穷。为了能让人工智能技术更好的在公司落地,我们大数据基础机构团队联合公司人工智能研究院共同开发了 XLearning 平台。XLearning 从今年(2017)4 月份正式开始开发,经过 3 个版本的迭代,目前已经在公司的搜索、人工智能研究院、商业化、大数据中心等业务线广泛使用。深度学习技术平台化可以有效的提升 GPU 等硬件资源的利用率,节省硬件投入的成本。另外,可以让算法工程师更方便的使用各类深度学习技术,从繁杂的诸如运行环境运维等工作中解脱出来。

XLearning 的设计思路是采用 Hadoop Yarn 来调度深度学习框架,是典型的“AI on Hadoop”的实现,同行业的公司都会有类似的需求,所以我们选择开源,希望能给大家建设大数据 + 人工智能平台做个参考。

AI 前线:为什么会考虑在大数据平台的基础上集成各种深度学习框架?XLearning 可满足哪些要求,减轻哪些工作量?

李远策:在建设公司人工智能平台的架构设计上确实有多个方案可以选择,我们主要是从如下几个方面考虑的:

(1)跟现有平台的融合;公司已有的机器学习作业多数采用 Spark MLLib 和 MPI 框架,都是采用 Hadoop Yarn 进行统一调度,如果将深度学习框架也集成到 Yarn 上同时数据由 HDFS 存储,则可以实现平台的统一。

(2)运维复杂度;重新建设一个新的平台会引入新的运维工作;

(3)公司程序员的使用习惯;公司很多开发人员对 Hadoop 生态比较熟悉,直接在 Hadoop 上提交深度学习作业更容易推广;

(4)开发工作量;我们团队对 Hadoop 生态系统的组件比较熟悉,再次之前曾经实现了“MPI on Yarn”系统。可以说具备实现“AI on Hadoop”的技术储备。

XLearning 开源版本兼容社区的 Hadoop,同行公司如果有 Hadoop 平台则可以直接使用它来调度深度学习作业。如果还没有 Hadoop 平台则需要提前部署。深度学习的训练往往依赖海量的样本数据,一个可靠的大数据存储系统是训练平台的必备条件,Hadoop 部署简单、稳定可靠,是大数据平台的行业标准,推荐使用。

AI 前线:XLearning 功能设计和架构设计要点是什么?

李远策:XLearning 的系统架构图如下:

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

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

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

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

(1)支持多种深度学习框架

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

(2)基于 HDFS 的统一数据管理

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

(3)可视化界面

为方便用户查看作业信息,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,并显示目前已上传的模型列表。

(4)原生代码兼容

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

(5)Checkpoint 功能

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

AI 前线:XLearning 在性能上有哪些优势?平台设计时考虑到了哪些易用性方面的需求?

李远策:XLearning 主要负责调度和监控工作,从原理上讲训练性能跟原生的 TensorFlow、Caffe 等框架保持一致。平台的易用性是推广的关键因素,XLeanring 做了如下考虑:

(1)与原生框架的兼容性,除了刚才说的性能保持一致外,代码也保持兼容,可以有效降低业务作业迁移的成本;

(2)Web 展示;XLearnin 调度的作业主页上会展示必要的调度信息、作业进度、日志等,同时还额外提供了随时保存中间结果的功能,方便工程师根据实际情况提前终止自己的作业;

(3)集成 TensorBoard;对于 TensorFlow 作业 XLearning 会自动拉起 TensorBoard 服务,相比之前手动启动会更简单;

(4)自动构建 TensorFlow 的 ClusterSpec;对于分布式模式的 TensorFlow 作业,工程师不再需要手动指定 worker、ps 的 host 信息,仅需要告知 XLearning 需要的 worker 和 ps 节点数即可;

这些在刚才的架构设计要点环节里也都有提到。

AI 前线:您们在开发 XLearning 有哪些经验和心得值得和大家分享的呢?

李远策:除了刚才提到的架构选型之外最想分享的经验就是:所有功能的设计都要以实际需求出发,空想出来的功能往往华而不实。XLearning 设计之初和新版本的规划过程中,都会跟公司实际用户做充分的功能需求讨论,明确大家工作的痛点,安排好优先级和 deadline 再做架构设计和开发。

AI 前线:XLearning 的开源版本和公司在使用的版本功能上是否存在差异?

李远策:坦白讲开源的 XLearning 是一个简化的版本,主要是因为受限于对 Yarn 功能的依赖。公司的 Yarn 版本,是我们在社区版本上做了不少增强。比如支持 GPU 的资源调度、GPU 通信亲和性的感知、DockerContainer 支持等。依赖于这些特性公司在用的版本多出了 GPU 资源调度支持、作业 Docker 化、临时 GPU 虚拟机、Container Metrics 可视化图表展示等功能。这些功能我们后续会通过提供 Yarn Patch 或者开源自用 Yarn 版本来分享给大家,也欢迎大家随时跟我们沟通。

AI 前线:我们知道您不仅负责了 XLearning 深度学习平台,也是 Spark 早期研究者和布道者,历经 360 公司 Hadoop 平台高速发展及 Spark 平台从无到大规模实践和落地,能否结合您的经历给大家讲述下从通用大数据平台到深度学习平台的演进历程?

李远策:MR、Spark 这些计算框架在大多数互联网公司都有广泛的使用,能满足大多数的数据处理需求。受限于 Spark MLLib 的性能和扩展性,公司还有不少 MPI 类型的作业跑在专用的调度系统(名为 Euler)上。为了实现调度的统一和服务器资源的复用,我们团队开发了 Euclid(MPI on Yarn)系统,初步统一了机器学习作业和大数据作业的统一调度。然后到了深度学习阶段,我们最初也走了些弯路。比如我们最早在 2016 年下半年开发了一款名为 SparkFlow(TensorFlow on Spark)的系统,可以把 TensorFlow 集成到 Spark 中,通过 RDD 完成数据的交互。后来 Yahoo 研究院也开源一个“TensorFlowOnSpark”,实现原理基本类似。受限与 Spark 本身的问题,并不适合做 PS 架构,另外与原生 TensorFlow 代码兼容性也很难做到完全兼容,在推广过程中遇到了很多的问题。重新考虑后我们开发了“TensorFlow on Yarn”,试行成功后为了兼容其他的深度学习框架就演化成了现在的 XLearning。后续我们会继续沿着统一调度的方案前行。目前平台还有很多问题需要继续探索,比如我们正在设计的更高性能的算法库,希望能无缝替换现在的 Spark MLLib,进一步提升公司 AI 平台的计算能力。关于这方面的工作希望能有机会跟同行的技术专家多多交流。谢谢大家!

2017-12-06 18:003963

评论

发布
暂无评论
发现更多内容

使用 Provider 实现 Flutter 多组件的状态共享

岛上码农

flutter 安卓开发 ios 开发 跨平台应用 5月月更

dfs专项练习题

工程师日月

DFS 5月月更

普渡科技宣布成立“PUDU-X”创新基金,为青年工程师筑梦未来

极客天地

青藤入选信通院“数据安全推进计划”成员单位

青藤云安全

数据安全 信通院

【LeetCode】数组中的第K个最大元素Java题解

Albert

LeetCode 5月月更

宜搭5月更新:跨应用数据读写能力升级,AI组件内测开放

一只大光圈

5.26直播预告|《观见话题》第一期:跨境组网与加速上云的硬核解法

观测云

Redis「9」主从、高可用性方案

Samson

redis 学习笔记 5月月更

半年面试数百场,我总结出了这份10w字Java面试复盘笔记

Java全栈架构师

Java spring 程序员 架构 面试

ECSM隐私协议

潇潇雨歇

大家谈的视频体验指标,都有哪些?如何测定?

声网

视频 Qoe Dev for Dev

天翼云推荐新人返好礼,最高返利千元

天翼云开发者社区

4月券商App行情刷新及交易体验评测报告,7家券商入围领导者象限

博睿数据

性能测试 系统运维 博睿数据 券商排行

Authing 身份云招聘:增长黑客

Authing

招聘 科技

JSON在线对比差异工具

入门小站

工具

【活动报名】TiDB 社区天津站 Meetup 要来啦!

TiDB 社区干货传送门

SysAK 应用抖动诊断篇—— eBPF又立功了! | 龙蜥技术

OpenAnolis小助手

Linux 工具 内核 ebpf 龙蜥技术

美团二面:为什么Redis会有哨兵?

Java全栈架构师

Java 数据库 redis 程序员 面试

源码解读预告 |TiFlash DeltaTree 引擎设计及实现解析!

TiDB 社区干货传送门

Authing 被世界经济论坛评选为 2022 技术先锋企业

Authing

身份云 科技 Idaas 科技企业

linux之awk使用技巧

入门小站

OceanBase 源码解读(十一):Location Cache 模块浅析

OceanBase 数据库

oceanbase 源码解读

springboot集成activiti整套方案()

金陵老街

Vue ERP Activiti spring-boot

windows下C语言使用curl库访问HTTP下载文件

DS小龙哥

5月月更

极速调取客户保单,YRCloudFile 助力保险存储架构升级

焱融科技

AI 存储 NAS 数字金融

数据库连接池 -Druid 源码学习(十)

wjchenge

Druid 数据库连接池

明天,龙蜥2位专家直播,第22届计算机系统会议等活动来了!

OpenAnolis小助手

Linux 开源 直播 内核 龙蜥技术

AIRIOT物联网低代码平台如何配置OPC UA驱动?

AIRIOT

All in ONE!博睿数据重磅推出一体化智能可观测平台

博睿数据

博睿数据 IT运维 ONE平台

【高并发】什么是ForkJoin?看这一篇就够了!

冰河

并发编程 多线程 高并发 协程 异步编程

生命科学领域下的医药研发通过什么技术?冷冻电镜?分子模拟?IND?

GPU算力

奇虎360正式开源其深度学习调度平台,支持TensorFlow、MXNet等框架_语言 & 开发_李远策_InfoQ精选文章