在云计算峰会 Cloud Next 17 上,Google 资深学者杰夫·迪恩 (Jeff Dean)
宣布,该公司开源的机器学习基础系统 TensorFlow 已经成为
GitHub 上最受欢迎的机器学习类项目。

   
转载:)机器学习与人工智能,相信大家已经耳熟能详,随着大规模标记数据的积累神经网络算法的成熟以及高性能通用GPU的推广,深度学习逐渐成为计算机专家以及大数据科学家的研究重点。近年来,无论是图像的分类识别和检测,还是语音生成、自然语言处理,甚至是AI下围棋或者打游戏都基于深度学习有了很大的突破。而随着TensorFlow、Caffe等开源框架的发展,深度学习的门槛变得越来越低,甚至初中生都可以轻易实现一个图像分类或者自动驾驶的神经网络模型,但目前最前沿的成果主要还是出自Google、微软等巨头企业。

TensorFlow 在机器学习业界究竟有多受欢迎?TensorFlow 项目负责人拉贾·蒙加
(Rajat Monga) 给出了几组数据:

    
Google不仅拥有优秀的人才储备和大数据资源,其得天独厚的基础架构也极大推动了AI业务的发展,得益于内部的大规模集群调度系统Borg,开发者可以快速申请大量GPU资源进行模型训练和上线模型服务,并且通过资源共享和自动调度保证整体资源利用率也很高。Google开源了TensorFlow深度学习框架,让开发者可以在本地轻易地组合MLP、CNN和RNN等模块实现复杂的神经网络模型,但TensorFlow只是一个数值计算库,并不能解决资源隔离、任务调度等问题,将深度学习框架集成到基于云计算的基础架构上将是下一个关键任务

澳门新葡亰 1

    
除了Google、微软,国内的百度也开源了PaddlePaddle分布式计算框架,并且官方集成了Kubernetes等容器调度系统,用户可以基于PaddlePaddle框架实现神经网络模型,同时利用容器的隔离性和Kubernetes的资源共享、自动调度、故障恢复等特性,但平台不能支持更多深度学习框架接口。而亚马逊和腾讯云相继推出了面向开发者的公有云服务,可以同时支持多种主流的开源深度学习框架,阿里、金山和小米也即将推出基于GPU的云深度学习服务,还有无数企业在默默地研发内部的机器学习平台和大数据服务。

自从 2015 年 11
月开源,已经有近
500 名非 Google 员工对 TensorFlow 核心项目做出贡献;到今年年初,项目在
GitHub 上的提交数已经超过了 1.4 万个。

   
面对如此眼花缭乱的云服务和开源技术,架构师该如何考虑其中的技术细节,从用户的角度又该如何选择这些平台或者服务呢。我将介绍小米云深度学习平台的架构设计与实现细节,希望能给AI领域的研发人员提供一些思考和启示。

在程序员提问平台 Stack Overflow上,已经有超过 5000 个与 TensorFlow
有关的问题得到了回答;TensorFlow 甚至一度抢过了 Google
云计算部门另一个开源项目 Kubernetes 的风头,两个项目正在公司内部竞争到底谁是最受欢迎的开源项目;不仅如此,斯坦福大学、加州大学伯克利分校、多伦多大学等学界名校也都紧跟潮流,开设了
TensorFlow 的有关课程。

云深度学习平台设计

在 GitHub 上和其他机器学习开源项目相比,TensorFlow 获得星数 (star count)
增长趋势是下图这样的。迪恩说 TensorFlow
居然这么受欢迎,他自己也有点没想到。


澳门新葡亰 2

    
云深度学习平台(Cloud Machine
Learning),就是基于云计算的机器学习和深度学习平台。首先TensorFlow、MXNet是深度学习框架或者深度学习平台,但并不是云深度学习平台,它们虽然可以组成一个分布式计算集群进行模型训练,但需要用户在计算服务器上手动启动和管理进程,并没有云计算中任务隔离、资源共享、自动调度、故障恢复以及按需计费等功能。因此我们需要区分深度学习类库以及深度学习平台之间的关系,而这些类库实现的随机梯度下降反向传播等算法却是深度学习应用所必须的,这是一种全新的编程范式,需要我们已有的基础架构去支持。

TensorFlow 是 Google
的一套综合性的机器学习系统框架,开源之前是仅供该公司内部使用,从搜索排名到应用商城推荐,从
Gmail 反垃圾到 Android 系统,被几乎所有产品团队所采用。迪恩透露,Google
内部有超过 4000 个项目里能找到 TensorFlow 的配置文件。它的开发者是
Google 内部最早系统性地研究人工智能技术的团队——Google 大脑。TensorFlow
已经是 Google
的第二代机器学习工具,前身是 DistBelief。

云计算和大数据发展超过了整整十年,在业界催生非常多优秀的开源工具,如实现了类似AWS
IaaS功能的OpenStack项目,还有Hadoop、Spark、Hive等大数据存储和处理框架,以及近年很火的Docker、Kubernetes等容器项目,这些都是构建现代云计算服务的基石。

DistBelief 的缺点是仅局限于神经网络,配置难度高,和 Google
内部的产品联系紧密,这就决定了它很难与外界分享。从 DistBelief
伊始,迪恩一直想要要把内部的机器学习工具开放出去,为更多人所用(事实上
Google 一直也是这样做的,云端部署工具 Kubernetes、办公套件G Suite
都是例子)。他的想法也跟业界趋势以及公司的想法吻合,Google 批准他在
DistBelief
的基础上对代码和架构进行加工简化,在合适的时候开源,TensorFlow
就这样诞生了。

这些云服务有共同的特点,例如我们使用HDFS进行数据存储,用户不需要手动申请物理资源就可以做到开箱即用,用户数据保存在几乎无限制的公共资源池中,并且通过租户隔离保证数据安全,集群在节点故障或者水平扩容时自动触发Failover且不会影响用户业务。虽然Spark通过MLib接口提供部分机器学习算法功能,但绝不能替代TensorFlow、Caffe等深度学习框架的作用,因此我们仍需要实现Cloud
Machine Learning服务,并且确保实现云服务的基本特性

迪恩说开发(并开源) TensorFlow
有三个目标:建立一个通用的机器学习平台,让它成为世界上最好的平台,然后再把它开放给所有人。

总结为下面几条:

澳门新葡亰 3

  • 屏蔽硬件资源保证开箱即用
  • 缩短业务环境部署和启动时间
  • 提供“无限”的存储和计算能力
  • 实现多租户隔离保证数据安全
  • 实现错误容忍和自动故障迁移
  • 提高集群利用率和降低性能损耗 

但 Google 同意开源
TensorFlow,除了迪恩的理想之外还有更多现实的考虑。作为科技公司的 Google
是一家营利组织。Google Cloud 对 TensorFlow
的支持是最好的,而该部门在营收贡献上的重要性正在逐渐提升。包括 Google
Cloud 在内的“其他收入”,在 Google 上一季度财报中共计 34
亿美元,占季度总营收
13%。虽然比重还很小,但仍体现出了极高的增长性,最主要的增长来自 Google
Cloud。

相比于MapReduce或者Spark任务,深度学习的模型训练时间周期长,而且需要调优的超参数更多,平台设计还需要考虑以下几点:

澳门新葡亰 4

  • 支持通用GPU等异构化硬件
  • 支持主流的深度学习框架接口
  • 支持无人值守的超参数自动调优
  • 支持从模型训练到上线的工作流

考虑到深度学习技术广阔的前景,如果 TensorFlow
有助于人们更多涉足深度学习,而 Google Cloud
又是深度学习训练和应用最佳的承载平台,何不将它开源呢?这笔账不难算。

这是我个人对云深度学习平台的需求理解,也是小米在实现cloud-ml服务时的基本设计原则。虽然涉及到高可用、分布式等颇具实现难度的问题,但借助目前比较成熟的云计算框架和开源技术,我们的架构和实现基本满足了前面所有的需求

来源:pingwest 作者:光谱

云深度学习平台架构


遵循前面的平台设计原则,我们的系统架构也愈加清晰明了,为了满足小米内部的所有深度学习和机器学习需求:

  • 需要有一个多租户、任务隔离、资源共享、支持多框架和GPU的通用服务平台
  • 通过实现经典的MLP、CNN或RNN算法并不能满足业务快速发展的需求,因此我们需要支持TensorFlow等用户自定义的模型结构
  • 支持高性能GPU和分布式训练是这个云深度学习平台的必须功能
  • 不仅仅是模型训练,我们还希望集成模型服务等功能来最大化用户的使用效益

计算机领域有句名言“任何计算机问题都可以通过增加一个中间层来解决澳门新葡亰,”。无论是AWS、OpenStack、Hadoop、Spark还是TCP/IP都是这样做的,通过增加一个抽象层来屏蔽底层资源,对上层提供更易用或者更可靠的访问接口。小米的cloud-ml平台也需要实现对底层物理资源的屏蔽,尤其是对GPU资源的抽象和调度,但我们不需要重新实现,因为社区已经有了很多成熟的分布式解决方案,如OpenStack、Yarn和Kubernetes。目前OpenStack和Yarn对GPU调度支持有所欠缺,虚拟机也存在启动速度慢、性能overhead较大等问题,而容器方案中的Kubernetes和Mesos发展迅速,支持GPU调度等功能,是目前最值得推荐的架构选型之一

进一步简化了整个云深度学习平台的使用流程,整体架构设计如下图:

网站地图xml地图