劉 暢 毋 濤 徐 雷
中國聯(lián)通研究院 北京 100176
AI(Artificial Intelligence)即人工智能,是計(jì)算機(jī)科學(xué)的一個(gè)分支領(lǐng)域[1]。1956年夏季,以麥卡賽、明斯基、羅切斯特和申農(nóng)等為首的一批有遠(yuǎn)見卓識(shí)的年輕科學(xué)家在一起聚會(huì),共同研究和探討用機(jī)器模擬人類智能的一系列相關(guān)問題,并首次提出了“人工智能”這一術(shù)語,它標(biāo)志著“人工智能”這門新興學(xué)科的正式誕生。
尼爾遜教授對(duì)人工智能下了這樣一個(gè)定義:“人工智能是關(guān)于知識(shí)的學(xué)科,一個(gè)關(guān)于怎樣表示知識(shí)以及怎樣獲得知識(shí)并使用知識(shí)的科學(xué)?!倍硪粋€(gè)美國麻省理工學(xué)院的溫斯頓教授認(rèn)為:“人工智能就是研究如何使計(jì)算機(jī)去做過去只有人才能做的智能工作?!边@些說法都很好地反映了人工智能學(xué)科的基本思想和基本內(nèi)容,即人工智能是研究人類智能活動(dòng)的規(guī)律、構(gòu)造具有一定智能的人工系統(tǒng),研究如何讓計(jì)算機(jī)去完成以往需要人的智力才能勝任的工作,也就是研究如何應(yīng)用計(jì)算機(jī)的軟硬件來模擬人類某些智能行為的理論、方法和技術(shù)。
AI計(jì)算平臺(tái)的目標(biāo)是通過大量的歷史數(shù)據(jù)訓(xùn)練得到一個(gè)盡量貼合應(yīng)用需求的模型,然后通過不斷的迭代優(yōu)化完善模型,最終使該模型在應(yīng)用推理過程中的結(jié)果最貼近期望值[2]。在訓(xùn)練過程中,AI計(jì)算平臺(tái)需要大量的計(jì)算,才能保證模型的時(shí)效性和準(zhǔn)確性,所以需要將系統(tǒng)部署在一個(gè)大型的計(jì)算集群中,云計(jì)算服務(wù)剛好滿足這種需求,部署在云中是目前主流的部署模式。如圖1所示,AI計(jì)算平臺(tái)主要分為三個(gè)部分。
圖1 傳統(tǒng)AI計(jì)算平臺(tái)
1)數(shù)據(jù)預(yù)處理。AI建模所使用的數(shù)據(jù)源通常是海量的大數(shù)據(jù),這些數(shù)據(jù)的維度眾多,數(shù)據(jù)質(zhì)量參差不齊,甚至還有很多垃圾數(shù)據(jù)以及不完整的數(shù)據(jù),如果不進(jìn)行處理,會(huì)給建模的過程帶來很大的困難,也會(huì)影響模型的準(zhǔn)確程度,所以,在AI的建模過程中,數(shù)據(jù)預(yù)處理是非常重要的工作。數(shù)據(jù)預(yù)處理主要包括數(shù)據(jù)清理、數(shù)據(jù)集成、數(shù)據(jù)變換以及數(shù)據(jù)歸約,最終把它歸類到AI的計(jì)算模型中。
2)模型訓(xùn)練。目前,針對(duì)不同的應(yīng)用有不同的訓(xùn)練算法,模型的訓(xùn)練首先要選擇與應(yīng)用相匹配的算法。在選擇了合適的算法之后利用計(jì)算集群強(qiáng)大的計(jì)算資源結(jié)合歷史數(shù)據(jù)對(duì)模型不斷的迭代優(yōu)化來形成最終的AI模型、算法公式以及一些相關(guān)的參數(shù)。隨著應(yīng)用過程中數(shù)據(jù)的不斷累積,模型還可以不斷地進(jìn)行優(yōu)化,以使計(jì)算結(jié)果更加接近期望值。
3)應(yīng)用推理。在實(shí)際的應(yīng)用中,將實(shí)際數(shù)據(jù)帶入上面第二步訓(xùn)練得到的模型進(jìn)行推理計(jì)算,可以得到期望的推理結(jié)果。
無服務(wù)器(Serverless)架構(gòu)可以分成兩種類型[3]。一種是BaaS(Backend as a Service,后端即服務(wù)),例如消息隊(duì)列、CDN、云對(duì)象存儲(chǔ)、云數(shù)據(jù)庫等,這些服務(wù)主要是承載數(shù)據(jù)的存儲(chǔ)。另一種是FaaS(Function as a Service,函數(shù)即服務(wù)),這種方式主要是承載用戶的計(jì)算功能,更多是對(duì)用戶的計(jì)算進(jìn)行托管。第二種方式是無服務(wù)器架構(gòu)的核心技術(shù)點(diǎn)。
本文主要介紹采用FaaS方式的架構(gòu)。采用此種架構(gòu),用戶首先要將代碼和配置提交到云平臺(tái)上,代碼即用戶為實(shí)現(xiàn)某一個(gè)函數(shù)功能編寫的一份代碼或者代碼包;配置則是指本身對(duì)于函數(shù)運(yùn)行環(huán)境的配置,使用的是哪種環(huán)境、所需的內(nèi)存、超時(shí)時(shí)間等,以及觸發(fā)函數(shù)運(yùn)行的觸發(fā)器的配置。因?yàn)檎麄€(gè)FaaS的運(yùn)行方式是觸發(fā)式運(yùn)行,觸發(fā)就需要有一個(gè)事件來源,而事件來源可以有很多種。例如當(dāng)用戶上傳一張圖片或者刪除一張圖片時(shí),就會(huì)產(chǎn)生一個(gè)事件,這個(gè)事件會(huì)觸發(fā)云函數(shù)的運(yùn)行;例如和API網(wǎng)關(guān)的對(duì)接,也可以作為事件來源,在用戶的HTTP請(qǐng)求到達(dá)網(wǎng)關(guān)之后,API網(wǎng)關(guān)會(huì)把該請(qǐng)求作為事件轉(zhuǎn)發(fā)給云函數(shù),觸發(fā)云函數(shù)的運(yùn)行,云函數(shù)拿到請(qǐng)求之后進(jìn)行處理,生成響應(yīng)給到用戶。
如圖2所示,Serverless的運(yùn)行方式是按需運(yùn)行,僅在設(shè)定的觸發(fā)器上有事件產(chǎn)生時(shí)才會(huì)運(yùn)行。圖中左側(cè),是用戶將代碼和配置提交到Serverless平臺(tái)進(jìn)行保存,當(dāng)設(shè)定好的事件產(chǎn)生后,針對(duì)每一個(gè)事件都會(huì)拉起一個(gè)函數(shù)實(shí)例,實(shí)現(xiàn)觸發(fā)式運(yùn)行。
圖2 Serverless平臺(tái)工作流程
因?yàn)楹瘮?shù)本身是托管型的,用戶本身無法感知到實(shí)例在哪里運(yùn)行。Serverless平臺(tái)背后有個(gè)大的計(jì)算資源池,用戶實(shí)例觸發(fā)之后,平臺(tái)會(huì)從資源池中隨機(jī)選取可運(yùn)行的位置,把用戶的函數(shù)實(shí)例在對(duì)應(yīng)位置上跑起來。因此,整個(gè)調(diào)度過程或者事件來臨之后的函數(shù)運(yùn)行環(huán)境的擴(kuò)縮容過程,都是由平臺(tái)進(jìn)行的。對(duì)用戶來說,調(diào)度的粒度更細(xì)了,而且調(diào)度也都托管給平臺(tái)了,用戶自身只需考慮功能的實(shí)現(xiàn),而一切和運(yùn)維相關(guān)的問題都可以由平臺(tái)的提供商來解決。
MEC(Multi-Access Edge Computing)即多接入邊緣計(jì)算[4]。ETSI對(duì)MEC的標(biāo)準(zhǔn)定義是:在網(wǎng)絡(luò)邊緣提供IT服務(wù)環(huán)境和云計(jì)算能力。就是將應(yīng)用、內(nèi)容和核心網(wǎng)的部分業(yè)務(wù)處理和資源調(diào)度的功能一同部署到靠近接入側(cè)的網(wǎng)絡(luò)邊緣,通過將業(yè)務(wù)靠近用戶處理,以及應(yīng)用、內(nèi)容與網(wǎng)絡(luò)的協(xié)同,來提供可靠、高效的業(yè)務(wù)體驗(yàn)。
近年來,隨著AR/VR、車聯(lián)網(wǎng)、高清視頻以及物聯(lián)網(wǎng)等應(yīng)用的興起,傳統(tǒng)的網(wǎng)絡(luò)結(jié)構(gòu)已經(jīng)逐漸不堪重負(fù),因此催生了MEC的出現(xiàn),將網(wǎng)絡(luò)業(yè)務(wù)“下沉”[5]到更接近用戶的無線接入網(wǎng)側(cè),從而帶來三個(gè)好處[6]。
1)用戶感受到的傳輸時(shí)延減?。?)網(wǎng)絡(luò)擁塞被顯著控制;3)更多的網(wǎng)絡(luò)信息和網(wǎng)絡(luò)擁塞控制功能可以開放給開發(fā)者。
本文在傳統(tǒng)的AI計(jì)算平臺(tái)基礎(chǔ)上進(jìn)行創(chuàng)新,提出了一個(gè)新的基于無服務(wù)器架構(gòu)的邊緣AI計(jì)算平臺(tái)方案。本節(jié)首先分別介紹引入無服務(wù)器架構(gòu)以及引入MEC技術(shù)對(duì)AI計(jì)算平臺(tái)的改進(jìn)情況,之后對(duì)整體方案進(jìn)行介紹說明。
如第二節(jié)所述,從整個(gè)的計(jì)算過程來說,對(duì)于傳統(tǒng)的數(shù)據(jù)存儲(chǔ)過程,數(shù)據(jù)產(chǎn)生后,會(huì)先把數(shù)據(jù)進(jìn)行緩存或者存儲(chǔ),比如以對(duì)象存儲(chǔ)文件的形式進(jìn)行保存,或者在數(shù)據(jù)庫中以結(jié)構(gòu)化形式存儲(chǔ)下來,之后再進(jìn)行分析及應(yīng)用。
利用無服務(wù)器架構(gòu)后,計(jì)算過程可以有很大的加速。如圖3所示,可以在事件產(chǎn)生的時(shí)候就立刻拉起運(yùn)行實(shí)例對(duì)數(shù)據(jù)進(jìn)行處理,因此整個(gè)處理過程就變成了先計(jì)算,再對(duì)結(jié)果進(jìn)行保存,從而加速了數(shù)據(jù)的存儲(chǔ)以及后續(xù)調(diào)取的過程,也大大節(jié)省了存儲(chǔ)需要的空間。因?yàn)锳I計(jì)算平臺(tái)在模型訓(xùn)練的過程中需要頻繁地對(duì)數(shù)據(jù)進(jìn)行計(jì)算和存儲(chǔ),所以引入無服務(wù)器架構(gòu)可以顯著提高計(jì)算平臺(tái)的性能。
圖3 利用無服務(wù)器架構(gòu)加速AI計(jì)算平臺(tái)
在利用無服務(wù)器架構(gòu)對(duì)存儲(chǔ)過程進(jìn)行了加速之后,我們?nèi)孕枰朕k法對(duì)計(jì)算過程進(jìn)行進(jìn)一步加速。對(duì)于傳統(tǒng)應(yīng)用來說,數(shù)據(jù)在終端側(cè)產(chǎn)生,上傳到云端進(jìn)行處理并保存結(jié)果。在AI的推理階段,需要頻繁地利用數(shù)據(jù)模型進(jìn)行推理運(yùn)算,但是計(jì)算量并不是很大。如果每次計(jì)算都要將數(shù)據(jù)上傳到云端進(jìn)行處理,不但增加了數(shù)據(jù)處理的時(shí)延,也給整個(gè)網(wǎng)絡(luò)帶來了不小的壓力。
如圖4所示,利用MEC技術(shù)可以使處理過程更加靠近用戶,把一部分計(jì)算資源下放到靠近用戶的網(wǎng)絡(luò)邊緣。傳統(tǒng)的云計(jì)算方式,無論是使用容器,或是使用云主機(jī),運(yùn)算能力都是集中部署在云端的,而邊緣計(jì)算技術(shù)可以把運(yùn)算能力下放到中心云端之外,使計(jì)算能力更接近真正的用戶,更加靠近設(shè)備端,免去了數(shù)據(jù)從終端到云端的傳輸過程,從而使計(jì)算過程可以盡快地在較近的計(jì)算節(jié)點(diǎn)中進(jìn)行處理。因此,利用MEC可以將AI計(jì)算平臺(tái)推理計(jì)算過程的時(shí)延進(jìn)一步降低,也增加了系統(tǒng)的可靠性。
圖4 利用MEC技術(shù)加速AI計(jì)算平臺(tái)
構(gòu)建一個(gè)AI計(jì)算平臺(tái)通常包括三個(gè)步驟。第一步是對(duì)預(yù)處理后的數(shù)據(jù)進(jìn)行訓(xùn)練。第二步是驗(yàn)證測(cè)試數(shù)據(jù)的準(zhǔn)確率情況。這兩個(gè)步驟需要多次的迭代重復(fù),直到使該算法實(shí)現(xiàn)了預(yù)期的精度。通過每次的迭代過程,算法可以學(xué)習(xí)到更多的數(shù)據(jù)并發(fā)現(xiàn)新的模式,這可以使模型的效率和準(zhǔn)確率都得到提升。這兩個(gè)步驟最終得出的是一個(gè)機(jī)器學(xué)習(xí)模型,它的參數(shù)被不斷調(diào)整以處理后續(xù)產(chǎn)生的未知數(shù)據(jù)。第三個(gè)步驟也是最后一步,就是使用數(shù)據(jù)調(diào)用模型來計(jì)算預(yù)期的結(jié)果,這可能是基于新數(shù)據(jù)的預(yù)測(cè)、分類或分組。
前兩個(gè)階段因?yàn)樯婕暗綑C(jī)器學(xué)習(xí)所以需要大量計(jì)算工作,這需要由部署在云端的大量計(jì)算資源來滿足。但是,第三個(gè)階段的應(yīng)用推理過程卻不需要很多資源,所以非常適合將這部分功能部署在邊緣設(shè)備上。它是一段代碼,其中包含了計(jì)算的模型以及基于前兩個(gè)階段訓(xùn)練和驗(yàn)證的一系列參數(shù)?;谶@些預(yù)定義的參數(shù),它將在有新數(shù)據(jù)到來的時(shí)候?qū)ζ溥M(jìn)行分析。
如圖5所示,本文提出了一種新的系統(tǒng)模型,在構(gòu)建AI平臺(tái)的前兩個(gè)階段,利用Serverless框架,使訓(xùn)練和測(cè)試模塊可以按需觸發(fā)式執(zhí)行,節(jié)省了這個(gè)階段的計(jì)算過程和存儲(chǔ)過程,也簡化了云端的運(yùn)維工作。在第三階段,利用MEC技術(shù)將AI平臺(tái)的推理模塊下放到網(wǎng)絡(luò)邊緣設(shè)備上,從而加速了計(jì)算過程。在終端側(cè)有AI計(jì)算需求時(shí),部署在網(wǎng)絡(luò)邊緣的Serverless框架可以按需建立AI推理計(jì)算實(shí)例,可以在請(qǐng)求量抖動(dòng)時(shí)按需進(jìn)行資源的擴(kuò)縮容,使整個(gè)平臺(tái)的資源利用率更高,穩(wěn)定性更強(qiáng)。
圖5 基于無服務(wù)器架構(gòu)的邊緣AI計(jì)算平臺(tái)
綜上,盡管AI計(jì)算平臺(tái)的訓(xùn)練和驗(yàn)證階段需要在擁有大量計(jì)算資源的云端進(jìn)行,但推理階段可以通過邊緣計(jì)算技術(shù)在網(wǎng)絡(luò)的邊緣設(shè)備上進(jìn)行計(jì)算,再加上與Serverless架構(gòu)的結(jié)合,對(duì)整個(gè)平臺(tái)的計(jì)算過程和存儲(chǔ)過程都有顯著的提速,而且也簡化了系統(tǒng)的運(yùn)維工作。
利用Serverless框架和MEC技術(shù),很好地解決了AI計(jì)算平臺(tái)目前面臨的問題。但是,在為我們帶來便利和效益的同時(shí),它還存在一些問題和挑戰(zhàn)[7]。
1)計(jì)費(fèi)問題。由于在部署邊緣計(jì)算平臺(tái)時(shí)將服務(wù)下沉到了網(wǎng)絡(luò)的邊緣,流量在邊緣節(jié)點(diǎn)上進(jìn)行了本地化卸載,而沒有通過一個(gè)核心的節(jié)點(diǎn),因此計(jì)費(fèi)的功能很難實(shí)現(xiàn)。對(duì)于該問題,目前各公司已經(jīng)有了自己傾向的解決方案,但是仍然沒有統(tǒng)一的方案,移動(dòng)邊緣計(jì)算平臺(tái)的標(biāo)準(zhǔn)化工作也尚未涵蓋該部分。該問題需要設(shè)備供應(yīng)商、OTT、運(yùn)營商等多方的共同努力并積極探索。
2)安全問題。由于服務(wù)的下沉也帶來一些安全問題,例如可能存在一些不受信任的終端或移動(dòng)邊緣應(yīng)用開發(fā)者的非法接入問題,因此需要在接入側(cè)和邊緣計(jì)算節(jié)點(diǎn)之間建立鑒權(quán)流程以及安全的通信隧道,以保證數(shù)據(jù)的機(jī)密性和完整性,并保證網(wǎng)絡(luò)的安全。