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