【深度学习】小米深度学习平台架构与实现

2017 年 8 月 8 日 产业智能官 IT大咖说

内容来源:2016年12月16日,小米云平台深度学习研发工程师陈迪豪在“GIAC 全球互联网架构大会”进行《支撑百度搜索引擎99.995%可靠名字服务架构设计》演讲分享。

阅读字数:2783 | 4分钟阅读

摘要

深度学习的概念源于人工神经网络的研究,含多隐层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。

大咖演讲视频

http://t.cn/R9ONt8f

机器学习与深度学习应用

机器学习是通过机器进行自主学习数据而非以编码的方式;深度学习是机器学习的一个分支,主要包括四种最基本的网络结构。

CNN是卷积神经网络。通过卷积网络的模型,可以高效地处理图像分类或人脸识别等应用。

MLP是多层感知机,也就是传统的神经网络。已经被Google大量应用在Youtube视频推荐和APP推荐上。

RNN模型是在神经元里加入带记忆的神经元结构,可以处理和时间序列有关的问题。

RL是Alphago用到的增强学习,它的底层也用到一些深度学习技术。

CaseStudy:Image Classification

假如有一个应用要通过大量图片训练分辨出猫和狗的图片。如果按照传统的方法,程序员自己写应用来区别猫狗图片,可能需要很多规则和图形处理技巧,必须是一个图像专家。

但现在有了神经网络,输入只是数据,只要定义一个简单的神经网络,把应用写好后通过数据训练,就能实现一个效果不错的图像分类应用。

Google已经开源了Inception的模型,是层数比较高的一个多层神经网络。这个网络有些复杂,用GPU机器可能要训练两到三周才能实现。有了Tensorflow这样的工具后,可以在Github地址上直接下载它的模型。

CaseStudy:Game AI

GameAI是游戏人工智能,通过图像的结果用增强学习和Qlearning的算法,就可以实现它自动最大化地得到分数。

Introduce Tensorflow

Tensorflow是Google开源的一个Deep Learning Library,提供了C++和Python接口,支持使用GPU和CPU进行训练,也支持分布式大规模训练。

在使用Tensorflow的时候,只写一个静态纯文本的文件,通过Python解释器去运行,所以Tensorflow本质上只是一个Deep Learning Library。

Summary Of Tensorflow

Tensorflow这个Library需要人工安装,脚本需要手动运行,环境需要手动配置。分布式的Tensorflow要把一个脚本拷贝到多台机器上,手动配置。要进行代码调优需要手动Run和Tune。

我们想做Tensorflow模型调优,但服务器可能出现OOM、可能使用的端口被别人占用、也可能磁盘出现故障,服务器环境变成应用开发者的负担。

分布式Tensorflow同样需要把代码拷贝到分布式的各台机器上,且不论Tensorflow的性能是否随着节点数越多而增强,服务器维护成本已呈线性增加了。

虽然Google开源了一个非常好的深度学习工具,但它并没有解决深度学习应用部署和调度的问题。

有人说过,任何复杂的问题都能通过抽象来解决。

我们在中间引入一个分布式的管理系统,让上层业务应用不需要直接管理底层资源,由统一的调度系统去实现。

深度学习平台架构与设计

Cloud-ML:The Principles

我们希望这是一个云计算,而不是提供裸机的服务。用户只需写好应用代码提交,不用通过Ssh或登录到服务器上用脚本运行。

我们想把模型的训练和服务进行集成。一个模型训练完成后会得到一些模型文件,可以直接把这些模型文件应用起来。

我们希望这个平台是高可用的,即使用户的任务训练失败,也能重新给用户做一个调度。

用户之间的任务是需要做资源隔离和动态调度。

我们希望能支持并发的训练。

通过Automatically Tuning平台,用户可以一次提交多个超参数组合,让它并行训练,等训练结束可以直接看到效果。

Cloud-ML:All-In-One Platform

目前这个平台已经为用户提供深度学习框架的开发环境,开发完之后可以把代码提交上去,然后就可以训练,训练结果会直接保存在我们自己的分布式存储里。用户可以通过这个平台起一个RPC服务,他的手机或业务服务器能够直接调用这个服务。我们还提供了Model Zoo以及RPC客户端的一些功能。

这是深度学习平台的基本架构。

最上层是用户业务,有广告、搜索、游戏等,都有自己的业务场景,可以根据自己的数据格式编写一些Tensorflow、深度学习的脚本。通过Cloud-Ml的API把任务提交到服务端,由服务端创建一个容器,把它调用到真正的物理机计算资源上。

这整个大平台主要是由Tensorflow和Kubermetes实现的。由这个平台管理底层维护的CPU服务器和GPU服务器、虚拟机以及AWS的机器。

Cloud-ML:Kubernetes Inside

Kubermetes是一个容器的集群管理系统,它会依赖一个多节点的Etcd集群,有一个或多个Master去管理Kubelet节点。每个物理机会部署一个Kubelet和Docker进程,在上面会运行多个Docker的Container。

我们这个平台封装了一个Kubelet,让用户把业务代码提交上来,组成一个Docker容器的格式,然后由Kubelet去调度。

Cloud-ML:The Architecture

这是一个分层和解耦的基本架构,好处就是API服务只需要负责授权认证、任务管理,调度通过Kubermetes去做,Kubermetes的元数据都通过Etcd去存储,每一部分都利用API进行请求。这样就能把整个系统的组件解耦。

Cloud-ML:Train Job

有了深度学习平台之后,通过已经支持的API声明提交任务的名称,编写好Python代码的地址。运行代码的参数通过Post请求过来。

我们也提供SDK对API做了封装。

命令行工具Command能够直接把写好的脚本提交到云平台进行训练。还有内部集成的Web Console。

训练任务提交之后,在命令行可以看到任务训练日志。

Tensorboard可以看定义的模型结构。

Cloud-ML:Model Service

训练任务结束后可以直接起一个Model Service。因为文件已经保存在云存储里了,只要再发一个API请求,在后端也封装了一个Docker Image。

底层是依赖Google已经开源的Tensorflow Serving直接加载模型文件。

左边是Online Services,用户把模型训练完保存在这里,起一个容器,对外提供高性能的RPC服务。

Cloud-ML:Predict Client

在线服务支持Grpc和HTTP接口,理论上支持大部分编程语言。可以使用Java客户端、C++客户端、Go客户端和Python客户端,或直接在Andriod请求模型服务。

通过一个统一的接口对外提供图像相关的API,底层是由Kubermetes进行调度和资源隔离。

右边是Python的Grpc客户端,当模型起来以后,用户只需要编写二十几行Python代码,把模型的输入准备好,就可以请求服务。

Cloud-ML:Wrap-Up

在有深度学习平台以后,工作流是这样的。上面是工作环境,云端有服务器和基础架构维护的服务。用户在本地环境编写自己的Tensorflow应用,在本地验证这个应用能否跑起来。

通过Submit Train Job的API把任务提交到云端,真正用GPU或CPU训练的代码就在云端运行。运行完之后会把模型保存到分布式存储里面。

用户可以用官方提供的Test TF APP去看模型训练的效果如何,如果没问题,在用户自己的环境调用Deploy Model的API,这样就会把Model拿出来起一个容器,对外提供RPC服务。

用户就可以选择自己喜欢的客户端,用RPC的方式请求模型服务。

深度学习平台实践与应用

Practice:Distributed Training

支持分布式训练。用户在Python脚本里定义了一系列参数,把这个脚本拷贝到各台机器上去运行。

我们让用户把分布式节点个数和当前进程角色通过环境变量定义,环境变量名是固定的。这样它只需要一个环境变量就可以定义进程在分布式训练里的角色。

我们把用户的脚本拿出来以后,不需要它去管理服务器的环境,只需要声明这个集群有多少个PS、Worker和Master,把这些参数提交给Cloud-Ml的API服务,由它来申请可用的IP和端口。

Practice:Storage Integration

我们对存储系统做了集成。开源的Tensorflow目前只支持本地存储,因为我们在云端训练,任务由我们调度到特定的机器,用户不可能直接把训练数据放到本地。

我们希望用户能直接访问我们的分布式存储,所以对Tensorflow源码做了修改。提交任务的时候可以直接指定一个FDS的路径,系统就能根据用户的权限直接读取训练数据。

对Google官方的Tensorflow做了拓展。训练完之后数据全部放在分布式存储里,用Tensorflow指定FDS路径。

训练完把模型导出到FDS以后,通过Cloud-Ml的API创建一个服务,加载它的模型文件。

针对不同的模型声明不同的请求数据,输入类型和输入的值通过Json定义,就可以请求模型服务了。

Practice:Support HPAT

HPAT是神经网络里的超参数自动调优,极大缩短了科研人员和专注做算法模型人员的时间。

Practice:Dependency Management

让用户提交代码的时候提交一个标准的Python Package。

Practice:BringYour Own Image

让用户的Docker直接提交到Kubermetes集群里,真正彻底解决用户依赖的问题。

Practice:ModelZoo

我们把Model文件放到存储中,通过API把Paper实现了,不同的Model都可以部署到这个平台上,这样就可以通过RPC来直接访问这个服务了。

总结

今天主要给大家分享了深度学习的应用,以及在思考做一个深度学习平台之后,我们的考虑和架构设计,希望能给大家带来一些帮助。我们也相信云计算大数据时代已经到来,下一个时代将会是深度学习,并且未来会继续往云深度学习发展。谢谢大家!

今天的分享到此结束,谢谢大家!

 



新一代技术+商业操作系统:AI-CPS OS

     

新一代技术+商业操作系统(AI-CPS OS:云计算+大数据+物联网+区块链+人工智能分支用来的今天,企业领导者必须了解如何将“技术”全面渗入整个公司、产品等“商业”场景中,利AI-CPS OS形成字化力量,实现行业的重新布局、企业的重新构建和自我的焕然新生,在行业、企业和自身三个层面勇立鳌头。


数字化力量与行业、企业及个人三个层面的交叉,形成了领导力模式,使数字化融入到领导者所在企业与领导方式的核心位置。

  • 分辨率革命种力量能够使人在更加真实、细致的层面观察与感知现实世界和数字化世界正在发生的一切,进而理解和更加精细地进行产品控制、事件控制和结果控制。

  • 复合不确定性:数字化变更颠覆和改变了领导者曾经仰仗的思维方式、结构和实践经验,其结果就是形成了复合不确定性这种颠覆性力量。主要的不确定性蕴含于三个领域:技术、文化、制度。

  • 边界模糊化:数字世界与现实世界的不断融合成CPS不仅让人们所知行业的核心产品、经济学定理和可能性都产生了变化,还模糊了不同行业间的界限。这种效应正在向生态系统、企业、客户、产品快速蔓延。


领导者无法依靠某种单一战略方法来应对多维度的数字化变革。随着变革范围不断扩大,一切都几乎变得不确定,即使是最精明的领导者也可能失去方向。面对新一代技术+商业操作系统(AI-CPS OS:云计算+大数据+物联网+区块链+人工智能颠覆性的数字化力量,领导者必须在行业、企业与个人这三个层面都保持领先地位。


如果不能在上述三个层面保持领先,领导力将会不断弱化并难以维继: 

  • 重新进行行业布局:你的世界观要怎样改变才算足够?你必须对行业典范进行怎样的反思?

  • 重新构建你的企业:你的企业需要做出什么样的变化?你准备如何重新定义你的公司?

  • 重新打造新的自己:你需要成为怎样的人?要重塑自己并在数字化时代保有领先地位,你必须如何去做?


子曰:“君子和而不同,小人同而不和。”  《论语·子路》

云计算、大数据、物联网、区块链和 人工智能,像君子一般融合,一起体现科技就是生产力。


如果说上一次哥伦布地理大发现,拓展的是人类的物理空间。那么这一次地理大发现,拓展的就是人们的数字空间。

在数学空间,建立新的商业文明,从而发现新的创富模式,为人类社会带来新的财富空间。

云计算,大数据、物联网和区块链,是进入这个数字空间的船,而人工智能就是那船上的帆,哥伦布之帆!


人工智能通过三个方式激发经济增长:

  1. 创造虚拟劳动力,承担需要适应性和敏捷性的复杂任务,即“智能自动化”,以区别于传统的自动化解决方案;

  2. 对现有劳动力和实物资产进行有利的补充和提升,提高资本效率;

  3. 人工智能的普及,将推动多行业的相关创新,开辟崭新的经济增长空间。


新一代信息技术(云计算、大数据、物联网、区块链和人工智能)的商业化落地进度远不及技术其本身的革新来得迅猛,究其原因,技术供应商(乙方)不明确自己的技术可服务于谁,传统企业机构(甲方)不懂如何有效利用新一代信息技术创新商业模式和提升效率。


“产业智能官”,通过甲、乙方价值巨大的云计算、大数据、物联网、区块链和人工智能的论文、研究报告和商业合作项目,面向企业CEO、CDO、CTO和CIO,服务新一代信息技术输出者和新一代信息技术消费者。


助力新一代信息技术公司寻找最有价值的潜在传统客户与商业化落地路径,帮助传统企业选择与开发适合自己的新一代信息技术产品和技术方案,消除新一代信息技术公司与传统企业之间的信息不对称,推动云计算、大数据、物联网、区块链和人工智能的商业化浪潮。


给决策制定者和商业领袖的建议:

  1. 迎接新一代信息技术,迎接人工智能:无缝整合人类智慧与机器智能,重新

    评估未来的知识和技能类型;

  2. 制定道德规范:切实为人工智能生态系统制定道德准则,并在智能机器的开

    发过程中确定更加明晰的标准和最佳实践;

  3. 重视再分配效应:对人工智能可能带来的冲击做好准备,制定战略帮助面临

    较高失业风险的人群;

  4. 超越自动化,开启新创新模式:利用具有自主学习和自我控制能力的动态机

    器智能,为企业创造新商机;

  5. 开发人工智能型企业所需新能力:员工团队需要积极掌握判断、沟通及创造

    性思维等人类所特有的重要能力。对于中国企业来说,创造兼具包容性和多

    样性的文化也非常重要。


新一代技术+商业操作系统(AI-CPS OS:云计算+大数据+物联网+区块链+人工智能作为新一轮产业变革的核心驱动力,将进一步释放历次科技革命和产业变革积蓄的巨大能量,并创造新的强大引擎。

重构生产、分配、交换、消费等经济活动各环节,形成从宏观到微观各领域的智能化新需求,催生新技术、新产品、新产业、新业态、新模式。引发经济结构重大变革,深刻改变人类生产生活方式和思维模式,实现社会生产力的整体跃升。

新一代技术+商业操作系统(AI-CPS OS:云计算+大数据+物联网+区块链+人工智能正在经历从“概念”到“落地”,最终实现“大范围规模化应用,深刻改变人类生活”的过程。





产业智能官  AI-CPS



新一代技术+商业操作系统(AI-CPS OS:云计算+大数据+物联网+区块链+人工智能),在场景中状态感知-实时分析-自主决策-精准执行-学习提升认知计算机器智能实现产业转型升级、DT驱动业务、价值创新创造的产业互联生态链




长按上方二维码关注微信公众号: AI-CPS,更多信息回复:


新技术“云计算”、“大数据”、“物联网”、“区块链”、“人工智能新产业:智能制造”、“智能驾驶”、“智能金融”、“智能城市”、“智能零售新模式:案例分析”、“研究报告”、“商业模式”、“供应链金融”、“财富空间”






本文系“产业智能官”(公众号ID:AI-CPS)收集整理,转载请注明出处!



版权声明产业智能官(公众号ID:AI-CPS推荐的文章,除非确实无法确认,我们都会注明作者和来源。部分文章推送时未能与原作者取得联系。若涉及版权问题,烦请原作者联系我们,与您共同协商解决。联系、投稿邮箱:erp_vip@hotmail.com





登录查看更多
2

相关内容

Google发布的第二代深度学习系统TensorFlow
深度学习自然语言处理概述,216页ppt,Jindřich Helcl
专知会员服务
212+阅读 · 2020年4月26日
《强化学习—使用 Open AI、TensorFlow和Keras实现》174页pdf
专知会员服务
136+阅读 · 2020年3月1日
一网打尽!100+深度学习模型TensorFlow与Pytorch代码实现集合
【综述】7篇非常简洁近期深度学习综述论文
专知会员服务
74+阅读 · 2019年12月31日
《动手学深度学习》(Dive into Deep Learning)PyTorch实现
专知会员服务
119+阅读 · 2019年12月31日
开源书:PyTorch深度学习起步
专知会员服务
50+阅读 · 2019年10月11日
7个实用的深度学习技巧
机器学习算法与Python学习
16+阅读 · 2019年3月6日
资源 | 《白话深度学习与TensorFlow》
AI研习社
5+阅读 · 2018年9月22日
深度学习开发必备开源框架
九章算法
12+阅读 · 2018年5月30日
基于TensorFlow的深度学习实战
七月在线实验室
9+阅读 · 2018年4月25日
模型、框架及应用:深度学习系列16讲
云栖社区
4+阅读 · 2018年3月12日
深度学习 | 免费使用Google Colab的GPU云计算平台
沈浩老师
12+阅读 · 2018年2月4日
深度学习之CNN简介
Python技术博文
20+阅读 · 2018年1月10日
tensorflow系列笔记:流程,概念和代码解析
北京思腾合力科技有限公司
30+阅读 · 2017年11月11日
TensorFlow学习笔记2:构建CNN模型
黑龙江大学自然语言处理实验室
3+阅读 · 2016年6月14日
Neural Approaches to Conversational AI
Arxiv
8+阅读 · 2018年12月13日
W-net: Bridged U-net for 2D Medical Image Segmentation
Arxiv
19+阅读 · 2018年7月12日
Arxiv
11+阅读 · 2018年5月13日
Arxiv
11+阅读 · 2018年1月11日
VIP会员
相关VIP内容
深度学习自然语言处理概述,216页ppt,Jindřich Helcl
专知会员服务
212+阅读 · 2020年4月26日
《强化学习—使用 Open AI、TensorFlow和Keras实现》174页pdf
专知会员服务
136+阅读 · 2020年3月1日
一网打尽!100+深度学习模型TensorFlow与Pytorch代码实现集合
【综述】7篇非常简洁近期深度学习综述论文
专知会员服务
74+阅读 · 2019年12月31日
《动手学深度学习》(Dive into Deep Learning)PyTorch实现
专知会员服务
119+阅读 · 2019年12月31日
开源书:PyTorch深度学习起步
专知会员服务
50+阅读 · 2019年10月11日
相关资讯
7个实用的深度学习技巧
机器学习算法与Python学习
16+阅读 · 2019年3月6日
资源 | 《白话深度学习与TensorFlow》
AI研习社
5+阅读 · 2018年9月22日
深度学习开发必备开源框架
九章算法
12+阅读 · 2018年5月30日
基于TensorFlow的深度学习实战
七月在线实验室
9+阅读 · 2018年4月25日
模型、框架及应用:深度学习系列16讲
云栖社区
4+阅读 · 2018年3月12日
深度学习 | 免费使用Google Colab的GPU云计算平台
沈浩老师
12+阅读 · 2018年2月4日
深度学习之CNN简介
Python技术博文
20+阅读 · 2018年1月10日
tensorflow系列笔记:流程,概念和代码解析
北京思腾合力科技有限公司
30+阅读 · 2017年11月11日
TensorFlow学习笔记2:构建CNN模型
黑龙江大学自然语言处理实验室
3+阅读 · 2016年6月14日
Top
微信扫码咨询专知VIP会员