BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

窥视2018:AWS在人工智能与微服务上的最佳实践

| 作者 曹倩芸 关注 1 他的粉丝 发布于 2017年12月23日. 估计阅读时间: 12 分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。

刚刚结束了拉斯维加斯的2017re:Invent大会,AWS就于12月16日(上周六)带着其新的发布、新的理念携手InfoQ来到了西湖畔,布道基于人工智能、大数据、微服务、无服务器的架构实践与实现,与更多的杭州开发者探秘20+项新服务、功能、硬件背后的架构基石。

回顾2017年,AWS在各技术领域的创新可谓达到了「热火朝天」的境界。无论是身处于AI时代大潮的普通开发者群体,亦或是受制于架构飞速演进而无力取得突围的架构师们,都对奋力冒出头的架构新星们(如微服务、Serverless)如何演进、如何设计等充满了疑惑。同时伴随着AI的到来,架构和运维都受到了不同程度的挑战。带着对这些问题的解答,AWS解决方案架构师陈琳涛、吴鹏程及杭州登虹科技运维负责人高峰开始了这场布道。

AI:虚幻的泡沫 or 真实的未来 ?(查看并下载讲师ppt,提取码:x6v2

现在这个时代大家都做人工智能,很多用户稍微把大数据梳理一下,紧接着就说推荐推模型怎么做、图像识别怎么做。所以在这个过程中,很多人会问有什么方法快速实现智能?增加用户体验的更加自动化的方式是什么?

那么,要构建一个智能应用,我们需要做什么事情?首先需在云上做训练,训练完之后把相应的数据部署,部署完之后做预测和预测,之后有相应的结果拉回来,这些数据反馈回去做相应的重新计算,重新用参数的调整,形成循序不断的过程。    

众所周知,数据准备完成后还需做数据分析和数据训练、参数调优。然后模型的训练也同时需要评估与优化,这是机器学习的重要过程和阶段。

AWS从底层推出计算、存储在内的基础服务,上层是托管的人工智能或机器学习的服务,中间层包括了一些框架平台,整个架构构成了用户可快速在AWS构建智能服务的基石。

今年, AWS还推出了几项比较好的语言服务:

一是Amazon Transcribe,全托管和不断训练的自动语音识别 (ASR) 服务,可接收音频并自动生成准确的文字记录。可让你把当前的输出语音实时翻译成文本记录下来。比如一个电话过来,可以用Transcribe做成文本,也可以用Amazon Lex分析。Transcribe可以把语言记录下来,而LEX,比如你有一个提示词之后可以用,这个可以以场景存下来。

二是Amazon Translate,它属于全托管翻译服务,使用深度学习提供高质量、快速且价格合理的语言翻译服务。三是Amazon Comprehend,它主要是全托管的自然语言处理 (NLP) 服务,使用深度学习智能发掘文本内容。

在今年的re:Invent大会上,AWS还带来了一系列与人工智能相关的新平台、工具和服务。其中令人最为振奋的包括Amazon Sagemaker和AWS DeepLens。Sagemaker依然属于全托管服务,主要方便数据科学家和研发人员在智能应用的生产环境中快速轻松地构建基于机器学习的模型。        

DeepLens是适合开发人员的深度学习摄像头:

  • 完全可编程的视频摄像头                                                                
  • 设备端优化的深度学习框架 Apache                                                                
  • MXNet, Caffe, TensorFlow                                                                 
  • 教程,样例代码,示例,预制模型
  • 和Amazon Sagemaker集成         

陈琳涛总结说,AWS有很多基础架构,例如MXNet提供了很方便的接入接口,同时对GPU水平扩展有增加。AWS从GPU到现在的P3支持了Volta技术,再往上支持了FPG模式。FPG特定场景下的速度比GPU快了近10倍。另外,AWS也提供很多方便的深度学习框架,这个框架下面支持了Linux等方式。总的来说,AWS是方便、易开发的平台,可以让用户方便地搜集数据、做数据存储、数据搜集和预先判断,也包括数据清洗。有了这些干净数据之后用户就可以很方便地构建AI应用。

查看陈琳涛演讲视频

如何走向微服务和无服务器架构 ?(查看并下载讲师ppt,提取码:x6v2

架构的关键是分而治之的哲学,切分是为了软件研发、运维方便,软件的目标是整体交付。之前在其他一些线下沙龙关于架构层的分享中,以如何切分居多、如何集成内容为话题的讨论较少。而吴鹏程就以单体、SOA架构的最佳实践、微服务、无服务器架构部署的最佳实践等几个方向揭示计算架构的演进策略。

云上第一件关键的事情就是安全。安全之外,很多开发者还希望整个架构可以横向扩展,因为这样即可以实现自动扩展。更多的时候我们希望用AWS托管服务,托管服务就是AWS帮助维护架构的扩展性和可靠性。 

技术继续往前发展,越来越多的开发者愿意只关心怎么部署合适的代码、业务逻辑怎么实现,不用再担心基础设施的具体情况,甚至服务发现、后期注册、扩展性、容量、性能监测等也可以尽可能的省去部署时间,所以在这个过程中就出现了Serverless。同时,最早的单体架构是把业务逻辑组合,但演变到之后更多的是希望把业务和逻辑拆开从而实现业务的解耦,而这项技术走到极致就是微服务。实际上,微服务本质上可以理解为Serverless的衍生,Serverless本质上是为微服务服务的。

无服务器架构有很多的服务实现,核心包括Lambda和S3,以及SQS和SNS。比如部分大数据的服务在后端已有服务器运行,而当你运行时,GPU、内存多少或者是怎样的操作环境都不是服务器所要关心的。这,就是无服务器架构的核心理念。

AWS Lambda是事件驱动的函数。在Serverless中,AWS Lambda能以大规模并行方式执行代码,以响应事件。

触发Lambda的事件大概有三种类型——一是数据状态变化,二是请求端点变化,此外还有资源状态变化。关于Lamdba的注意事项和最佳实践,首先Lamdba不会交互,也不会自己存任何的数据。这个时候如果需要获取数据、状态和信息即需要访问数据库或者访问S3。同时,Lamdba跟Lamdba之间的交互也需要像数据库或一些目录去访问。所以这时Lamdba是无状态的才可以做横向扩展。

  

同时,吴鹏程还介绍了Lambda使用上的注意事项和最佳实践。首先,在快速启动上,1、要注意初始化AWS客户端连接或者数据库连接的时候的变量scope,尽可能的复用连接;2、利用CloudWatch Events来做预热;3、ENIs for VPC将会在Code Start时候被加载。此外,Lambda使用的一大利处是可以自定义CloudWatch指标,每一个Post不超过40KB,数据可以自由调整,如果数据量非常大,还可以使用Kinesis来聚合日志。

此外,Lambda还有一个绝配的东西,就是API Gateway。它是一个全托管、可拓展的RESTful API 网关服务。自带抗DDoS攻击,包括伪造请求(7层)和SYN攻击 (3层)。能为所有API调用提供缓存层 (caching layer),并自动使用Swagger模式做API接口管理。

吴鹏程总结说,微服务催生的无服务器架构能够使开发者只关注代码和业务,推动快速业务创新和迭代。而AWS利用众多Serverless的托管服务以及Lambda、API Gateway等实现整体无服务器架构,避免花费大量精力维护系统的安全、可靠、弹性,并能降低成本。

查看吴鹏程演讲视频

云端的智能化运维探索与实践 (查看并下载讲师ppt,提取码:x6v2

登虹科技在实际应用落地中面临的第一个需求即Auto Scaling。家用摄像头的计算工作量会在不同的时间段出现较大的差异,所以在运维人的期望中,是实现无人值守、增量部署、安全更新、减少包袱四点。

做人脸识别图形和图象算法需要自己训练出来模型特征并实现实时更新,另外就是本地的应用服务也有较多更新。但代码时间跑久以后会导致代码对环境有较大依赖,很多编码设置不能一直更新和增量。

所以登虹科技采用的解决方案是Chef-Solo  And Knife。Chef-Solo 模式,即 Chef 的 standalone 模式,没有专门的 Chef-server,Chef-Solo 作为一个后台服务一样运行在所管理的服务器上,通过 cookbook 来控制本机的配置管理。高峰解释说,当拿到基础操作系统进项,后续所有的操作放在Chef-Solo  cookbook里面,再放到S3上,这样进项起来的时候会自动下载cookbook,把服务相关的拉进来,同时把服务器挂载在ELB后。

同时,高峰团队还用到了Prometheus来解决微服务发现的问题。平台打包以后就可以动态迁移到其他平台上,但在其他平台上不可能有相应的一套云体系平台做监控,所以要对自己的服务发现做一些评估,同时要能搜集到相应监控业务数据。

AWS提供了一个功能可以让用户自己做服务注册发现,通过SDK获得某个模块相应的Lest和相应数据。Prometheus自身的一部分功能就是调用AWS接口显示在列表里,这样cookbook就属于日志性东西,尤其是在容器使用较多和用高进项较多的场景下。  

高峰说,虽然登虹现在大多都是做微服务,但总会有浪涌现象,而浪涌现象又导致连锁现象。这时候要做第一个事情就是报警汇聚。登虹使用的工具之一是Pagerduty。Pagerduty面临的第一个问题是对同类报警,第二个是对平台打包。同时,在使用多个微服务模块时,很多服务调度会遇到不同问题,包括每个模块对应权限在AWS遇到的问题也不尽相同。

在完成了包括打包、运维相关长期摸索之后,登虹平台发展到较为稳定的程度。在扩容跟建设方面,自动化工具被其内部大量推广使用。发布与部署可实现类似「金丝雀模式」,一小部分服务器被升级到一个新版本或者新配置,随后保持一定的孵化期。如果没有任何未预料的问题发生,发布流程就会继续,其他的软件服务器也会被逐渐升级到新版本。如果发生了问题,这个单独修改过的软件服务器可以很快被还原到已知的正常状态下。

查看高峰演讲视频

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT