2016年4月21日,由InfoQ主办的 QCon全球软件开发大会 在北京举行。超过150名国内外技术专家将为大家带来一场技术盛宴。本文综述了QCon北京大会 亚马逊AWS深度创新实践 专场的内容,四位分享者来自亚马逊和App Annie。本专场的分享可视为了解亚马逊AWS深度创新实践现状的渠道窗口。
从亚马逊AWS于2006年3月14日上线Amazon S3服务至今,已经过去了整整十年时间。AWS作为云计算领域的开拓者之一,其在保障云服务的弹性、安全性、高可用性、成本可控性等方面积累了大量的实践经验与知识,同时也推动了全球云服务行业的快速发展。在AWS迎来10周年纪念之际,通过本专场分享的AWS上构建个性化服务的实践过程,展示云计算相关技术的创新成果,演讲内容将覆盖深度学习、Python开发、大数据平台架构、容器管理、物联网应用等多个技术领域,从而更多地了解AWS的创新实践。
Deep Learning with Python
费良宏现担任亚马逊AWS中国首席云计算技术顾问一职,他分享的话题是Deep Learning with Python。
深度学习、人工只能和机器学习
2016年激动人心的事件之一”人机大战”:2016年3月份AlphaGo跟李世石大战,4:1完胜。这个事件使得机器学习变得炙手可热起来,就好像1997年的时候,深蓝大战国际象棋那个事件又一次纳入了人们的视野,这个人机大战后面的理论依据是深度学习的模型。那么,深度学习、人工智能和机器学习这三者之间的区别是什么呢? 简单来说人工智能是一个很庞杂、很庞大的学科,在人工智能的领域里面,机器学习是它重要的组成部分,而深度学习又是机器学习的其中一个部分。只不过最近的若干年里面,深度学习包括机器学习变得炙手可热,从整个体系来说,它们都是在人工智能这样一个框架之内。人工智能的历史可以追溯到50年代,有很多人提出机器学习和神经网络这样一些概念和原理。随着发展,尤其是计算机、摩尔定律规律不断地提升我们的计算能力,尤其是在2000年以后有了很多里程碑式的变化,2006年就有了深度学习这个概念的出现。
机器学习到底能做什么?
所谓机器学习就是由已知的答案开始,必须要有数据,这是我们启动一个机器学习应用的起点。其次,明确目标到底是预测什么?这个照片是谁?不是谁?这是一个熊还是人,这是一个明确目标,不能模棱两可。最后,要选择那些可以被用来去探测的变量或者特征。所以有的时候机器学习我们也叫特征工程。用监督学习方法去应用机器学习的时候,需要对数据进行训练,这也是经常采用的一个方法,比如说AlphaGO就是这样。
机器学习核心就是研究这类算法,它是帮助我们从数据当中分析他的规律,利用这个规律对未知的学科进行预测,如果用一个词描述机器学习的话,我经常会把这个词用作我自己认为的一个标签,就是预测,它就是用来去预测未来的,但是它的基础是已知的基础和知识。机器学习是有传统的人工智能理论、信息理论、统计模型等等,它并不是孤立存在的。
机器学习基于过去的实施和依据发现趋势和模式的。它提供了对结果的洞察能力,帮助我们揭示未来的概率,而不是告诉我们过去发生的事情,这跟很多数据分析是不一样,我们是对以往的数据进行加工,得到一个对以往深度学习的一个结论,而机器学习强调的更多是对未来的预测。
为什么要深度学习?
传统的机器学习注重的是特征工程,而深度学习关心的是原始数据。有的时候我们强调说深度学习模型的产生和结果我们人是并不了解它里面的推理过程的,我们看到是个黑盒子,原因就在于此,因为数据量非常地庞大,所以只有机器通过大量的运算才可以推导出来这么一个结果,这就是机器学习和深度学习的对比。
为什么要深度学习?深度学习大概是很早就已经有这样一个概念了,在80年代的时候开始探讨神经网络的时候已经有了一个原始出行出现了,为什么今天会把深度学习拿出来变得炙手可热呢?今天我们面对如此复杂的大数据,大家动不动就是PB、TB这样的规模下,所以我们对性能的要求就注定了我们只能选择有限的一些算法,其中深度学习就是目前看起来最容易达到彼岸的一个桥梁。
还是以刚才机器学习为例,深度学习是什么呢?如果刚才我们从这张照片得到是熊的话,深度学习可以接触更多的层次和特征来,比如说这是熊,背景是黄石公园,并且它的动作是在觅食。比如说这张图可以判断出来这个目标主体是一个鹰,位置在佛罗里达国家的公园里面,它所处的状态是在学习;类似这样的结果就是深度学习,大家是不是感觉到深度学习非常地玄妙吧。
为什么要用Python开发这些东西呢?
Python是一个胶水的语言,可以将更多的资源结合在一起,你可以很快地使用它去开发,并且可以运用大量的资源,去快速地去服务于你的功能。另外Python框架资源非常非常丰富,目前为止我还没有看到有一种语言可以超过Python本身,再就是Python开源和海量的技术社区支持的,这个也是很大的优势。市场当中有大量的基于Python开发出来的框架,你可以做充分的程序化的设计和实践,大量的第三方项目应用都基于它,它所有文档非常非常地棒,包括有教程,整个都是Python的风格,如果你开始学习,可以用它作为你的定制进行深度学习实践。
心怀伟大你将会变得伟大
人的思维可以分成两大类,第一种类叫科学的思维,就是我们要探索一个事物的本质和原理,我们要穷极一生去研究。第二个叫做工程的思维,我不关心它的原理是什么,我只关心结果。深度学习它实际上的本质是一门科学。但是对一个程序员、对开发者来说,我们关心的并不是科学的本身,那些微妙的原理,我们关心的是如何用这些资源能够开发出能够改变世界的应用的程序,让我们的程序从此变得更智能、更有意思。如果从今天开始,哪怕你没有一个复杂的知识,没有一个高深非常玄妙的背景,你也同样可以从事深度的开发,你也可以开发出让别人瞠目结舌的深度智能的应用。
初创公司大数据平台架构演进之路
王佳分享的话题是初创公司大数据平台架构演进之路。王佳现为App Annie大数据架构师,同时也是其大数据团队及数据实施团队的负责人。
创业公司构建大数据面临的挑战
创业公司对于大数据来说, 挑战会更加突出:
人员成本。大数据它需要一个比较专业的技术团队,这里面会有两方面的人员,一个是专业的大数据工程师,第二你会需要一个运维的团队。
时间成本,大数据因为它是假设在很多传统的软件行业之上的一个技术结构。所以你需要去完成一个完整的可扩展的灵活的大数据平台,本身去构建这样一个平台的时候,需要花费更多的额外的精力,所以说时间上又是一个很关键的成本。
运维,尤其是最近几年运维人员、运维成本越来越显著在大数据的开发领域,你的需求不同于传统的软件开发,有一个完整的定义,需求实现了这个产品就算结束了。大数据也需要这个平台持续地运行,不断地有新的数据进入你的系统需要你做分析,你永远没办法预知将来某一天你的是否是不是需要核实。运维需要几百台服务器,若干个服务组件稳定地运行,运维也是一个很值得关注的成本。
除此之外针对于创业公司来说,就是需求总是在变化,怎么去做这样一个易于扩展的一个平台,去满足不断变化的需求,这是创业公司在大数据的时候所关心的一个挑战。
APP Annie如何应对大数据面临的挑战
APP Annie差不多每天会处理20TB的压缩数据。
APP Annie整个数据处理是运行在6个以上的集群,这个取决于我们那一段时间是不是有一些需要刷新的一些历史数据的任务。
APP Annie管理的话是差不多有一百到两百台左右的服务器。
APP Annie每天日常会有500多个数据处理任务需要去运行。
最终会生成覆盖全世界60多个国家的数据报告,这个就是APP Annie大数据的挑战。
大数据平台的设计原则
基于云计算服务;
数据驱动,快速响应业务需求变化;
使用工作流(Workflow Engine)。
APP Annie研发大数据平台技术架构的演化过程
APP Annie的数据演化分三个阶段:
阶段1:基于亚马逊的AWS EC2、Hadoop、Python。适合规模稳定的小型计算和小规模的数据存储,日处理50GB数据。其中,Pig用于构建数据管道,ETL和算法模型的实现;Hive用于支持数据分析和临时性的查询;通过Gateway访问集群,进行任务提交,Gateway是集群的唯一入口。
阶段2:将数据存储迁移到了AWS S3上,使用ASW EMR管理多个计算集群。在工具里边添加了新的计算工具的选择,Spark是新的计算工具,随着任务越来越多,500多个任务,在监控层做得更多的优化。日处理数据20T至50T。S3提供版本机制,避免数据误删除操作,方便调试和研究。可伸缩的存储,按需使用付费,极大节约了企业运营成本,另外,S4提供了多个集群同时读写同一个S3 buckets。
阶段3:通过AWS的云服务完成数据中心的多区域托管,数据就近处理,架构搭建非常灵活和高效。
基于云平台的容器方案实践指南
代闻分享的话题是基于云平台的容器方案实践指南。代闻现为亚马逊AWS中国解决方案架构师,负责基于AWS的云计算方案架构咨询和设计工作,同时致力于AWS云服务在国内的应用和推广工作,在大规模后台架构、物联网应用、媒体行业转型、企业混合IT与自动化运维等方面拥有广泛的设计与实践经验。
容器和云相关的一些事情
把运行环境,把代码打包在容器的交付里面,这是容器的来源。另外,虚拟机是组成云的一个基本的单元。
Docker在云上的应用场景:
无状态服务;
批处理;
持续的集成和部署;
松耦合交付;
计算单元迁移(混合云、多云)。
基于此,举个例子:你写一个程序,打包成一个Docker Engine之后,打包上去之后无论是在哪里都能它够运行,在你的数据中心里边也可以运行,它可以屏蔽掉计算的差异化,来实现混合云、多云的方案。你看到有些人在做机房和云上面的互联的时候,以前是需要我在云上重建我所有的环境,现在不用重建了。
如何解决基础资源
Docker作为虚拟化会遇到很多以前我们又会老生常谈的一些问题,这些基础资源在云上面如何解决,这是一个需要慎重考虑的一个问题,一般主要考虑如下三点:
计算
存储
网络
对计算,你需要要了解AWS的机型选择,以及Docker Engine的选择。对于存储,同样需要作出选择,实例存储、持久性的存储、共享存储、对象存储。如高持久化相干的日志、大文件放在对象存储做备份就可以了。
集群管理平台
集群管理核心要素,考虑节点与管理单元、资源管理引擎、调度器、集群状态与服务发现。集群管理平台有四种有4类:
Apache Mesos
Google Kubernetes
Docker Swarm
AWS ECS
倾听客户心声 — 利用语音科技提供个性化服务与强化用户体验
最后一场,吴宗承分享的话题是倾听客户心声 — 利用语音科技提供个性化服务与强化用户体验。吴宗承现为亚马逊AWS中国解决方案架构师,拥有超过12年的IT行业以及软件开发工作经验,擅长Scala开发,熟悉NoSQL数据库、DevOps以及Serverless架构等。
吴宗承的分享拿酒店住宿为例。首先,当你入住一个酒店的时候,你开始会发生一些跟周围或者生活资讯的一些解决的问题。如就是你的房间的空调温度、湿度,再就是你可能会放点音乐,舒缓一下自己的情绪。接下来熟悉了这个环境,这个确定了以后我开始做一些规划,我要定车,我要预定一些餐厅……这里就提出了一个IA(智能助理)的概念,同时Amazon推出了一个硬件,叫做Amazonecho,它跟后台有紧密的融合,比如说我看电视我要开空调,我完全不需要动手,用语音命令透过云端跟硬件沟通,非常的方便,他就好像会倾听客户心声,以此提高个性化服务体验。
什么是Alexa应用
Alexa应用是亚马逊提供的语音服务,可以让使用者更直接的方法和硬件沟通。Alexa提供了强大的API SDK包,可轻松制作自己的IA应用,所有的代码运行在云端。
AWS IoT的服务做整合,他可以把他现在的状态,他能接受的东西跟AWS的服务做一个沟通。Alexa它跟硬件主要的交互模式是什么?大家可以看到我的硬件其实它有一个收音的功能,把语音压缩成我们指定的格式,通过API的请求达到Alexa的服务,Alexa提供丰富的API接口。Alexa Service处理完这个之后,它用语音的结果回到你的硬件,你的语音只要在你的平台上面就可以完整地呈现。这一切在云端会通过一个安全的互动完成。
语音用户界面(VUI)设计的最佳实践原则
在进行语音开发过程中,需要注意如下几点实践原则:
让用户清楚知道该回应什么
别预期用户知道下一步会发生什么
给予用户明确清晰的选项
尽量简洁扼要
避免冗长的选项
避免复杂的交互
避免多余没意义的交互
AWS IoT开发套件
除了Alexa应用外,AWS还提供了IoT开发套件,开发套件提供了6种SDK:C SDK、JS-SDK、Arduino Library、Mobile SDK(Android、IOS),并支持市面主流开发板,如Intel、QualCOMM芯片等。以方便进行硬件个性化定制。其中,AWS IoT的设备影子技术,非常方便和贴心,且你不用担心你的隐私会流露出去。
Alexa和AWS IoT结合,使得硬件有语音交互的能力,特别是AWS物联网管理和连接设备使用起来非常简单,100行代码即可完成设置,同时结合AWS云可轻松连接数以万计的设备。