博客 / 詳情

返回

vivo GPU容器與 AI 訓練平台探索與實踐

作者:互聯網容器團隊-Chen Han、AI 研發團隊 - Liu Dong Yang
在大規模GPU容器集羣與模型訓練場景,面臨穩定性和資源利用率等多重挑戰。本文展示vivo GPU平台的總體架構,介紹容器平台在大規模GPU容器集羣穩定性建設措施,以及探索多種GPU容器降本提效的解決方案。分享AI工程訓練平台大規模訓練穩定性建設,及GPU利用率提升實踐經驗。

 

本文為2025年 vivo 開發者大會互聯網技術專場分享內容之一,在微信公眾號“vivo互聯網技術”對話框回覆【2025VDC】獲取 2025VDC 互聯網技術會場議題相關資料。

 

1分鐘看圖掌握核心觀點👇

 

圖1 VS 圖2,您更傾向於哪張圖來輔助理解全文呢?歡迎在評論區留言

 

一、GPU平台架構

vivo的GPU平台由物理層、容器平台層與AI工程層三方面構成。由多種GPU服務器和分佈式存儲以及高性能網絡等基礎設施,構成了可靠的物理層。容器平台層的GPU容器能力,主要包含了資源管理、編排調度、GPU虛擬化與多容器網絡這四個方面。

 

其中資源管理,表現為多種架構資源池的部署與管理能力。編排調度能力,由GPU彈性伸縮、訓推潮汐部署以及多種卡調度策略組成。自研的GPU虛擬化囊括了業界主流的MIG虛擬化、內核層虛擬化以及CUDA層虛擬化三種技術。由傳統的Underlay網絡以及SRIOV的RDMA直通網絡,組成了豐富的容器網絡架構。容器平台提供了開放的API接口,為AI工程層的訓練和推理平台,提供了堅實的算力底座。通過訓練和推理平台,支撐公司內的智能計算業務。

 

二、GPU容器能力實踐

GPU容器能力實踐分為兩個模塊,首先是大規模容器集羣穩定性建設,其次是GPU容器提效降本方案。先了解下容器平台在大規模容器集羣場景,如何進行穩定性建設的。

 

2.1 大規模容器集羣穩定性

集羣穩定性是一切的基石。當集羣規模大時,任務多,調度頻繁,導致核心組件負載激增,極易發生集羣崩潰。隨着節點規模擴大,運維複雜度呈指數級增長,日常運維工作繁重,發現問題不及時。同時故障處理也面臨嚴峻挑戰,故障中涉及的複雜場景多,故障處理的難度大。穩定性建設需要解決上述問題。

 

為了解決高頻調度導致的核心組件高負載問題,我們針對Apiserver、etcd、CoreDNS,這3個核心組件進行了架構和性能優化,具體的方案如圖所示。通過這些優化手段提升了組件性能,並且降低了組件負載,有利於大規模集羣的平穩運行。

 

為了減輕集羣運維負擔,我們重點建設了自動化節點管理方案。把重複性的運維事項自動化。同時我們還完善了監控告警體系,開發了自動化巡檢功能,使運維人員能夠及時發現集羣問題,快速介入,處理潛在風險,保障集羣能夠長久穩定運行。

 

故障處理是集羣穩定的兜底措施,我們針對多個核心組件都做了,各類故障處理預案。結合可能存在的故障特點,構造故障場景,進行故障恢復演練,確保故障發生時,能夠第一時間找到合理的解決方案,準確的處理問題。

 

通過上述的措施,在集羣穩定性方面取得了不錯的效果,首先日常的集羣可用性穩定保持在99.99%水平,其次平台的年度故障覆盤數相較於上一年下降60%。核心組件方面的優化也達到了不錯效果,其中Apiserver的CPU負載下降70%,etcd提交延遲,從秒級縮短到毫秒級,CoreDNS的毛刺現象消失了,並且負載量下降了90%左右。

 

2.2 GPU容器提效降本實踐

容器平台的核心競爭力之一就是助力業務提效降本,我們從不同業務維度,對GPU容器提效降本方案進行了探索。

  • 首先在單卡維度,通過自研GPU虛擬化方案,使多個容器,互不干擾的共享一張卡資源。
  • 其次是在單服務維度,使業務能夠自動應對,負載變化的GPU彈性擴縮容方案。
  • 多服務維度,能夠讓推理服務和訓練服務,分時複用整機資源的,訓推潮汐部署方案。
  • 最後是在多機多卡的分佈式場景中,讓GPU容器搭配RDMA網絡,來解決跨節點通信的瓶頸問題。

 

2.2.1 單卡共享-GPU虛擬化

如何讓一張卡同時運行多個容器又不互相干擾,就涉及到GPU虛擬化技術。GPU虛擬化一直是AI雲原生領域的熱門話題之一,各大雲廠商都有成熟的解決方案售賣。

 

vivo容器平台的自研GPU虛擬化方案,主要為了解決業務的三大痛點,

  • 首先是部分推理業務負載偏低,無法有效用滿整卡資源,需要通過共享部署方式,減少資源總量,降低業務成本,提升利用率。
  • 其次是不同業務共享同一張卡時,對於安全性以及隔離性的要求各不相同,就需要使用不同的GPU虛擬化技術來滿足不同業務訴求。
  • 最後在Dev開發機場景,用户使用頻率偏低,需要通過顯存超售,來提升資源複用率,但顯存超售後又需要避免某個用户將顯存耗盡,導致OOM錯誤影響同卡的其他用户。

 

自研GPU虛擬化方案包含MIG虛擬化、內核層虛擬化、CUDA層虛擬化這三種技術。結合業務場景,提供了豐富的卡調度策略,例如儘量聚集的Binpack策略、儘量分散的Spread策略,每個卡只有一個實例的CardOnlyOne策略,以及自定義節點和卡分配關係的CustomTopo策略。通過自研模塊與組件,接入Kubernetes體系,對外提供統一調度能力。

 

首先,MIG虛擬化技術,是基於Nvidia硬件提供的,切塊組合能力,能夠按規則把計算單元和顯存單元進行組合,組成MIG實例掛載到容器內,提供完全獨立的運行環境。MIG方案的優點是擁有Nvidia官方支持,可以集成到自研體系中。由於是在硬件層面實現的算力和顯存限制,所以隔離性和安全性最好。缺點就是僅支持Ampere及以後架構的部分卡,而且限定了切分比例。主要應用場景是對算力隔離有強需求的線上業務。

 

內核層虛擬化技術,是通過自研內核模塊,創建虛擬字符設備替換原有的Nvidia字符設備,在內核態攔截IOCTL請求後,實現的算力和顯存限制。優點是上層應用無感。並且內核態擁有良好的安全性。缺點是當前無開源方案,開發難度大,而且算力隔離的並不充分。主要應用場景是常規線上業務。

 

CUDA層虛擬化技術的原理:使用攔截庫替換Nvidia Driver的原始庫,建立攔截庫與原始庫的,API函數映射關係,從而攔截調用函數,實現算力和顯存的限制。

 

優點是有開源方案,使用起來比較靈活。並且可以基於Nvidia提供的統一內存模型,開發顯存超售能力。能夠在顯存不足時,使用內存替代,雖然處理速度下降,但是能夠有效避免,顯存OOM導致用户程序報錯。

 

缺點是用户態導致安全性不足,並且算力隔離能力偏弱,主要應用場景是Dev開發機場景。

 

將自研的內核層虛擬化方案與業界方案,進行了自測性能對比,如圖所示,可以看到自研方案在性能上,已經達到業界先進水平。業務使用該方案,與獨佔整卡部署相比較,平均單卡虛擬化率300%左右,就是把1張物理卡當3張卡使用,同時整機GPU利用率提升了30%+,成本優化超過50%。

 

2.2.2 服務提效-GPU彈性擴縮容

在單服務維度,如何幫助業務自動管理大量的GPU容器是提效的關鍵。我們引入了GPU彈性擴縮容方案。

  • 首先彈性擴縮容能力,能夠快速響應負載變化,自動調節實例數量,減少人工干預次數,有利於業務在突發場景的平穩運行。
  • 其次是業務方在生產環境部署後,非生產環境的實例通常會閒置,這會浪費稀缺的GPU資源。
  • 最後由於Kubernetes原生,並不支持GPU維度的彈性擴縮容,需要尋找合適的方案來滿足業務訴求。

 

如圖所示,我們是基於開源的KEDA框架,自研了GPU-Scaler組件,使用Prometheus中存儲,來自DCGM-Exporter的GPU指標,匯聚為擴縮容事件,用於觸發KEDA框架,調整實例個數,以此實現了GPU彈性擴縮容能力。

 

由於KEDA框架支持將Workload實例數縮容到0,所以在非生產環境部署的GPU業務,默認開啓無負載時,自動縮容到零的功能,以此自動回收,長期閒置的GPU資源。

 

最終的使用效果,線上業務資源不足類告警,下降了80%,單業務平均減少約每週1小時的,擴縮容工作量,有效降低了GPU業務的運維成本。

 

2.2.3 多服務降本-訓推潮汐部署

在多服務維度,訓練服務的資源短缺問題,與推理服務,低峯時段資源空閒問題,相對突出。考慮讓訓練業務利用推理的空閒資源,即訓推潮汐部署方案。

 

首先推理和訓練業務都需要穩定的運行環境。而且推理業務潮汐特徵明顯,夜晚負載低,資源空閒多,導致平均利用率偏低。並且多機多卡訓練任務,需要整機資源,且資源需求日益增長,採購新設備,難且慢,導致訓練資源缺口明顯。

 

訓推潮汐部署就是整機資源分時複用的邏輯,如圖所示,推理業務在白天高負載時,穩定運行,在夜晚低峯時段,自動騰挪出空閒整機資源,借給訓練業務使用。在清晨時段,訓練業務結束,把整機資源還給推理業務,如此達到分時複用的效果。

 

如圖所示。推理業務在部署前,需要評估保底負載容量。在部署時填入維持業務穩定的最少Pod數量。基於OpenKruise組件的,WorkloadSpread功能,管理不同的Subset,分別在穩定池和潮汐池中按需部署。同時配置CronHPA,定時縮容,自動調整副本數,到穩定Pod數量,優先刪除潮汐池中的Pod。以此達到把潮汐池的節點整機騰空的效果。

 

其中我們還針對Workload的縮容優先級進行了優化。當縮容發生時,結合Pod和節點的拓撲關係,把所在節點實例數少的Pod優先縮容,達到更快的騰空效果。

 

通過上述方案,訓推潮汐部署的降本效果明顯,使推理業務,成本下降30%,同時整機GPU利用率提升20%多,有效緩解了訓練資源短缺問題。

 

2.2.4 多機多卡提效-容器RDMA高性能網絡

當前分佈式訓練和推理業務,對算力和顯存的需求巨大,單節點資源不足,需要使用多機多卡資源,那麼網絡通信容易成為性能瓶頸。RDMA技術允許GPU直接訪問支持RDMA設備中的數據,無需經過主機CPU或內存,實現跨節點的零拷貝數據傳輸,有效減少了CPU開銷和網絡延遲。所以從多機多卡維度,使用RDMA技術是網絡提效的有效措施。從容器平台角度,GPU容器更加需要結合RDMA技術,提供簡單高效的解決方案,方便業務使用。

 

如圖所示,RDMA容器有兩個網卡,一個是使用Calico-CNI插件,通過veth創建的eth0網卡,對應的是Underlay網絡。另一個是使用Sriov-CNI插件,通過VF創建的eth1網卡,對應的RoCE_v2或IB協議網絡。我們引入了Multus-CNI組件,能夠在單容器創建時,按需調用多種CNI插件。同時我們選擇使用Spiderpool組件管理IP池,以及進行IP分配和路由策略配置。

 

通過上述組件,在Kubernetes體系中實現了RDMA容器的全生命週期管理能力。基於容器RDMA能力,在大規模訓練和推理場景,業務能夠提速20%到30%之間,提升效果明顯。

 

三、AI工程訓練平台實踐

3.1 訓練平台整體架構

VTraining訓練平台是由vivo AI計算平台團隊打造的一站式大模型訓練方案,它面向算法工程師,提供模型開發、模型訓練和海量樣本存儲等能力。

 

VTraining底層是基於vivo容器平台、及高性能計算、網絡、存儲等基礎設施之上構建,通過提供模型開發、模型訓練、資產管理等能力,支撐公司的大模型訓練業務。

像vivo手機的藍心小V、相冊等核心產品的大模型訓練,都是在VTraining平台進行迭代的。

 

3.2 大規模訓練穩定性實踐

3.2.1 穩定性背景

穩定性問題是大規模訓練的痛點。任務在大規模的同步訓練過程中需要依賴計算、網絡、存儲、容器調度等複雜的基礎設施環境,任何環節出問題都會導致任務中斷,問題定位、恢復困難。

例如知名頭部公司千億參數大模型的大規模訓練任務,平均每3小時觸發一次意外中斷。

 

3.2.2 穩定性實踐-高頻故障專項治理

其中一個問題,是GPU集羣投入使用初期機器故障率會很高,訓練任務會經常被中斷。為了降低機器故障率,我們進行了高頻故障專項治理。首先對GPU集羣進行了大規模測試診斷、然後進行高頻故障統計和修復,把有問題的軟硬件進行維修、替換、升級或修復。

 

3.2.3 穩定性實踐-故障處置流程完善

另一個問題,是任務故障就是不可避免的,所以為了縮短任務中斷時間,儘快恢復任務運行,我們對故障處置流程進行了重點建設完善。

  • 訓練前,我們會針對GPU機器、網絡通信等環境進行大規模檢測,剔除異常節點、慢節點等問題節點,降低故障風險。
  • 訓練中,會開啓自動化容錯機制,以便能及時發現基礎設施或任務異常,快速進行故障定位和故障容錯,自動隔離故障、自動重啓恢復任務運行。
  • 訓練後,對新問題進行蒐集分析,完善異常特徵庫,增強問題診斷能力,以便後續遇到類似的故障可以快速容錯。

 

3.2.4 穩定性實踐-效果與總結

通過減少基礎設施高頻故障、完善任務故障處置流程兩大措施,我們取得了良好效果:機器每天故障率由原來的百分之二下降到千分之一;千卡任務有效訓練時長由原來的60%提升到99%,達到了行業一流水平。

 

同時我們也積累了相關的穩定性經驗:

  • GPU集羣由不穩定到穩定,需要一個軟硬件磨合過程。因為不同的軟硬件環境會觸發不同的穩定性問題。
  • 大規模訓練前,儘量剔除歷史故障率高的機器。我們發現穩定的機器一般會一直很穩定,而故障率高的機器即使修復後出問題的概率也比較大。
  • 提升任務有效訓練時長,需結合基礎設施、訓練框架、平台容錯機制綜合優化。例如秒級監控告警能力、checkpoint持久化策略等等都需要進行持續深入的優化。

 

3.3 GPU利用率提升實踐

3.3.1 GPU利用率提升-業務背景及問題

GPU是稀缺資源,但是差異化的業務場景下GPU難以高效利用,利用率提升困難。比如GPU場景常見業務形態:有訓練任務、推理業務、數據生產、開發調試等等類型。他們各有特點:

 

  • 訓練任務雖然GPU利用率高,但是偶爾也會出現碎片化空閒資源,比如算法同學偶爾會將任務停下來排查問題,調下參數之類的操作,任務並不是一直不間斷地在跑的。
  • 推理業務有很明顯的潮汐特性,白天流量高峯期GPU利用率高、到了夜間流量低峯期利用率會比較低。
  • 數據生產任務屬於離線任務,GPU利用率高、資源需求大、但難申請到資源;開發調試任務的話GPU利用率低並且要長期佔用資源,導致GPU利用率長期低下。

 

所以不同的業務形態有不同的利用率特點,接下來介紹下我們的GPU利用率提升措施。

 

3.3.2 利用率提升措施一:低優任務

對於訓練任務場景,偶現的碎片化空閒資源,我們 通過低優數據生產任務進行充分利用。如圖所示,我們通過低優數據生產任務調度,複用訓練場景偶現的碎片化資源,當正常任務需要資源時,可隨時搶佔低優資源,不會影響正常訓練任務的調度。

 

3.3.3 利用率提升措施二:訓推潮汐部署

對於推理業務場景,在夜間流量低峯期可以釋放大量GPU資源,我們通過訓推潮汐部署給離線業務複用。如圖所示,通過訓推潮汐部署機制,我們將夜間推理流量低峯期縮容的機器騰挪到了離線GPU資源池,給離線業務使用,白天再騰挪回在線GPU資源池進行擴容,達到潮汐複用的目的。

 

3.3.4 利用率提升措施三:GPU虛擬化

對於開發任務場景,長期獨佔GPU資源且利用率低,我們通過vivo自研VGPU虛擬化技術,減少開發任務佔用的物理GPU卡數,釋放冗餘算力。如圖所示,我們可以將單機4卡GPU機器,通過開啓VGPU虛擬出16卡VGPU,相當於一卡頂四卡。

 

VGPU的優點是:可支持1:2、1:4超賣、還可以用內存補充顯存不足,所以對用户是無感知使用的,很適用於開發任務這種對性能要求低的場景。

 

3.3.5 利用率提升總結與規劃

總之,訓練平台通過低優任務、訓推潮汐部署、GPU虛擬化等策略,深度適配差異化業務場景特性,實現了資源高效複用。AI整體GPU利用率均值絕對值提升了5個百分點,接近行業一流水平。

 

未來訓練平台也會持續對GPU利用率進行綜合治理。例如進行低效任務治理、低效資源盤活、成本賬單統計、獎勵與懲罰措施的實施等等,讓稀缺的GPU資源發揮更大價值!

 

四、GPU平台未來展望

在容器平台層面,我們會從多集羣聯邦調度、在離線GPU混部、國產異構計算芯片支持、GPU資源池化等方面能力進行綜合建設,支撐上層平台業務對GPU資源的高效利用。

訓練平台層面,我們會增強故障預警、任務動態容錯等能力,增強業務穩定性;同時完善對大模型訓練全流程能力的支撐,以及對GPU資源進行更精細化的運營,從而讓GPU業務更加穩定、資源利用更加高效!

 

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.