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 MesosGoogle KubernetesDocker SwarmAWS ECS傾聽客戶心聲 — 利用語音科技提供個性化服務與強化用戶體驗最后一場,吳宗承分享的話題是傾聽客戶心聲 — 利用語音科技提供個性化服務與強化用戶體驗。吳宗承現為亞馬遜AWS中國解決方案架構師,擁有超過12年的IT行業以及軟件開發工作經驗,擅長Scala開發,熟悉NoSQL數據庫、DevOps以及Serverless架構等。
吳宗承的分享拿酒店住宿為例。首先,當你入住一個酒店的時候,你開始會發生一些跟周圍或者生活資訊的一些解決的問題。如就是你的房間的空調溫度、濕度,再就是你可能會放點音樂,舒緩一下自己的情緒。接下來熟悉了這個環境,這個確定了以后我開始做一些規劃,我要定車,我要預定一些餐廳……這里就提出了一個IA(智能助理)的概念,同時Amazon推出了一個硬件,叫做Amazon echo,它跟后臺有緊密的融合,比如說我看電視我要開空調,我完全不需要動手,用語音命令透過云端跟硬件溝通,非常的方便,他就好像會傾聽客戶心聲,以此提高個性化服務體驗。
什么是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云可輕松連接數以萬計的設備。