NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

奇虎 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 平台的计算能力。关于这方面的工作希望能有机会跟同行的技术专家多多交流。谢谢大家!

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2017-12-06 18:003686

评论

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

传统 VC 机构,是否还能在 Fair launch 的散户牛市中胜出?

石头财经

可编程线性霍尔传感器 IC

智趣匠

PreparedStatement实践和批处理实践

FunTester

在线文档软件哪个好?5个好用的协同文档app推荐!

彭宏豪95

团队协作 在线文档 在线白板 在线协同文档 效率软件

🛠 开源即时通讯(IM)项目OpenIM源码部署指南

Geek_1ef48b

坎昆升级在即,ZKFair 已开启 ZKF 质押

股市老人

传统 VC 机构,是否还能在 Fair launch 的散户牛市中胜出?

大瞿科技

文心大模型融入荣耀MagicOS!打造大模型“端云协同”创新样板

爱编程的喵喵

极狐 GitLab 冷知识:使用 Email 也可以创建 Issue?

极狐GitLab

IPQ8074: the leader in high-performance router motherboard chips

wallysSK

从像素到洞见:图像分类技术的全方位解读

不在线第一只蜗牛

机器学习 深度学习 图像 项目开发

传统 VC 机构,是否还能在 Fair launch 的散户牛市中胜出?

加密眼界

传统 VC 机构,是否还能在 Fair launch 的散户牛市中胜出?

股市老人

Programming Abstractions in C阅读笔记:p242-p245

codists

京东方精电亮相CES2024,携手合作伙伴共绘智慧出行未来图景

科技热闻

传统 VC 机构,是否还能在 Fair launch 的散户牛市中胜出?

BlockChain先知

如何利用 NFTScan Portfolio 功能分析钱包 NFT 持仓

NFT Research

NFT NFT\ NFTScan

网易首款鸿蒙原生游戏《倩女幽魂》手游完成开发,商业化版本已就绪

新消费日报

C 语言文件读取全指南:打开、读取、逐行输出

小万哥

程序人生 编程语言 软件工程 C/C++ 后端开发

Go与C语言的互操作,import “C“的实例

百度搜索:蓝易云

Go 云计算 Linux C语言 云服务器

线索系统性能优化实践

京东科技开发者

数字化转型究竟是什么意思?

高端章鱼哥

数字化

传统 VC 机构,是否还能在 Fair launch 的散户牛市中胜出?

西柚子

docker rabbitmq-清空queue队列数据

百度搜索:蓝易云

云计算 Linux 运维 RabbitMQ 云服务器

关于AI PC,英特尔CEO帕特·基辛格说了三个法则

E科讯

🛠 开源即时通讯(IM)项目OpenIM源码部署指南

Geek_1ef48b

端侧AI的“春风化雨手”,翻开中国科技下一页

脑极体

AI

吃人血馒头 VC 机构,是否还能在 Fair launch 的散户牛市中胜出?

EOSdreamer111

2024-01-10:用go语言,给你一个下标从 0 开始的二维整数数组 pairs 其中 pairs[i] = [starti, endi] 如果 pairs 的一个重新排列 满足对每一个下标 i

福大大架构师每日一题

福大大架构师每日一题

使用JMeter安装RabbitMQ测试插件的步骤

百度搜索:蓝易云

云计算 Linux 运维 RabbitMQ Jmeter

吃惯人血馒头的 VC 机构,是否还能在 Fair launch 的散户牛市中胜出?

长安区块链

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