Morphling:云原生部署 AI,如何把降本做到極致?
隨著云原生技術(shù)的蓬勃發(fā)展和其日漸成熟的產(chǎn)業(yè)落地,云上機器學(xué)習(xí)正向大規(guī)模、工業(yè)化方向迅速挺進。
近期,Morphling 作為阿里巴巴開源的 KubeDL 其中一個獨立的子項目,成為云原生計算基金會(CNCF)Sandbox 項目。旨在為大規(guī)模工業(yè)部署機器學(xué)習(xí)模型推理(model inference)服務(wù),提供自動化的部署配置調(diào)優(yōu)、測試和推薦,在 GPU 虛擬化與復(fù)用技術(shù)日趨發(fā)展成熟的大環(huán)境下,幫助企業(yè)充分享受云原生優(yōu)勢,優(yōu)化在線機器學(xué)習(xí)服務(wù)性能,降低服務(wù)部署成本,高效地解決機器學(xué)習(xí)在產(chǎn)業(yè)實際部署中的性能和成本挑戰(zhàn)。此外,Morphling 項目相關(guān)學(xué)術(shù)論文 "Morphling: Fast, Near-Optimal Auto-Configuration for Cloud-Native Model Serving",被 ACM Symposium on Cloud Computing 2021 (ACM SoCC 2021)接收。
Morphling 本意是游戲 Dota 中的英雄“水人”,他可以根據(jù)環(huán)境要求,通過靈活改變自身形態(tài),優(yōu)化戰(zhàn)斗表現(xiàn)。我們希望通過 Morphling 項目,實現(xiàn)針對機器學(xué)習(xí)推理作業(yè)的靈活、智能的部署配置改變,優(yōu)化服務(wù)性能,降低服務(wù)部署成本。
背景
云上機器學(xué)習(xí)的工作流,可以分為模型訓(xùn)練(model training)和模型推理(model serving)兩部分:模型在離線訓(xùn)練、調(diào)優(yōu)測試完成之后,會以容器的方式部署為在線應(yīng)用,為用戶提供不間斷的高質(zhì)量推理服務(wù),例如在線直播視頻中的目標(biāo)物品識別、在線語言翻譯工具、在線圖片分類等。例如,阿里巴巴內(nèi)部的淘系內(nèi)容社交平臺 Machine Vision Application Platform(MVAP),通過在線機器學(xué)習(xí)推理引擎,支持淘系直播商品看點識別、直播封面圖去重、逛逛圖文分類等業(yè)務(wù)。根據(jù)英特爾的數(shù)據(jù),大規(guī)模推理 ("Inference at Scale") 時代將至:到 2020 年,推理與訓(xùn)練周期比率超過 5:1;亞馬遜的數(shù)據(jù)顯示,2019 年亞馬遜 AWS 在模型推理服務(wù)上的基礎(chǔ)設(shè)施開銷,占到其機器學(xué)習(xí)任務(wù)總開銷的 90% 以上。機器學(xué)習(xí)推理已經(jīng)成為人工智能落地和“變現(xiàn)”的關(guān)鍵。
云上推理任務(wù)
推理服務(wù)本身是一種特殊的 long running 微服務(wù)形態(tài),隨著云上推理服務(wù)日趨增長的部署體量,其成本和服務(wù)性能,成為至關(guān)重要的優(yōu)化指標(biāo)。這要求運維團隊對推理容器,在部署前進行合理的配置優(yōu)化,包含硬件資源配置、服務(wù)運行參數(shù)配置等。這些優(yōu)化配置,在協(xié)調(diào)服務(wù)性能(例如響應(yīng)時間、吞吐率)和資源使用效率中,起到至關(guān)重要的作用。在實踐中,我們的測試發(fā)現(xiàn), 不同的部署配置會帶來高達十幾倍的吞吐率/資源使用率的差距。
我們依托阿里大量的 AI 推理服務(wù)經(jīng)驗,首先總結(jié)了推理業(yè)務(wù),相對于傳統(tǒng)服務(wù)部署的配置有以下特性:
使用昂貴的顯卡資源,但顯存用量低:GPU 虛擬化與分時復(fù)用技術(shù)的發(fā)展和成熟,讓我們有機會在一塊 GPU 上同時運行多個推理服務(wù),顯著降低成本。與訓(xùn)練任務(wù)不同,推理任務(wù)是使用訓(xùn)練完善的神經(jīng)網(wǎng)絡(luò)模型,將用戶輸入信息,通過神經(jīng)網(wǎng)絡(luò)處理,得到輸出,過程中只涉及神經(jīng)網(wǎng)絡(luò)的前向傳輸(Forward Propagation),對顯存資源的使用需求較低。相比之下,模型的訓(xùn)練過程,涉及神經(jīng)網(wǎng)絡(luò)的反向傳輸(Backward Propagation),需要存儲大量中間結(jié)果,對顯存的壓力要大很多。我們大量的集群數(shù)據(jù)顯示,分配給單個推理任務(wù)整張顯卡,會造成相當(dāng)程度的資源浪費。然而如何為推理服務(wù)選擇合適的 GPU 資源規(guī)格,尤其是不可壓縮的顯存資源,成為一個關(guān)鍵難題。
性能的資源瓶頸多樣:除了 GPU 資源,推理任務(wù)也涉及復(fù)雜的數(shù)據(jù)前處理(將用戶輸入 處理成符合模型輸入的參數(shù)),和結(jié)果后處理(生成符合用戶認知的數(shù)據(jù)格式)。這些操作通常使用 CPU 進行,模型推理通常使用 GPU 進行。對于不同的服務(wù)業(yè)務(wù),GPU、CPU 以及其他硬件資源,都可能成為影響服務(wù)響應(yīng)時間的主導(dǎo)因素,從而成為資源瓶頸。
此外,容器運行參數(shù)的配置,也成為業(yè)務(wù)部署人員需要調(diào)優(yōu)的一個維度:除了計算資源外,容器運行時參數(shù)也會直接影響服務(wù) RT、QPS 等性能,例如容器內(nèi)服務(wù)運行的并發(fā)線程數(shù)、推理服務(wù)的批處理大?。╞atch processing size)等。
最佳化推理服務(wù)部署配置
以 Kubernetes 為主流的云原生技術(shù),正在以豐富的形態(tài)被廣泛用于新的應(yīng)用負載 ,將機器學(xué)習(xí)任務(wù)(包括訓(xùn)練和推理)構(gòu)建在 Kubernetes 上,并實現(xiàn)穩(wěn)定、高效、低成本的部署,成為各大公司推進AI項目、服務(wù)上云的重點和關(guān)鍵。Kubernetes 框架下的推理容器配置,業(yè)界還在不斷探索與嘗試。
最常見的模式是根據(jù)人為經(jīng)驗,手動配置參數(shù),簡單但低效。實際情況常常是:服務(wù)部署人員站在集群管理者的角度,為了保證服務(wù)質(zhì)量,傾向于配置較多的資源冗余,在穩(wěn)定性和效率之間選擇犧牲后者,造成大量資源浪費;或?qū)\行參數(shù)直接采用默認值進行配置,損失了性能優(yōu)化機會。
另一個可選的方案是,基于資源歷史水位畫像,進一步細化優(yōu)化資源配置。但我們的觀察和實踐發(fā)現(xiàn),日常資源水位不能體現(xiàn)服務(wù)壓測時的流量高峰,無法評估服務(wù)能力上限;其次,對于新上線的業(yè)務(wù),普遍缺乏可靠的歷史水位信息可供參考;另外,由于機器學(xué)習(xí)框架的特性,GPU 顯存的歷史用量通常不能正確反映應(yīng)用對顯存的真實需求;最后,對于容器內(nèi)部程序運行參數(shù)的調(diào)優(yōu),從歷史數(shù)據(jù)的角度缺少足夠的數(shù)據(jù)支持。
總體來說,雖然在更通用的超參調(diào)優(yōu)方面,Kubernetes 社區(qū)有一些自動化參數(shù)推薦的研究和產(chǎn)品,但業(yè)界缺少一款直接面向機器學(xué)習(xí)推理服務(wù)的云原生參數(shù)配置系統(tǒng)。
我們依托阿里大量的AI推理服務(wù)經(jīng)驗,總結(jié)發(fā)現(xiàn),推理業(yè)務(wù)配置調(diào)優(yōu)的痛點在于:
缺少自動化性能測試、參數(shù)調(diào)優(yōu)的框架:迭代式的手動調(diào)整配置-服務(wù)壓測,給部署測試帶來巨大人工負擔(dān),使這一方向在現(xiàn)實下成為不可能的選項。
穩(wěn)定和非侵入式的服務(wù)性能測試流程:在生產(chǎn)環(huán)境下對在線服務(wù)直接進行部署測試,會影響用戶體驗。
要求高效的參數(shù)組合調(diào)優(yōu)算法:考慮到需要配置的參數(shù)數(shù)量增多時,聯(lián)合調(diào)試多維度參數(shù)的組合優(yōu)化配置,對調(diào)優(yōu)算法提出了更高的效率要求。
Morphling
針對上述難題,阿里巴巴云原生集群管理團隊和開發(fā)并開源了基于 Kubernetes 的機器學(xué)習(xí)推理服務(wù)配置框架——Morphling,將參數(shù)組合調(diào)優(yōu)全流程自動化,并結(jié)合高效的智能化調(diào)優(yōu)算法,使推理業(yè)務(wù)的配置調(diào)優(yōu)流程,能夠高效地運行在 Kubernetes 之上,解決機器學(xué)習(xí)在產(chǎn)業(yè)實際部署中的性能和成本挑戰(zhàn)。
Morphling 對參數(shù)調(diào)優(yōu)的過程進行了不同層次的云原生抽象,提供給用戶簡潔且靈活的配置接口,將底層的容器操作、數(shù)據(jù)通信、采樣算法、和存儲管理封裝在控制器中。具體來說,Morphling 的參數(shù)調(diào)優(yōu)-性能壓測,采用 experiment-trial 工作流程。
Experiment 作為最貼近用戶的一層抽象,通過交互,由用戶指定機器學(xué)習(xí)模型的存儲位置、待調(diào)優(yōu)的配置參數(shù)、測試數(shù)量上限等,定義一次具體的參數(shù)調(diào)優(yōu)作業(yè)。
對于每個參數(shù)調(diào)優(yōu)作業(yè) experiment,Morphling 定義了另一層抽象:trial。Trial 封裝了針對某一特定參數(shù)組合的一次性能測試流程,涵蓋了底層的 Kubernetes 容器操作:每個 trial 中,Morphling 根據(jù)測試參數(shù)組合,配置并啟動推理服務(wù)容器,檢測服務(wù)的可用性和健康狀態(tài),并對服務(wù)進行壓力測試,測量該配置下容器的服務(wù)性能,例如響應(yīng)時間延遲、服務(wù)吞吐量、資源使用效率等。測試結(jié)果將存儲在數(shù)據(jù)庫中,并反饋給 experiment。
Morphling通過智能的超參調(diào)優(yōu)算法,選擇少量配置組合進行性能測試(trial),每輪測試結(jié)果作為反饋,來高效選擇下一組待測參數(shù)。為了避免窮舉方式的規(guī)格點采樣,我們采用貝葉斯優(yōu)化作為畫像采樣算法的內(nèi)部核心驅(qū)動,通過不斷細化擬合函數(shù),以低采樣率(<20%)的壓測開銷,給出接近最優(yōu)的容器規(guī)格推薦結(jié)果。
通過這樣迭代式的采樣-測試,最終反饋給業(yè)務(wù)部署人員優(yōu)化的配置組合推薦。
同時,Morphling 提供了管控套件:Morphling-UI,方便業(yè)務(wù)部署團隊在可界面化上,通過簡單易用的操作,發(fā)起推理業(yè)務(wù)配置調(diào)優(yōu) experiment、監(jiān)控調(diào)優(yōu)過程、比較調(diào)優(yōu)結(jié)果。
Morphling 在淘系內(nèi)容社交平臺中的實踐
阿里巴巴內(nèi)部豐富的在線機器學(xué)習(xí)推理場景和大量的推理服務(wù)實例需求,為 Morphling 的落地驗證提供了第一手的落地實踐和測試反饋。其中,阿里淘系內(nèi)容社交平臺Machine Vision Application Platform(MVAP)團隊,通過在線機器學(xué)習(xí)推理引擎,支持淘系直播商品看點識別、直播封面圖去重、逛逛圖文分類等業(yè)務(wù)。
在 2020 年雙十一期間,我們通過 Morphling 對 AI 推理容器進行了規(guī)格測試、優(yōu)化,尋找性能和成本之間的最優(yōu)解,同時算法工程團隊進而對這些資源消耗型的推理模型,例如淘系視頻看點服務(wù),做出針對性的模型量化、分析,并從 AI 模型設(shè)計角度進行優(yōu)化,以最少的資源支持了雙十一的洪峰流量,同時保證業(yè)務(wù)的性能不下降,極大的提高 GPU 利用率和降低了成本。
學(xué)術(shù)探索
為了提高推理服務(wù)參數(shù)調(diào)優(yōu)過程的效率,阿里巴巴云原生集群管理團隊,針對推理業(yè)務(wù)的特性,進一步探索了使用元學(xué)習(xí)(meta-learning)和小樣本回歸(few-shot regression)實現(xiàn)更高效的、低采樣成本的配置調(diào)優(yōu)算法,應(yīng)對實際業(yè)界“快速、小樣本采樣、低測試成本”的調(diào)優(yōu)要求,以及面向云原生且自動化的調(diào)優(yōu)框架。相關(guān)學(xué)術(shù)論文 "Morphling: Fast, Near-Optimal Auto-Configuration for Cloud-Native Model Serving",被ACM Symposium on Cloud Computing 2021 (ACM SoCC 2021)接收。
近年,云上 AI 推理任務(wù)的優(yōu)化部署相關(guān)主題活躍在各大云計算、系統(tǒng)相關(guān)的學(xué)術(shù)期刊和會議,成為學(xué)術(shù)界探索的熱點。探索的主題主要包括,AI 模型的動態(tài)選擇、部署實例的動態(tài)闊縮容、用戶訪問的流量調(diào)度、GPU 資源的充分利用(例如模型動態(tài)加載、批處理大小優(yōu)化)等。然而,從大規(guī)模業(yè)界實踐出發(fā),最佳化容器級別的推理服務(wù)部署這一問題的研究,尚屬首次。
算法方面,性能調(diào)優(yōu)作為經(jīng)典的超參數(shù)優(yōu)化(hyper-parameter tuning)問題。傳統(tǒng)超參調(diào)優(yōu)方法例如貝葉斯優(yōu)化,難以面對高維度(多配置項)且大搜索空間的調(diào)優(yōu)問題。例如,對于 AI 推理任務(wù),我們在 CPU 核數(shù)、GPU 顯存大小、批處理 batch size、GPU 型號這四個維度(配置項)進行“組合優(yōu)化”式的超參調(diào)優(yōu),每個配置項有 5~8 個可選參數(shù)。這樣,組合情況下的參數(shù)搜索空間就高達 700 個以上?;谖覀冊谏a(chǎn)集群的測試經(jīng)驗積累,對于一個 AI 推理容器,每測試一組參數(shù),從拉起服務(wù)、壓力測試、到數(shù)據(jù)呈報,需要耗時幾分鐘;與此同時,AI 推理業(yè)務(wù)的種類繁多,更新迭代頻繁,部署工程師人力有限,測試集群成本有限。要在這樣大的搜索空間內(nèi),高效地測試出最優(yōu)的配置參數(shù),對超參調(diào)優(yōu)算法提出了新的挑戰(zhàn)。
在這篇論文中,我們的核心觀察是,對于不同的 AI 推理業(yè)務(wù),其需要優(yōu)化各項的配置(例如 GPU 顯存、批處理大?。τ谌萜鞯姆?wù)性能(例如 QPS)影響,“趨勢穩(wěn)定且相似”,表現(xiàn)在可視化的“配置-性能”曲面上,體現(xiàn)為,不同AI推理實例,“配置-性能”曲面的形狀相似,但配置對性能的影響程度和關(guān)鍵節(jié)點,在數(shù)值上各不相同:
上圖可視化了三種 AI 推理模型,其<CPU 核數(shù)、GPU顯存大小>的二維配置,對容器服務(wù)吞吐量 RPS 的影響。論文提出,使用 Model-Agnostic Meta-Learning(MAML)對這些共性進行提前學(xué)習(xí),訓(xùn)練出元模型,從而對新的 AI 推理性能測試,快速找到曲面中的關(guān)鍵節(jié)點,以元模型出發(fā),作出小樣本下(5%)的精確擬合。
總結(jié)
Morphling 基于的 Kubernetes 機器學(xué)習(xí)推理服務(wù)配置框架,結(jié)合“快速、小樣本采樣、低測試成本”的調(diào)優(yōu)算法,實現(xiàn)了面向云原生的自動化且穩(wěn)定高效的 AI 推理部署調(diào)優(yōu)流程,更快地賦能部署流程的優(yōu)化和迭代,加速機器學(xué)習(xí)業(yè)務(wù)應(yīng)用的上線。Morphling 和 KubeDL 的結(jié)合,也會使得 AI 從模型訓(xùn)練,到推理部署的配置調(diào)的優(yōu)體驗更為流暢。