唐雄燕 曹 暢 張 巖 楊 洋 霍龍社 崔煜喆
1 中國聯通研究院 北京 100048
2 下一代互聯網寬帶業務應用國家工程研究中心 北京 100048
近年來,伴隨著數字經濟的蓬勃發展,互聯網、大數據、人工智能同各行各業深度融合,產生的數據量和計算量呈指數爆發,對于目前海量、分散的應用場景,數據的處理與分析需要強有力的算力提供支撐,加速了“云、邊、端”為主的算力資源的高效協同,同時服務形態也由最初的云服務向算力服務演進,促進算力技術發展走向多架構并存的道路。
異構算力廣泛應用帶來了軟件層面以及硬件、芯片層面新的技術問題,為算力資源的高效利用以及應用的快速發展提出了挑戰,亟需一套解決方案來屏蔽異構算力、異構代碼和異構運行環境差異所引入的軟硬件兼容問題,以便提高資源利用率,降低開發以及維護成本。基于此背景,本文提出了算力服務原生技術體系,闡述了功能需求、整體架構等相關內容,并在AI算力服務原生方面進行了初步實踐,自主研發CubeAI智立方AI算力服務原生系列軟件并開源。
需求發展驅動:萬物互聯使得算力需求日益劇增[1],業界逐漸形成了以“云、邊、端”為主的新型算力資源協同和發展的格局[2],構建了多層級的算力基礎設施。計算服務對算力的需求促進了算力的多樣性[3]和算力性能的不斷提升,在不同的應用場景中,期望異構算力協同處理,以發揮最大化的計算效力。尤其對于新興的人工智能[4]應用場景,面對繁雜多樣的計算需求,需要使用遍布在云邊端泛在部署的異構算力資源,使業務應用能平滑地在各級算力資源上進行遷移和運行。如何充分利用海量的異構算力資源,是當今計算服務發展的關鍵點。
技術發展驅動:算力最初的形態為通用CPU,為滿足日益豐富的應用場景,多類芯片相繼涌現,算力形態呈現螺旋式發展狀態。面對AI、網絡虛擬化等場景的出現,通用CPU無法滿足運算性能的需求,因此專用芯片逐步發展[5];隨著當前深度學習等應用場景規模不斷擴大和算法逐漸多樣化,基于特定算法和流程定制的ASIC(Application Specific Integrated Circuit)無法滿足業務需求,針對智算場景的GPU出現并逐漸向通用GPU[6]發展。專用算力雖然滿足不同場景中的應用需求,但帶來收益的同時也帶來系統“碎片化”的挑戰[7]。面對高性能計算、人工智能等應用場景的增加,芯片的發展未來將會是專用算力與通用算力并存的形態。
服務形態演進驅動:通用算力為主的云計算技術已成為賦能業務數字化轉型的關鍵[8],但隨著企業數字化程度不斷加深,用戶對算力的感知、度量和利用率等方面提出更高的要求,如圖1所示,與此同時云服務也逐漸向算力服務演進[9]。雖然云原生技術為應用在通用算力下的部署提供了支撐,但由于異構算力自身的架構差異,軟件與算力的高度定制化等問題,仍無法真正實現基于異構算力的應用部署。因此,要實現真正從代碼到應用都屏蔽資源架構的差異,不僅僅要求面向算力服務軟件的能力支持,同時面向算力服務基礎設施,需要對異構算力進行統一抽象。

圖1 服務形態演進,云服務到算力服務
算力服務原生是指屏蔽異構代碼和異構運行環境間的差異,將一套應用代碼封裝為規范化的互聯網服務,并可部署至任意位置和任意類型的算力上,供用戶使用規范化互聯網接口隨時隨地調用和消費。
在此理念下,算力服務原生應實現大規模異構計算資源的統一輸出,更加普適性地滿足不同量級或不同硬件架構下的算力需求。算力服務原生要統一算力輸出的服務化標準,促進算力服務標準化,避免軟件被固定形式的算力需求所捆綁,實現算力應用的標準化落地,解決異構算力代碼不通用、算力服務化成本高等問題,提高算力在各類場景下的應用效率。
面向算力服務軟件,算力服務原生將所有應用代碼進行服務化封裝,為用戶提供統一規范化的服務訪問接口和模式,使得所有應用代碼(及其依附的算力設施)能夠以服務的形式被用戶所訪問和使用,實現“代碼即服務”“算力即服務”,簡化普通用戶使用和消費應用代碼和算力設施的操作和模式。面向算力服務設施,算力服務原生屏蔽應用異構算力引入的復雜軟硬件差異,實現同一應用同一套代碼,在無需改動的條件下,即可自動適配所有廠家的所有算力設備,應用在異構算力間無感知遷移,達到一套代碼,全網通用的目的。
算力服務原生與云原生、算力網絡、人工智能有著千絲萬縷的關系,如圖2所示,三者共同作用,相輔相成,為用戶提供端到端服務的目標進行支撐。

圖2 相關技術關系圖
算力服務原生是云原生向底層算力資源的延伸。以FaaS等Serverless技術[10]為代表,云原生技術重新定義了PaaS,用戶無需關注虛擬機、資源分配、應用擴縮容邏輯等。進一步地,算力服務原生是云原生的擴展,通過異構算力池化、異構算力運行時和統一編程模型等,提供算力即服務的新型服務能力,實現同一套代碼在異構算力上無感知遷移和部署。在AI業務特性方面,算力服務原生提升異構算力資源利用率,滿足AI業務日益增長的算力需求。在服務特性方面,算力服務原生支持同一套代碼基于異構算力資源部署,大幅降低用戶跨異構算力的應用開發和部署成本。
算力服務原生增強了云原生的異構資源抽象能力。云原生技術為上層應用程序提供快速部署、彈性擴縮容和動態調度能力,但對于xPU、ASIC、FPGA等異構算力的管理存在一定瓶頸。算力服務原生通過資源池化、標準運行時和統一編程開發框架等技術,實現對異構算力的統一抽象,與虛擬化、容器化等技術相結合,能夠有效擴展云原生技術在異構算力下的服務管理、擴縮容能力、應用運維等能力。
云原生作為算力服務原生的子集為算力服務賦能,其作為計算資源面向行業用戶的服務通道,為算力服務原生提供通用算力以及微服務等能力,將傳統的、有狀態的粗粒度應用程序組件拆分解耦,以分布式的形態部署到基于容器化的異構算力設施上,支持將微服務化后的細粒度組件部署到最適合的算力上,最大化異構算力資源服務能力。
算力服務原生支撐網絡技術實現以算強網。SDN與NFV[11]相結合,提供了不依賴于專用硬件的動態靈活的網絡管理能力,以滿足算力網絡對網絡的協同性、靈活性、確定性等要求。在SDN+NFV架構下,借助算力服務原生技術,能夠進一步利用異構算力資源,將部分加解密、IO吞吐等網絡功能卸載到GPU、FPGA等異構化加速設備中,實現跨異構算力的高效靈活的網絡調度,同時減少由于網絡設備數量眾多、架構差異化導致的維護負擔。
算力服務原生支撐算力網絡實現泛在調度。面向國內外異構算力芯片以及云邊端、智算、超算等多樣化算力供給方式,算力網絡以算力服務原生技術為中間層,向下屏蔽異構算力在指令集、開放框架的差異性,向上提供統一的管理、調度和開發接口,有效降低算力網絡對異構算力的納管和調度復雜度,減少應用遷移調度中的代碼重構工作量,在一定程度上保證應用跨異構調度后的整體服務質量。
算力服務原生是算力網絡的關鍵技術之一。算力服務原生依托算力網絡,能夠充分發揮其在釋放行業生產力、優化基礎設施建設、提升異構資源利用率的優勢,實現算力網絡中異構算力布局的合理規劃,有效改善當前國產化算力應用生態不完善、發展路徑孤立等問題。
算力服務原生為人工智能大模型訓練提供算力基礎。隨著大模型的推廣應用,語言和多模態等相關領域AI模型的參數量和訓練數據量巨大,需要強大的算力支撐[12]。基于算力服務原生技術,可以提升訓練過程中對硬件的使用效率,加速模型訓練的迭代速度,同時有望實現單個數據中心內的異構算力芯片融合協同。未來在芯片間高速互聯以及遠距直接數據存儲(Remote Direct Memory Access,RDMA)[13]等網絡技術的輔助下,算力服務原生技術與網絡能力深度融合,能夠實現多個數據中心間通過數據并行或模型并行的方式協同完成單個大模型的訓練。
人工智能能夠為算力服務原生賦能。人工智能技術[14]能夠在用戶服務質量感知、應用與異構算力的匹配、服務性能預測、資源的最優調度、服務編排等方面為算力服務原生提供最優解。
要實現真正從代碼到應用都屏蔽資源架構的差異,不僅僅要求面向算力服務軟件的能力支持,同時面向算力服務基礎設施,需要對異構算力進行統一抽象。如需要對各種編程語言(Java、Python等)、各種工具平臺(PaddlePaddle、PyTorch等)編寫的代碼進行兼容,提供統一的封裝方式,實現無差別接入;對異構算力進行統一化度量,解決軟件層面以及硬件、芯片層面新的技術問題;同時,應用異構互聯的網絡將硬件與硬件、硬件與軟件、軟件與用戶進行互聯互通,達到“一碼通用”的算力服務軟硬件生態。算力服務原生體系架構需要滿足以上需求,并實現以下功能。
1)代碼即服務、算力即服務:基于統一引擎,以簡潔、規范、易用的方式將任意應用程序代碼進行服務化封裝,能夠調度和部署至云邊端等任意位置,并為用戶提供簡潔、規范、易用的服務訪問模式和工具。
2)統一編程模型:基于異構計算架構設計的編程模型,能夠讓開發者可以使用同樣的編程語言和工具來編寫程序,而無需考慮底層硬件的細節。
3)異構算力運行時:通過提供一種跨平臺的、高性能的計算環境,允許計算機程序在異構算力資源上平滑地流轉運行,使得開發人員可以輕松地利用異構算力,提高計算性能和效率。
4)異構算力池化:基于池化技術將CPU、GPU等多種不同類型、不同指令集、不同制程架構的計算資源通過池化技術進行集中管理和調度,形成一個納管異構計算資源的統一資源池。為不同的計算任務提供高效、靈活、彈性和可擴展的計算資源,提高計算效率和性能。
5)異構算力互聯:支撐算力抽象層獲取異構資源池化層統一標準化計算資源,提升程序在異構算力資源上平滑地流轉的能力,使得開發人員可以無感地利用異構算力池化層的計算資源。
如圖3所示,從應用對外提供服務所需的技術能力支撐維度,本文提出算力服務原生由軟件到硬件自頂向下可分為五層,即應用層、服務層、算力抽象層、異構算力池化層以及設備層。其中算力服務原生技術棧包括:服務層、算力抽象層、異構算力池化層。應用對外提供服務,既依賴軟件層面將代碼服務化,同時依賴能夠執行服務的算力。在本架構中服務層提供將代碼、模型封裝為微服務的能力,異構算力池化層用于對異構算力進行統一納管,算力抽象層則起到承上啟下的作用,將代碼與算力解耦,實現同一套代碼可在異構算力資源上平滑流轉執行。

圖3 算力服務原生總體架構
1)服務層
服務層維度的算力服務原生,旨在達到代碼即服務,算力即服務的目的,所謂“代碼即服務”,就是指開發者開發出一套應用代碼之后,隨即變成可部署至任意位置的規范化互聯網服務,供用戶使用規范化互聯網接口隨時隨地調用和消費。由于服務化后的應用程序是依附在算力資源(設備)上運行并向外提供服務的,因此又達到了“算力即服務”的目的。
2)算力抽象層
算力抽象層是由算力服務原生編程模型和異構算力運行時組成,其中算力服務原生編程模型基于原生算力統一API、原生編程模型范式以及編譯優化部署工具,提供了一種統一的編程方式,開發者可以使用一種或多種高級語言進行應用開發,編譯器、庫和工具可以將程序轉換為特定硬件上的可執行代碼,并利用硬件特性來實現高性能計算,實現編程語言對硬件透明化。
異構算力運行時旨在解決傳統的計算設備之間由于架構、指令集、內存模型等差異,引發不同計算設備之間的互操作性問題。異構算力運行時通過提供一種跨平臺的、高性能的計算環境,允許計算機程序在異構算力資源上平滑地流轉運行,使得開發人員可以輕松地利用異構算力,提高計算性能和效率。
3)異構算力池化層
算力資源池通過對底層異構硬件設備進行統一建模,使其不同類型的計算設備統一標準化,同時結合異構算力互聯能力,實現異構計算資源的一體池化管理,面對應用層不同的計算任務需求,提供高效、靈活的計算資源調度,同時計算資源的彈性和可擴展能力為業務應對潮汐場景下的服務質量保障提供了有效的應對途徑。
為了實踐算力服務原生基本理念,近年來聯通研究院在面向AI的算力服務原生領域展開了較為深入和持續的研究和探索,開發了一套集AI模型自動化服務封裝、發布、共享、部署和能力開放等功能于一體的開源AI算力服務原生平臺和工具集——CubeAI智立方,實現“代碼即服務”和“算力即服務”等理念。
代碼即服務:AI模型推理程序經算力服務原生化封裝后,隨即變成可對外提供函數型API和Web可視化等訪問接口的交互式在線網絡服務,改變傳統模型推理大多采用的靜態命令行調用、文件進文件出等非用戶友好模式。
算力即服務:經服務化封裝的模型推理服務程序一經部署之后,隨即啟動運行并向用戶提供在線AI算力服務,算力天生能夠以最為方便、快捷、友好的方式為用戶所使用,改變傳統AI算力只能夠通過命令行和批量式任務等方式進行調度使用的非友好模式。
如圖4所示,CubeAI智立方AI算力服務原生開源體系由一系列基礎開發工具、應用服務平臺和模型示范庫等組成。

圖4 CubeAI智立方AI算力服務原生開源體系
ServiceBoot服務原生引擎是支撐AI算力服務原生的最基礎底層工具軟件。使用寥寥幾行代碼,即可將普通Python程序封裝成為可提供高并發函數式HTTP訪問的云原生微服務,特別適用于對AI模型推理程序進行服務化封裝。ServiceBoot目前同時提供函數式API、WebSocket、Web可視化等多種接口訪問方式,以及JSON、二進制、文件等多種數據交換格式。其中Web可視化接口同時支持基于JavaScript的前端開發框架和基于Gradio和Streamlit軟件的Python前端框架,既可以開發精美復雜的大型AI應用,又可以使用短短幾行Python代碼編寫優雅的AI交互界面。
CubePy微服務框架是基于ServiceBoot開發的云原生微服務應用基礎開發框架,提供微服務注冊與發現、統一數據配置、統一內容服務、API網關、用戶認證授權、前端主門戶模板等基本功能和組件。使用CubePy微服務框架開發出來的應用系統天生可運行于Kubernetes等云原生網絡環境,大大提高開發者和運維者的工作效率。
CubeAI系列軟件的核心部分是基于CubePy微服務框架和ServiceBoot引擎開發的CubeAI智立方平臺,其組網架構如圖5所示,又可分為AI模型共享交易和AI模型算力服務兩個子平臺。經使用ServieBoot進行服務化封裝后的AI模型,可以Docker鏡像等微服務形式一鍵發布至AI模型共享交易平臺,供用戶瀏覽、評價和交易。在AI模型共享交易平臺中獲得授權使用的AI模型,可一鍵部署至AI模型算力服務平臺,立即以函數式API或可視化Web等多種接口模式向用戶提供AI模型推理服務。除了CubeAI自建的AI模型算力服務平臺之外,還可將AI模型共享交易平臺中的AI模型一鍵部署至互聯網可訪問的任意其他AI算力服務平臺,例如鵬城云腦、ModelScope、HuggingFace等。

圖5 CubeAI智立方平臺組網架構
CubeAI打造了模型示范庫,支持“模型即服務”和“源碼一鍵入云”等AI算力服務原生理念。該模型庫中所有模型都是采用ServiceBoot對AI預訓練模型進行服務化封裝的服務原生模型,支持以源代碼方式一鍵自動發布至CubeAI平臺進行共享和部署,同時也可使用CubeAI Deployer等工具一鍵部署至任意其他算力服務平臺或者個人服務器。CubeAI模型示范庫目前已擁有上百個各類AI模型,使用的AI算法類型包括經典機器學習、深度學習、圖像處理、計算機視覺、自然語言處理、多模態大模型等,AI開發框架包括PaddlePaddle、MindSpore、PyTorch、TensorFlow等等。
CubeTools是支撐CubeAI模型示范庫開發的常用工具集,其中包括能夠適配國內外主流AI框架和CPU/GPU等不同算力裝置的通用推理服務組件,為PaddlePallde、MindSpore、ONNX Runtime和OpenVino Runtime等AI推理引擎封裝統一的SDK調用接口,達到“一套代碼,全框架通用”的開發和使用體驗。
CubeAI Deployer是一套AI模型獨立部署工具,可用于在脫離CubeAI智立方平臺的條件下將CubeAI模型示范庫中的AI模型一鍵自動服務化打包并部署運行。
本文在分析和研究業務代碼在異構算力不通用以及服務化成本高等問題的基礎上,首創提出了算力服務原生的概念,設計了算力服務原生的基礎體系架構,討論了如何基于異構算力基礎設施,建設“一套代碼,全網通用”的算力服務軟硬件生態,實現“代碼即服務”“算力即服務”等算力服務原生理念。最后介紹了在AI算力服務原生方面的初步探索,包括CubeAI智立方AI算力服務原生系列軟件開發及其開源實踐,初步實現了算力服務原生基本能力,CubeAI智立方系列軟件已在人工智能開源社區OpenI啟智社區開源[15],為AI算力服務原生研究和開發提供了良好生態環境和研究基礎。