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