4月21日,由InfoQ主辦的QCon全球軟件開發(fā)大會在北京舉行。超過150名國內(nèi)外技術(shù)專家將為大家?guī)硪粓黾夹g(shù)盛宴。本文綜述了QCon北京大會亞馬遜AWS深度創(chuàng)新實(shí)踐專場的內(nèi)容,四位分享者來自亞馬遜和App Annie。本專場的分享可視為了解亞馬遜AWS深度創(chuàng)新實(shí)踐現(xiàn)狀的渠道窗口。
從亞馬遜AWS于2006年3月14日上線Amazon S3服務(wù)至今,已經(jīng)過去了整整十年時(shí)間。AWS作為云計(jì)算領(lǐng)域的開拓者之一,其在保障云服務(wù)的彈性、安全性、高可用性、成本可控性等方面積累了大量的實(shí)踐經(jīng)驗(yàn)與知識,同時(shí)也推動了全球云服務(wù)行業(yè)的快速發(fā)展。在AWS迎來10周年紀(jì)念之際,通過本專場分享的AWS上構(gòu)建個(gè)性化服務(wù)的實(shí)踐過程,展示云計(jì)算相關(guān)技術(shù)的創(chuàng)新成果,演講內(nèi)容將覆蓋深度學(xué)習(xí)、Python開發(fā)、大數(shù)據(jù)平臺架構(gòu)、容器管理、物聯(lián)網(wǎng)應(yīng)用等多個(gè)技術(shù)領(lǐng)域,從而更多地了解AWS的創(chuàng)新實(shí)踐。
Deep Learning with Python費(fèi)良宏現(xiàn)擔(dān)任亞馬遜AWS中國首席云計(jì)算技術(shù)顧問一職,他分享的話題是Deep Learning with Python。
深度學(xué)習(xí)、人工只能和機(jī)器學(xué)習(xí)2016年激動人心的事件之一”人機(jī)大戰(zhàn)”:2016年3月份AlphaGo跟李世石大戰(zhàn),4:1完勝。這個(gè)事件使得機(jī)器學(xué)習(xí)變得炙手可熱起來,就好像1997年的時(shí)候,深藍(lán)大戰(zhàn)國際象棋那個(gè)事件又一次納入了人們的視野,這個(gè)人機(jī)大戰(zhàn)后面的理論依據(jù)是深度學(xué)習(xí)的模型。那么,深度學(xué)習(xí)、人工智能和機(jī)器學(xué)習(xí)這三者之間的區(qū)別是什么呢? 簡單來說人工智能是一個(gè)很龐雜、很龐大的學(xué)科,在人工智能的領(lǐng)域里面,機(jī)器學(xué)習(xí)是它重要的組成部分,而深度學(xué)習(xí)又是機(jī)器學(xué)習(xí)的其中一個(gè)部分。只不過最近的若干年里面,深度學(xué)習(xí)包括機(jī)器學(xué)習(xí)變得炙手可熱,從整個(gè)體系來說,它們都是在人工智能這樣一個(gè)框架之內(nèi)。人工智能的歷史可以追溯到50年代,有很多人提出機(jī)器學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)這樣一些概念和原理。隨著發(fā)展,尤其是計(jì)算機(jī)、摩爾定律規(guī)律不斷地提升我們的計(jì)算能力,尤其是在2000年以后有了很多里程碑式的變化,2006年就有了深度學(xué)習(xí)這個(gè)概念的出現(xiàn)。
機(jī)器學(xué)習(xí)到底能做什么?所謂機(jī)器學(xué)習(xí)就是由已知的答案開始,必須要有數(shù)據(jù),這是我們啟動一個(gè)機(jī)器學(xué)習(xí)應(yīng)用的起點(diǎn)。其次,明確目標(biāo)到底是預(yù)測什么?這個(gè)照片是誰?不是誰?這是一個(gè)熊還是人,這是一個(gè)明確目標(biāo),不能模棱兩可。最后,要選擇那些可以被用來去探測的變量或者特征。所以有的時(shí)候機(jī)器學(xué)習(xí)我們也叫特征工程。用監(jiān)督學(xué)習(xí)方法去應(yīng)用機(jī)器學(xué)習(xí)的時(shí)候,需要對數(shù)據(jù)進(jìn)行訓(xùn)練,這也是經(jīng)常采用的一個(gè)方法,比如說AlphaGO就是這樣。
機(jī)器學(xué)習(xí)核心就是研究這類算法,它是幫助我們從數(shù)據(jù)當(dāng)中分析他的規(guī)律,利用這個(gè)規(guī)律對未知的學(xué)科進(jìn)行預(yù)測,如果用一個(gè)詞描述機(jī)器學(xué)習(xí)的話,我經(jīng)常會把這個(gè)詞用作我自己認(rèn)為的一個(gè)標(biāo)簽,就是預(yù)測,它就是用來去預(yù)測未來的,但是它的基礎(chǔ)是已知的基礎(chǔ)和知識。機(jī)器學(xué)習(xí)是有傳統(tǒng)的人工智能理論、信息理論、統(tǒng)計(jì)模型等等,它并不是孤立存在的。
機(jī)器學(xué)習(xí)基于過去的實(shí)施和依據(jù)發(fā)現(xiàn)趨勢和模式的。它提供了對結(jié)果的洞察能力,幫助我們揭示未來的概率,而不是告訴我們過去發(fā)生的事情,這跟很多數(shù)據(jù)分析是不一樣,我們是對以往的數(shù)據(jù)進(jìn)行加工,得到一個(gè)對以往深度學(xué)習(xí)的一個(gè)結(jié)論,而機(jī)器學(xué)習(xí)強(qiáng)調(diào)的更多是對未來的預(yù)測。
為什么要深度學(xué)習(xí)?傳統(tǒng)的機(jī)器學(xué)習(xí)注重的是特征工程,而深度學(xué)習(xí)關(guān)心的是原始數(shù)據(jù)。有的時(shí)候我們強(qiáng)調(diào)說深度學(xué)習(xí)模型的產(chǎn)生和結(jié)果我們?nèi)耸遣⒉涣私馑锩娴耐评磉^程的,我們看到是個(gè)黑盒子,原因就在于此,因?yàn)閿?shù)據(jù)量非常地龐大,所以只有機(jī)器通過大量的運(yùn)算才可以推導(dǎo)出來這么一個(gè)結(jié)果,這就是機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的對比。
為什么要深度學(xué)習(xí)?深度學(xué)習(xí)大概是很早就已經(jīng)有這樣一個(gè)概念了,在80年代的時(shí)候開始探討神經(jīng)網(wǎng)絡(luò)的時(shí)候已經(jīng)有了一個(gè)原始出行出現(xiàn)了,為什么今天會把深度學(xué)習(xí)拿出來變得炙手可熱呢?今天我們面對如此復(fù)雜的大數(shù)據(jù),大家動不動就是PB、TB這樣的規(guī)模下,所以我們對性能的要求就注定了我們只能選擇有限的一些算法,其中深度學(xué)習(xí)就是目前看起來最容易達(dá)到彼岸的一個(gè)橋梁。
還是以剛才機(jī)器學(xué)習(xí)為例,深度學(xué)習(xí)是什么呢?如果剛才我們從這張照片得到是熊的話,深度學(xué)習(xí)可以接觸更多的層次和特征來,比如說這是熊,背景是黃石公園,并且它的動作是在覓食。比如說這張圖可以判斷出來這個(gè)目標(biāo)主體是一個(gè)鷹,位置在佛羅里達(dá)國家的公園里面,它所處的狀態(tài)是在學(xué)習(xí);類似這樣的結(jié)果就是深度學(xué)習(xí),大家是不是感覺到深度學(xué)習(xí)非常地玄妙吧。
為什么要用Python開發(fā)這些東西呢?Python是一個(gè)膠水的語言,可以將更多的資源結(jié)合在一起,你可以很快地使用它去開發(fā),并且可以運(yùn)用大量的資源,去快速地去服務(wù)于你的功能。另外Python框架資源非常非常豐富,目前為止我還沒有看到有一種語言可以超過Python本身,再就是Python開源和海量的技術(shù)社區(qū)支持的,這個(gè)也是很大的優(yōu)勢。
市場當(dāng)中有大量的基于Python開發(fā)出來的框架,你可以做充分的程序化的設(shè)計(jì)和實(shí)踐,大量的第三方項(xiàng)目應(yīng)用都基于它,它所有文檔非常非常地棒,包括有教程,整個(gè)都是Python的風(fēng)格,如果你開始學(xué)習(xí),可以用它作為你的定制進(jìn)行深度學(xué)習(xí)實(shí)踐。
人的思維可以分成兩大類,第一種類叫科學(xué)的思維,就是我們要探索一個(gè)事物的本質(zhì)和原理,我們要窮極一生去研究。第二個(gè)叫做工程的思維,我不關(guān)心它的原理是什么,我只關(guān)心結(jié)果。深度學(xué)習(xí)它實(shí)際上的本質(zhì)是一門科學(xué)。但是對一個(gè)程序員、對開發(fā)者來說,我們關(guān)心的并不是科學(xué)的本身,那些微妙的原理,我們關(guān)心的是如何用這些資源能夠開發(fā)出能夠改變世界的應(yīng)用的程序,讓我們的程序從此變得更智能、更有意思。如果從今天開始,哪怕你沒有一個(gè)復(fù)雜的知識,沒有一個(gè)高深非常玄妙的背景,你也同樣可以從事深度的開發(fā),你也可以開發(fā)出讓別人瞠目結(jié)舌的深度智能的應(yīng)用。
初創(chuàng)公司大數(shù)據(jù)平臺架構(gòu)演進(jìn)之路王佳分享的話題是初創(chuàng)公司大數(shù)據(jù)平臺架構(gòu)演進(jìn)之路。王佳現(xiàn)為App Annie大數(shù)據(jù)架構(gòu)師,同時(shí)也是其大數(shù)據(jù)團(tuán)隊(duì)及數(shù)據(jù)實(shí)施團(tuán)隊(duì)的負(fù)責(zé)人。
創(chuàng)業(yè)公司構(gòu)建大數(shù)據(jù)面臨的挑戰(zhàn)創(chuàng)業(yè)公司對于大數(shù)據(jù)來說, 挑戰(zhàn)會更加突出:
人員成本。大數(shù)據(jù)它需要一個(gè)比較專業(yè)的技術(shù)團(tuán)隊(duì),這里面會有兩方面的人員,一個(gè)是專業(yè)的大數(shù)據(jù)工程師,第二你會需要一個(gè)運(yùn)維的團(tuán)隊(duì)。時(shí)間成本,大數(shù)據(jù)因?yàn)樗羌僭O(shè)在很多傳統(tǒng)的軟件行業(yè)之上的一個(gè)技術(shù)結(jié)構(gòu)。所以你需要去完成一個(gè)完整的可擴(kuò)展的靈活的大數(shù)據(jù)平臺,本身去構(gòu)建這樣一個(gè)平臺的時(shí)候,需要花費(fèi)更多的額外的精力,所以說時(shí)間上又是一個(gè)很關(guān)鍵的成本。運(yùn)維,尤其是最近幾年運(yùn)維人員、運(yùn)維成本越來越顯著在大數(shù)據(jù)的開發(fā)領(lǐng)域,你的需求不同于傳統(tǒng)的軟件開發(fā),有一個(gè)完整的定義,需求實(shí)現(xiàn)了這個(gè)產(chǎn)品就算結(jié)束了。大數(shù)據(jù)也需要這個(gè)平臺持續(xù)地運(yùn)行,不斷地有新的數(shù)據(jù)進(jìn)入你的系統(tǒng)需要你做分析,你永遠(yuǎn)沒辦法預(yù)知將來某一天你的是否是不是需要核實(shí)。運(yùn)維需要幾百臺服務(wù)器,若干個(gè)服務(wù)組件穩(wěn)定地運(yùn)行,運(yùn)維也是一個(gè)很值得關(guān)注的成本。除此之外針對于創(chuàng)業(yè)公司來說,就是需求總是在變化,怎么去做這樣一個(gè)易于擴(kuò)展的一個(gè)平臺,去滿足不斷變化的需求,這是創(chuàng)業(yè)公司在大數(shù)據(jù)的時(shí)候所關(guān)心的一個(gè)挑戰(zhàn)。
APP Annie如何應(yīng)對大數(shù)據(jù)面臨的挑戰(zhàn)APP Annie差不多每天會處理20TB的壓縮數(shù)據(jù)。APP Annie整個(gè)數(shù)據(jù)處理是運(yùn)行在6個(gè)以上的集群,這個(gè)取決于我們那一段時(shí)間是不是有一些需要刷新的一些歷史數(shù)據(jù)的任務(wù)。APP Annie管理的話是差不多有一百到兩百臺左右的服務(wù)器。APP Annie每天日常會有500多個(gè)數(shù)據(jù)處理任務(wù)需要去運(yùn)行。最終會生成覆蓋全世界60多個(gè)國家的數(shù)據(jù)報(bào)告,這個(gè)就是APP Annie大數(shù)據(jù)的挑戰(zhàn)。大數(shù)據(jù)平臺的設(shè)計(jì)原則
基于云計(jì)算服務(wù);數(shù)據(jù)驅(qū)動,快速響應(yīng)業(yè)務(wù)需求變化;使用工作流(Workflow Engine)。APP Annie研發(fā)大數(shù)據(jù)平臺技術(shù)架構(gòu)的演化過程APP Annie的數(shù)據(jù)演化分三個(gè)階段:
階段1:基于亞馬遜的AWS EC2、Hadoop、Python。適合規(guī)模穩(wěn)定的小型計(jì)算和小規(guī)模的數(shù)據(jù)存儲,日處理50GB數(shù)據(jù)。其中,Pig用于構(gòu)建數(shù)據(jù)管道,ETL和算法模型的實(shí)現(xiàn);Hive用于支持?jǐn)?shù)據(jù)分析和臨時(shí)性的查詢;通過Gateway訪問集群,進(jìn)行任務(wù)提交,Gateway是集群的唯一入口。
階段2:將數(shù)據(jù)存儲遷移到了AWS S3上,使用ASW EMR管理多個(gè)計(jì)算集群。在工具里邊添加了新的計(jì)算工具的選擇,Spark是新的計(jì)算工具,隨著任務(wù)越來越多,500多個(gè)任務(wù),在監(jiān)控層做得更多的優(yōu)化。日處理數(shù)據(jù)20T至50T。S3提供版本機(jī)制,避免數(shù)據(jù)誤刪除操作,方便調(diào)試和研究。可伸縮的存儲,按需使用付費(fèi),極大節(jié)約了企業(yè)運(yùn)營成本,另外,S4提供了多個(gè)集群同時(shí)讀寫同一個(gè)S3 buckets。
階段3:通過AWS的云服務(wù)完成數(shù)據(jù)中心的多區(qū)域托管,數(shù)據(jù)就近處理,架構(gòu)搭建非常靈活和高效。基于云平臺的容器方案實(shí)踐指南代聞分享的話題是基于云平臺的容器方案實(shí)踐指南。代聞現(xiàn)為亞馬遜AWS中國解決方案架構(gòu)師,負(fù)責(zé)基于AWS的云計(jì)算方案架構(gòu)咨詢和設(shè)計(jì)工作,同時(shí)致力于AWS云服務(wù)在國內(nèi)的應(yīng)用和推廣工作,在大規(guī)模后臺架構(gòu)、物聯(lián)網(wǎng)應(yīng)用、媒體行業(yè)轉(zhuǎn)型、企業(yè)混合IT與自動化運(yùn)維等方面擁有廣泛的設(shè)計(jì)與實(shí)踐經(jīng)驗(yàn)。
容器和云相關(guān)的一些事情把運(yùn)行環(huán)境,把代碼打包在容器的交付里面,這是容器的來源。另外,虛擬機(jī)是組成云的一個(gè)基本的單元。
Docker在云上的應(yīng)用場景:
無狀態(tài)服務(wù);批處理;持續(xù)的集成和部署;松耦合交付;計(jì)算單元遷移(混合云、多云)。基于此,舉個(gè)例子:你寫一個(gè)程序,打包成一個(gè)Docker Engine之后,打包上去之后無論是在哪里都能它夠運(yùn)行,在你的數(shù)據(jù)中心里邊也可以運(yùn)行,它可以屏蔽掉計(jì)算的差異化,來實(shí)現(xiàn)混合云、多云的方案。你看到有些人在做機(jī)房和云上面的互聯(lián)的時(shí)候,以前是需要我在云上重建我所有的環(huán)境,現(xiàn)在不用重建了。
如何解決基礎(chǔ)資源Docker作為虛擬化會遇到很多以前我們又會老生常談的一些問題,這些基礎(chǔ)資源在云上面如何解決,這是一個(gè)需要慎重考慮的一個(gè)問題,一般主要考慮如下三點(diǎn):
計(jì)算存儲網(wǎng)絡(luò)對計(jì)算,你需要要了解AWS的機(jī)型選擇,以及Docker Engine的選擇。對于存儲,同樣需要作出選擇,實(shí)例存儲、持久性的存儲、共享存儲、對象存儲。如高持久化相干的日志、大文件放在對象存儲做備份就可以了。
集群管理平臺集群管理核心要素,考慮節(jié)點(diǎn)與管理單元、資源管理引擎、調(diào)度器、集群狀態(tài)與服務(wù)發(fā)現(xiàn)。集群管理平臺有四種有4類:
Apache MesosGoogle KubernetesDocker SwarmAWS ECS傾聽客戶心聲 — 利用語音科技提供個(gè)性化服務(wù)與強(qiáng)化用戶體驗(yàn)最后一場,吳宗承分享的話題是傾聽客戶心聲 — 利用語音科技提供個(gè)性化服務(wù)與強(qiáng)化用戶體驗(yàn)。吳宗承現(xiàn)為亞馬遜AWS中國解決方案架構(gòu)師,擁有超過12年的IT行業(yè)以及軟件開發(fā)工作經(jīng)驗(yàn),擅長Scala開發(fā),熟悉NoSQL數(shù)據(jù)庫、DevOps以及Serverless架構(gòu)等。
吳宗承的分享拿酒店住宿為例。首先,當(dāng)你入住一個(gè)酒店的時(shí)候,你開始會發(fā)生一些跟周圍或者生活資訊的一些解決的問題。如就是你的房間的空調(diào)溫度、濕度,再就是你可能會放點(diǎn)音樂,舒緩一下自己的情緒。接下來熟悉了這個(gè)環(huán)境,這個(gè)確定了以后我開始做一些規(guī)劃,我要定車,我要預(yù)定一些餐廳……這里就提出了一個(gè)IA(智能助理)的概念,同時(shí)Amazon推出了一個(gè)硬件,叫做Amazon echo,它跟后臺有緊密的融合,比如說我看電視我要開空調(diào),我完全不需要動手,用語音命令透過云端跟硬件溝通,非常的方便,他就好像會傾聽客戶心聲,以此提高個(gè)性化服務(wù)體驗(yàn)。
什么是Alexa應(yīng)用Alexa應(yīng)用是亞馬遜提供的語音服務(wù),可以讓使用者更直接的方法和硬件溝通。Alexa提供了強(qiáng)大的API SDK包,可輕松制作自己的IA應(yīng)用,所有的代碼運(yùn)行在云端。
AWS IoT的服務(wù)做整合,他可以把他現(xiàn)在的狀態(tài),他能接受的東西跟AWS的服務(wù)做一個(gè)溝通。Alexa它跟硬件主要的交互模式是什么?大家可以看到我的硬件其實(shí)它有一個(gè)收音的功能,把語音壓縮成我們指定的格式,通過API的請求達(dá)到Alexa的服務(wù),Alexa提供豐富的API接口。Alexa Service處理完這個(gè)之后,它用語音的結(jié)果回到你的硬件,你的語音只要在你的平臺上面就可以完整地呈現(xiàn)。這一切在云端會通過一個(gè)安全的互動完成。
語音用戶界面(VUI)設(shè)計(jì)的最佳實(shí)踐原則在進(jìn)行語音開發(fā)過程中,需要注意如下幾點(diǎn)實(shí)踐原則:
讓用戶清楚知道該回應(yīng)什么別預(yù)期用戶知道下一步會發(fā)生什么給予用戶明確清晰的選項(xiàng)盡量簡潔扼要避免冗長的選項(xiàng)避免復(fù)雜的交互避免多余沒意義的交互AWS IoT開發(fā)套件除了Alexa應(yīng)用外,AWS還提供了IoT開發(fā)套件,開發(fā)套件提供了6種SDK:C SDK、JS-SDK、Arduino Library、Mobile SDK(Android、IOS),并支持市面主流開發(fā)板,如Intel、QualCOMM芯片等。以方便進(jìn)行硬件個(gè)性化定制。其中,AWS IoT的設(shè)備影子技術(shù),非常方便和貼心,且你不用擔(dān)心你的隱私會流露出去。
Alexa和AWS IoT結(jié)合,使得硬件有語音交互的能力,特別是AWS物聯(lián)網(wǎng)管理和連接設(shè)備使用起來非常簡單,100行代碼即可完成設(shè)置,同時(shí)結(jié)合AWS云可輕松連接數(shù)以萬計(jì)的設(shè)備。