AI生態(tài)中的云原生組件
1.核心云原生組件
容器化技術(shù)是云原生的核心,它通過(guò)將應(yīng)用及其依賴項(xiàng)打包到一個(gè)輕量級(jí)、獨(dú)立的容器中,確保了應(yīng)用在不同環(huán)境中的一致運(yùn)行。
作為兩種主流的容器引擎,Docker和containerd廣泛應(yīng)用于AI模型的開(kāi)發(fā)和部署。Docker提供了簡(jiǎn)便的容器化工具鏈,而containerd則作為一個(gè)高效、專注的容器運(yùn)行時(shí),為Kubernetes等平臺(tái)提供底層支持。容器化AI模型可以在本地開(kāi)發(fā)環(huán)境與云端無(wú)縫切換,減少環(huán)境差異帶來(lái)的問(wèn)題。
AI應(yīng)用通常由多個(gè)容器化服務(wù)組成,這些服務(wù)需要協(xié)調(diào)和管理,以確保它們能夠有效地協(xié)同工作。容器編排工具在這一過(guò)程中扮演著至關(guān)重要的角色,其中主流的編排工具有KUbernetes和Kubeflow。
作為當(dāng)前最流行的容器編排平臺(tái),Kubernetes提供了自動(dòng)化部署、擴(kuò)展和管理容器化應(yīng)用的功能。對(duì)于AI工作負(fù)載,Kubernetes可以調(diào)度和管理計(jì)算資源,確保AI模型訓(xùn)練和推理任務(wù)的高效執(zhí)行。
Kubeflow是一個(gè)基于Kubernetes的開(kāi)源機(jī)器學(xué)習(xí)平臺(tái),專為簡(jiǎn)化AI模型的開(kāi)發(fā)、訓(xùn)練和部署而設(shè)計(jì)。它集成了TensorFlow、PyTorch等主流深度學(xué)習(xí)框架,并提供了流水線管理、超參數(shù)調(diào)優(yōu)等功能,幫助開(kāi)發(fā)者構(gòu)建和管理復(fù)雜的AI工作流。
2.模型分布式訓(xùn)練
AI模型的訓(xùn)練通常需要處理海量數(shù)據(jù)和復(fù)雜的計(jì)算任務(wù),單臺(tái)機(jī)器難以承擔(dān)這一過(guò)程。分布式訓(xùn)練通過(guò)在多臺(tái)機(jī)器上并行處理數(shù)據(jù)和計(jì)算任務(wù),大大縮短了模型訓(xùn)練的時(shí)間,業(yè)界常用的訓(xùn)練框架主要有PyTorch、Megatron-Deepspeed和MindSpore等。
PyTorch是一個(gè)開(kāi)源的深度學(xué)習(xí)框架,它采用動(dòng)態(tài)計(jì)算圖(Dynamic Computation Graph),允許用戶在模型訓(xùn)練過(guò)程中動(dòng)態(tài)構(gòu)建計(jì)算圖,提供了高度的靈活性和易用性。PyTorch 的核心組件包括張量計(jì)算、自動(dòng)微分、神經(jīng)網(wǎng)絡(luò)模塊以及數(shù)據(jù)加載工具,這些組件集成在一個(gè)框架中,用以支持 GPU 加速和分布式訓(xùn)練。PyTorch的動(dòng)態(tài)計(jì)算圖使得模型調(diào)試和開(kāi)發(fā)更加直觀,尤其適合研究和開(kāi)發(fā)階段的實(shí)驗(yàn),而且它的API 設(shè)計(jì)符合 Python 的編程習(xí)慣,使用起來(lái)非常直觀,容易上手。
Megatron-Deepspeed通過(guò)模型并行、數(shù)據(jù)并行、流水線并行以及混合精度訓(xùn)練等技術(shù),實(shí)現(xiàn)了對(duì)超大規(guī)模模型的高效 分布式訓(xùn)練。它針對(duì)超大規(guī)模模型訓(xùn)練進(jìn)行了深入優(yōu)化,能夠有效利用多 GPU 和多節(jié)點(diǎn)的計(jì)算資源。并且結(jié)合 Megatron 和 DeepSpeed 的優(yōu)勢(shì),實(shí)現(xiàn)了極高的計(jì)算效率和資源利用率,特別適合訓(xùn)練龐大的語(yǔ)言模型。并且通過(guò) ZeRO (Zero Redundancy Optimizer) 技術(shù),極大減少了模型參數(shù)、優(yōu)化器狀態(tài)和梯度的內(nèi)存占用,使得在有限的硬件資源上訓(xùn)練更大的模型成為可能。
MindSpore 是華為開(kāi)發(fā)的全場(chǎng)景 AI 計(jì)算框架,設(shè)計(jì)用于端、邊、云的全場(chǎng)景部署。它支持動(dòng)態(tài)圖和靜態(tài)圖模式,采用了深度優(yōu)化的計(jì)算圖和分布式訓(xùn)練技術(shù),能夠適應(yīng)各種硬件環(huán)境,包括 Ascend AI 處理器、GPU 和 CPU。并且它針對(duì)華為 Ascend 芯片進(jìn)行了深度優(yōu)化,在 Ascend 平臺(tái)上具有顯著的性能優(yōu)勢(shì)。還提供了模型切片和差分隱私等功能,增強(qiáng)了模型的安全性和數(shù)據(jù)隱私保護(hù)。
3.AI 推理服務(wù)
在模型訓(xùn)練完成后,如何高效地將模型應(yīng)用于實(shí)際推理任務(wù),是AI系統(tǒng)落地的關(guān)鍵。云原生架構(gòu)為推理服務(wù)的部署、擴(kuò)展和管理提供了高效的解決方案。
vLLM是一個(gè)高性能的分布式推理引擎,專為L(zhǎng)LM設(shè)計(jì),能夠在推理任務(wù)中顯著提升效率和吞吐量,它通過(guò)一種新的注意力算法,有效地管理注意力鍵和值,極大提升了實(shí)時(shí)場(chǎng)景下語(yǔ)言模型服務(wù)的吞吐量和內(nèi)存使用效率。同時(shí),vLLM也支持分布式推理,可以跨多個(gè)GPU和節(jié)點(diǎn)分配推理任務(wù)。它通過(guò)一種名為PipelineParallelism的技術(shù),在多個(gè)GPU之間分解和流水線化推理任務(wù),進(jìn)而提升推理吞吐量。
除了分布式推理,vLLM還支持多種硬件平臺(tái),包括NVIDIA GPU、AMD CPU和GPU、IntelCPU和GPU、PowerPC CPU、TPU和AWS Neuron,并且與提供了與HuggingFace模型的無(wú)縫集成,用戶無(wú)需對(duì)模型架構(gòu)或者現(xiàn)有代碼進(jìn)行修改即可在vLLM上部署基于Transformers的模型。
KServe是一個(gè)專為機(jī)器學(xué)習(xí)模型推理而設(shè)計(jì)的框架,能夠在云原生環(huán)境中高效管理、部署機(jī)器學(xué)習(xí)模型。它通過(guò)自定義資源(CRD)來(lái)管理模型推理服務(wù),這些CRD使得用戶可以通過(guò)聲明方式來(lái)定義模型的部署和服務(wù)配置。
在云原生環(huán)境中,協(xié)同與調(diào)度是確保應(yīng)用程序高效運(yùn)行的關(guān)鍵要素。隨著應(yīng)用負(fù)載的動(dòng)態(tài)變化以及多樣化的工作負(fù)載類型的增加,傳統(tǒng)的靜態(tài)資源分配方式已無(wú)法滿足現(xiàn)代應(yīng)用的需求。云原生架構(gòu)下,出現(xiàn)了一些專門(mén)用于協(xié)同與調(diào)度的組件,如KEDA、Kueue和Volcano,它們?yōu)閼?yīng)用程序提供了更加靈活和智能的調(diào)度能力。
4.協(xié)同和調(diào)度
KEDA(KubernetesEvent-DrivenAutoscaling)是一個(gè)開(kāi)源的Kubernetes擴(kuò)展組件,專為事件驅(qū)動(dòng)的自動(dòng)擴(kuò)展而設(shè)計(jì)。它使Kubernetes工作負(fù)載能夠根據(jù)外部事件源的指標(biāo)(如消息隊(duì)列長(zhǎng)度、數(shù)據(jù)庫(kù)查詢量、HTTP請(qǐng)求數(shù)量等)自動(dòng)進(jìn)行擴(kuò)展。KEDA的核心優(yōu)勢(shì)在于:
(1)事件驅(qū)動(dòng)的擴(kuò)展:KEDA支持多種事件源,包括Kafka、Azure Service Bus、AWS SQS等,這使得應(yīng)用程序可以基于實(shí)時(shí)數(shù)據(jù)自動(dòng)調(diào)整其資源。
(2)精細(xì)化的擴(kuò)展控制:KEDA允許開(kāi)發(fā)者為每個(gè)應(yīng)用定義自定義的擴(kuò)展規(guī)則,從而實(shí)現(xiàn)更精確的資源管理。
(3)無(wú)縫集成Kubernetes:KEDA作為Kubernetes的控制器運(yùn)行,可以與現(xiàn)有的Kubernetes生態(tài)系統(tǒng)無(wú)縫集成,使得用戶無(wú)需更改現(xiàn)有的部署方式。
通過(guò)KEDA,用戶可以在事件驅(qū)動(dòng)的場(chǎng)景中高效地管理資源,確保應(yīng)用的性能和穩(wěn)定性。
Kueue可以根據(jù)任務(wù)的優(yōu)先級(jí)、資源需求和調(diào)度策略,優(yōu)化任務(wù)調(diào)度的順序,確保資源得到最大化利用。并且還支持任務(wù)隊(duì)列管理,通過(guò)將任務(wù)分配到不同的隊(duì)列中,根據(jù)策略動(dòng)態(tài)調(diào)整任務(wù)的調(diào)度順序,實(shí)現(xiàn)對(duì)資源的精細(xì)控制。
Volcano是一個(gè)為高性能計(jì)算(HPC)和大數(shù)據(jù)工作負(fù)載優(yōu)化的Kubernetes調(diào)度器。它為需要并行計(jì)算和批處理的應(yīng)用提供了增強(qiáng)的調(diào)度功能。Volcano支持多種調(diào)度策略,如優(yōu)先級(jí)調(diào)度、公平調(diào)度、搶占式調(diào)度等,能夠根據(jù)任務(wù)的特性和需求進(jìn)行優(yōu)化調(diào)度。值得一提的是,通過(guò)Volcano的公平調(diào)度策略,不同的工作負(fù)載可以獲得相對(duì)公平的資源分配,避免資源爭(zhēng)用導(dǎo)致的性能問(wèn)題。此外,Volcano還提供了任務(wù)依賴管理功能,支持DAG(有向無(wú)環(huán)圖)調(diào)度,確保任務(wù)按依賴關(guān)系順序執(zhí)行,從而提高任務(wù)調(diào)度的整體效率。
5.總結(jié)與展望
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,未來(lái)的云原生AI生態(tài)將更加智能、靈活和安全,諸多如邊緣計(jì)算、聯(lián)邦學(xué)習(xí)、AIOps、等技術(shù)也將在AI生態(tài)中占據(jù)更加重要的地位,云原生架構(gòu)將在AI時(shí)代繼續(xù)引領(lǐng)技術(shù)創(chuàng)新和產(chǎn)業(yè)變革。這些趨勢(shì)不僅會(huì)提升AI應(yīng)用的效率和性能,還將幫助企業(yè)在全球化和數(shù)字化的浪潮中保持競(jìng)爭(zhēng)優(yōu)勢(shì)。
隨著云原生和ML技術(shù)的發(fā)展,未來(lái)的AI將更加智能和靈活,也有望在以下幾個(gè)領(lǐng)域取得更進(jìn)一步的突破:
邊緣 AI 部署:未來(lái),邊緣計(jì)算設(shè)備將具備更強(qiáng)的計(jì)算能力和 AI 模型推理能力。y也會(huì)涌現(xiàn)更靈活的云原生工具和框架,支持在邊緣設(shè)備上部署和管理 AI 模型。這將使得實(shí)時(shí)數(shù)據(jù)處理和本地推理成為可能,特別是在智能制造、自動(dòng)駕駛和智能城市等場(chǎng)景中。
聯(lián)邦學(xué)習(xí)的應(yīng)用:為了保護(hù)數(shù)據(jù)隱私并提高模型的泛化能力,聯(lián)邦學(xué)習(xí)將在云原生 AI 平臺(tái)中扮演重要角色。聯(lián)邦學(xué)習(xí)允許在多個(gè)邊緣設(shè)備上協(xié)同訓(xùn)練 AI 模型,而無(wú)需將數(shù)據(jù)集中到云端。云原生平臺(tái)將為聯(lián)邦學(xué)習(xí)提供更好的支持,確保不同設(shè)備間的安全通信和高效模型同步。
AI 運(yùn)維:隨著 AI 應(yīng)用規(guī)模的擴(kuò)大和復(fù)雜度的提升,傳統(tǒng)的運(yùn)維方案已有些捉襟見(jiàn)肘。AI 運(yùn)維(AIOps)將在云原生環(huán)境中得到更廣泛的應(yīng)用,自動(dòng)化和智能化的運(yùn)維將成為主流。未來(lái)的運(yùn)維系統(tǒng)不僅能夠在問(wèn)題發(fā)生時(shí)自動(dòng)修復(fù),還可以通過(guò)預(yù)測(cè)分析提前發(fā)現(xiàn)并解決問(wèn)題,確保系統(tǒng)的高可用性和穩(wěn)定性;并且能夠根據(jù)實(shí)時(shí)負(fù)載情況動(dòng)態(tài)調(diào)整計(jì)算資源的分配,確保資源利用率最大化,并減少成本。
參考文獻(xiàn)
??https://mp.weixin.qq.com/s/EeZDvMkE8tbeDtgaPeHeYg??
??https://www.kubeflow.org/docs/concepts/multi-tenancy/??
??https://docs.vllm.ai/en/latest/models/supported_models.html??
??https://www.deepspeed.ai/tutorials/automatic-tensor-parallelism/??
??https://kserve.github.io/website/latest/modelserving/mms/modelmesh/overview/??
??https://volcano.sh/zh/docs/vcjob/??
??https://blog.csdn.net/zhangfeng1133/article/details/141561030??
??https://pytorch.org/docs/master/compile/technical-overview.html??
本文轉(zhuǎn)載自 ??AI遇見(jiàn)云??,作者: 吳中堅(jiān)
