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