如果说机器是人类手的延伸交通工具是人类腿的延伸,那么人工智能就是人类大脑的延伸甚至可以帮助人类自我进化,超越自我。人工智能也是计算机领域最前沿和最具神秘色彩的学科,科学家希望制造出代替人类思考的智能机器,艺术家将这一题材写进小说,搬上银幕,引发人们无限的遐想。然而,作为一门严肃的学科,人工智能在过去的半个多世纪中发展却不算顺利。过去的很多努力还是基于某些预设规则的快速搜索和推理,离真正的智能还有相当的距离,或者说距离创造像人类一样具有抽象学习能力的机器还很遥远。.

随着大数据和云计算的发展,实现一个高可用、分布式的机器学习平台成为一个基本需求。无论是 Caffe、TensorFlow,还是我们自研的高性能机器学习库,都只是解决数值计算、算法实现以及模型训练的问题,对于任务的隔离、调度、Failover 都需要上层平台实现。

深度学习框架主要提供神经网络模型实现,用于进行模型训练模型训练只是机器学习和深度学习中的一环,除此之外还有数据输入、数据处理、模型预测、业务应用等重要环节。搭建机器学习平台的目的就是整合机器学习、深度学习各环节,为开发者提供一体化服务的平台。预期达到的效果:加快机器学习的开发速度缩减迭代周期;同时能够将计算能力、模型开发能力共享提升开发效率和业务效果也能够将资源合理调度,提高资源利用率

机器学习训练集群与传统HPC集群(High-Performance Computing 高性能计算集群)有重大区别,分别体现在计算服务器选型、分布式训练、网络设备、存储系统、作业调度系统。

那么设计一个针对机器学习全流程的基础架构平台,需要涵盖哪些功能呢?

  • 首先,必须实现资源隔离。在一个共享底层计算资源的集群中,用户提交的训练任务不应该受到其他任务的影响,尽可能保证 CPU、内存、GPU 等资源隔离。如果使用 Hadoop 或 Spark 集群,默认就会在任务进程上挂载 cgroups,保证 CPU 和内存的隔离,而随着 Docker 等容器技术的成熟,我们也可以使用 Kubernetes、Mesos 等项目来启动和管理用户实现的模型训练任务
  • 其次,实现资源调度和共享。随着通用计算的 GPU 流行,目前支持 GPU 调度的编排工具也越来越多,而部分企业内还存在着 GPU 专卡专用的情况,无法实现资源的动态调度和共享,这必然导致计算资源的严重浪费。在设计机器学习平台时,需要尽可能考虑通用的集群共享场景,例如同时支持模型训练、模型存储以及模型服务等功能,可以对标的典例就是 Google Borg 系统。
  • 然后,平台需要有灵活的兼容性。目前机器学习业务发展迅速,针对不同场景的机器学习框架也越来越多,灵活的平台架构可以兼容几乎所有主流的应用框架,避免基础架构因为业务的发展而频繁变化。目前 Docker 是一种非常合适的容器格式规范,通过编写 Dockerfile 就可以描述框架的运行环境和系统依赖,在此基础上我们可以在平台上实现了 TensorFlow、MXNet、Theano、CNTK、Torch、Caffe、Keras、Scikit-learn、XGBoost、PaddlePaddle、Gym、Neon、Chainer、PyTorch、Deeplearning4j、Lasagne、Dsstne、H2O、GraphLab 以及 MiniFlow 等框架的集成。
  • 最后,需要实现机器学习场景下的 API 服务。针对机器学习的模型开发、模型训练和模型服务三个主要流程,我们可以定义提交训练任务、创建开发环境、启动模型服务、提交离线预测任务等 API,用熟悉的编程语言来实现 Web service 接口。

基于云服务机器学习平台应具备的基本特性:

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

平台设计还需要考虑和关注内容:

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

在自己维护和搭建机器学习平台,可以考虑基于Kubernetes 的容器调度集群,可以通过管理 CPU、GPU 等异构资源,通过制作 Docker 镜像的方式来支持各种机器学习框架的使用, 在考虑AI基础架构的时候,需要考虑的因素可参照如下图:

参考架构


Azure AI 总览

AWS AI平台总览

PAI架构图

腾讯

微博

小米

饿了么

Google-like


要实现一个 Google-like 的云深度学习平台,大家可以参考下面这三个步骤。

当然,要实现一个涵盖数据引入、数据处理、特征工程以及模型评估功能的机器学习平台,我们还需要集成 HDFS、Spark、Hive 等大数据处理工具实现类似 Azkaban、Oozie 的工作流管理工具,在易用性、低门槛方面做更多的工作。

总结

最后总结一下,机器学习的基础架构包含了机器学习算法、机器学习类库以及机器学习平台等多个层次的内容。根据业务的需求,我们可以选择特定的领域进行深入研究和二次开发,利用轮子和根据需求改造轮子同样重要。

在机器学习与人工智能非常流行的今天,希望大家也可以重视底层基础架构,算法研究员可以 理解更多工程的设计与实现,而研发工程师可以了解更多的算法原理与优化,在合适的基础架构平台上让机器学习发挥更大的效益,真正应用的实际场景中。

参考资料:


ML平台_设计要点的更多相关文章

  1. ML平台_微博深度学习平台架构和实践

    ( 转载至: http://www.36dsj.com/archives/98977)  随着人工神经网络算法的成熟.GPU计算能力的提升,深度学习在众多领域都取得了重大突破.本文介绍了微博引入深度学 ...

  2. ML平台_饿了么实践

    (转载至:https://zhuanlan.zhihu.com/p/28592540) 说到机器学习.大数据,大家听到的是 Hadoop 和 Spark 居多,它们跟 TensorFlow 是一个什么 ...

  3. ML平台_小米深度学习平台的架构与实践

    (转载:http://www.36dsj.com/archives/85383)机器学习与人工智能,相信大家已经耳熟能详,随着大规模标记数据的积累.神经网络算法的成熟以及高性能通用GPU的推广,深度学 ...

  4. Java生鲜电商平台-商城优惠券设计要点复盘与总结

    Java生鲜电商平台-商城优惠券设计要点复盘与总结 Java生鲜电商平台本文将从优惠券设计用户端,需求端,业务流程全方案解析优惠券设计方案 为什么要设计优惠券 设计优惠券的核心:拉新和促活 新产品上线 ...

  5. 【转】Flume(NG)架构设计要点及配置实践

    Flume(NG)架构设计要点及配置实践   Flume NG是一个分布式.可靠.可用的系统,它能够将不同数据源的海量日志数据进行高效收集.聚合.移动,最后存储到一个中心化数据存储系统中.由原来的Fl ...

  6. VxWorks中的中断应用设计要点

    硬件中断处理是实时系统设计中的关键性问题,设计人员有必要对其作深入研究,以更好地满足开发工作需要.文中以VxWorks操作系统为软件平台,讨论了在实时系统中进行中断应用设计时要注意的一些问题.由于软硬 ...

  7. 权限模块_整体方案说明_设计实体&映射实体_实现初始化权限数据的功能

    权限模块_整体方案说明 要点说明 权限就是控制功能的使用(功能对应着URL). 对功能的控制就是对URL的访问控制. 在我们的程序中,一个功能对应一个或两个URL: 1,例如列表或删除功能,只对应一个 ...

  8. HDFS的架构和设计要点

    HDFS的架构和设计要点 转 大数据之路 发布于 2012/10/11 23:00 字数 4487 阅读 495 收藏 1 点赞 0 评论 0 撸了今年阿里.头条和美团的面试,我有一个重要发现.... ...

  9. Alink漫谈(二) : 从源码看机器学习平台Alink设计和架构

    Alink漫谈(二) : 从源码看机器学习平台Alink设计和架构 目录 Alink漫谈(二) : 从源码看机器学习平台Alink设计和架构 0x00 摘要 0x01 Alink设计原则 0x02 A ...

随机推荐

  1. iOS原生项目集成React Native模块

    今天周末,弄弄Native和React Native之间的交互.首先,先在iOS原生项目中集成React Native模块: 注意事项: 1.因为react native的版本问题,部分细节可能有所不 ...

  2. extjs技术

    转载:http://www.cnblogs.com/willick/p/3168809.html 转载 :http://www.cnblogs.com/youring2/archive/2013/08 ...

  3. Enhancement in SAP abap.

    Recently I have been taught through how to do enhancement for those standard programs. Th reason for ...

  4. HDU2717-Catch That Cow (BFS入门)

    题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2717 Catch That Cow Time Limit: 5000/2000 MS (Java/O ...

  5. Android Hook框架adbi源码浅析(一)

    adbi(The Android Dynamic Binary Instrumentation Toolkit)是一个Android平台通用hook框架,基于动态库注入与inline hook技术实现 ...

  6. Ubuntu16.04安装OpenCV3.2以及PCL1.8

    最近在学习slam14讲,需要配置一些环境<视觉slam十四讲> 这本书中已经给出如何配置相关环境的比较详细的说明,但是有些环境并无卵用,比如OpenCV以及PCL 这里给出自己屡试不爽的 ...

  7. render finished

  8. 格式化json

    格式化输出JSON var obj = {"args0":{"asynTarget":false,"atomicList":[{" ...

  9. J2EE中几个常用的名词解释

      1.web容器:给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP,SERVLET直接和容器中的环境变量接接口互,不必关注其它系统问题.主要有WEB服务器来实现.例如:TOM ...

  10. 12 IO流

    File类:构造方法    * File(String pathname):根据一个路径得到File对象    * File(String parent, String child):根据一个目录和一 ...