通过浪潮AIStation实现细粒度高性能的GPU资源共享
作者 | 張榮國
供稿 | 浪潮
GPU(Graphics Processing Unit),即圖形處理器,是一種由大量核心組成的大規模并行計算架構,專為同時處理多重任務而設計。GPU在大規模并行運算上具有巨大優勢,為大數據、人工智能訓練和推理任務以及圖像渲染等場景提供了顯著的計算性能加速支持,但在實際使用中會產生資源管理困難、利用率低等問題。AIStation是浪潮推出的一款人工智能開發平臺,可實現GPU資源的精細化調度。本文將重點介紹浪潮AIStation推理平臺的GPU共享技術能力和應用場景。
GPU計算資源的運維痛點
對于人工智能開發人員、AI系統研究機構或進行數字化轉型的新型/傳統企業來說,在使用GPU計算資源時通常會面臨如下幾個問題:
為了徹底解決上述問題,工業界已經提出了多種GPU共享方案。并且在云原生趨勢下,利用云原生技術和標準Docker進行容器化部署,已經成為業內云服務對異構計算資源的通用方法。
表1 業界現有的GPU共享方案
| 方案 | 方案代表 | 優勢 | 劣勢 |
| CUDA劫持 | rCUDA、VCUDA等 | Nvidia開源CUDA API,可以進行定制化開發; | |
| CUDA聚合 | Nvidia MPS | | |
| 內核劫持 | cGPU等 | | |
| Mdev框架 | Nvidia vGPU | Nvidia官方組件,可靠性高,安全性高; | |
| Nvidia MIG | Nvidia MIG | 顯存、緩存和計算核心完全隔離; | |
如何將多個任務同時運行在同一張GPU卡上,同時對共享資源進行嚴格的隔離,是業界的一個重要研究方向。此外,業內需求還包括如何在生產環境中對細粒度GPU資源(小于整卡的顯存、計算核心)進行擴縮容(即多個任務運行在一張GPU中,此GPU中的任務同樣需要在負載增加時,能夠運行在不同的GPU卡上),以及適配多版本官方組件。上述需求不但要考慮技術方面的實現,還要根據實際生產過程中的不同類型指標進行資源的自動伸縮。針對以上亟待解決的問題,AIStation推理平臺提供了穩定GPU細粒度資源的分配、調度和管理能力,為企業用戶帶來了高效利用GPU資源的最佳解決方案。
AIStation推理平臺GPU共享功能簡介
AIStation推理平臺基于Kubernetes容器編排與計算資源發現、調度能力進行構建,支持容器化應用的生命周期管理和微服務架構,提供多種推理服務的發布方式和持續交付能力,簡化推理服務上線流程,為用戶提供穩定、快捷靈活的生產環境服務部署平臺。
GPU共享系統為AIStation推理平臺自研技術,針對使用GPU作為計算資源的應用提供多容器(或服務)共享同一塊GPU加速卡的能力。用戶可對多種架構的GPU加速卡進行細粒度的資源分配、調度,并通過計算請求量(QPS)、CPU使用率、內存使用率等指標自動進行擴縮容操作,能夠保證推理服務快速響應在線請求、提升GPU資源的復用率,同時對底層第三方組件不具有任何侵入性,可將其輕松移植到不同的應用場景下。
AIStation提供以下GPU共享技術能力:
GPU顯存的細粒度分配與調度能力。用戶可以將多個不同類型的服務部署在同一張GPU卡上,當多個服務的所需GPU顯存能夠“恰好”滿足單張GPU的實際顯存數量,此時GPU資源的使用率可以達到100%。如圖1中的Case1所示,Container1和Container3、 Container2和Container4的組合分別可以完全滿足現有GPU資源的顯存額度。更多的情況為,用戶可以通過配置文件設定“服務所需GPU顯存資源申請額度”,AIStation將組合后能夠達到最大GPU利用率的服務調度到同一張GPU卡,進而提升GPU資源的使用率。
?圖1 不同場景下AIStation對顯存的細粒度分配與調度
AIStation能夠保證各服務之間的顯存隔離。如圖1中的Case2所示,AIStation通過后臺算法計算出最優的調度策略,為預部署服務提供最小剩余資源與服務安全保障方案,在合理調度服務到不同GPU卡后,可以為其他服務提供空閑的GPU資源;對于跨節點的GPU資源,AIStation同樣能提供細粒度分配與調度能力。
提供GPU計算核心的細粒度分配與調度能力。GPU計算資源包括顯存(Memory)與計算核心(Kernel),當所部署的服務對計算核心使用率不高,或無需使用整卡的計算核心即能滿足現有延遲要求時,AIStation可在單張GPU內對計算核心進行細粒度的劃分并且兼顧GPU顯存劃分。如果同時設置GPU計算核心和顯存的細粒度劃分,以計算核心分配為主,單張卡的計算核心分配≤100%。
圖2 AIStation對計算核心的細粒度分配與調度
提供基于HPA的細粒度GPU資源擴縮容能力。AIStation支持原生Kubernetes的水平自動擴縮容(Horizontal Pod Autoscaler),可基于CPU利用率、平均內存利用率等指標自動擴縮服務的副本數量。
圖3 AIStation平臺GPU共享系統的HPA
提供基于QPS的細粒度GPU資源擴縮容能力。AIStation支持實時服務請求流量的水平自動擴縮(Traffic Pod Autoscaler),可根據在線服務訪問流量(QPS)指標自動增加或減少服務副本數量,用戶可以配置上線服務的預設QPS,當服務請求大于(或小于)預設值時,后臺程序會自動判斷并執行擴縮容操作,在滿足實例副本的資源申請配額條件下,按照細粒度的資源調度方式申請最佳的GPU資源。
圖4 AIStation平臺GPU共享系統的TPA
極低的計算性能損耗。AIStation平臺GPU共享系統的性能損耗很小,不會對用戶應用的性能產生影響。其劫持調度器采用C++編寫,并且采用了Pod代理來接收用戶應用的GPU內存申請和GPU時間片申請請求,Pod代理可以處理絕大多數的來自用戶應用的請求,只有在用戶應用需要重新申請GPU時間片時,Pod代理才需要將用戶應用請求轉發到劫持調度器。這樣的架構設計能夠避免劫持調度器過于繁忙而造成系統性能下降的問題。我們進行了如下的性能損耗測試,加速卡型號:NVIDIA GPU Tesla T4,軟件:TensorFlow Benchmark,深度學習模型:ResNet50,精度:FP32, BatchSize=1、4、16,性能數據如圖5所示。
圖5 GPU共享與GPU直通的性能對比
GPU共享與GPU直通(應用的容器直接運行在GPU上)在不同BatchSize的情況下,性能對比如下:(1)BatchSize=1時,性能損耗約為 1.3%;(2)BatchSize=4時,性能損耗約為 0.37%;(3)BatchSize=1時,性能損耗約為 0.7%,從測試數據中,可以看出GPU共享與GPU直通的性能非常接近,幾乎不受影響。
AIStation基于業務場景設計
無侵入式架構設計。AIStation具備無侵入特性。業界的一些GPU共享產品要求對用戶應用、CUDA Runtime、CUDA Driver、或者NVIDIA Driver做出一定的修改,這會給很多用戶帶來困擾,同時會帶來一些業務不穩定的問題。而AIStation不需要做上述修改,可以輕松移植到其它平臺中,并且只需要YAML和Docker Images即可部署,支持開箱即用。
高可用(HA)設計。AIStation平臺GPU共享系統的每個控制組件都采用高可用設計,每個主節點上面都會有一個GPU共享系統Controller模塊和一個GPU共享系統Scheduler模塊。在同一時間,每個模塊的多個實例中只有一個是Leader,這個Leader負責本模塊的業務處理,如果一些硬件問題或者網絡問題導致此Leader掛掉了,那么Leader選舉機制會立刻選舉出新的Leader,實現了控制組件的高可用機制。
精細化監控設計。AIStation可對每個用戶應用Pod的GPU利用率進行實時監控。它計算每個應用Pod的GPU利用率,然后借助TSDB(時序數據庫)存儲這些數據,從而實現了精細化的GPU利用率實時監控。
典型案例
某金融行業客戶案例
在某金融行業客戶的保險業務中,用戶生產環境目前包括圖像識別服務、OCR識別服務及語音識別服務,用于支撐企業內部運營管理及線上業務辦理,用戶希望構建統一的算法應用平臺,集中管理不同ISV算法應用,提高資源利用率。
生產環境的廠商應用按裸機方式或者docker方式進行煙囪式部署管理,資源利用率較低,并且大量OCR服務在服務請求波谷時,對GPU資源依然采用整卡占用的形式,嚴重影響GPU資源的復用效率,導致其他服務存在大量推理計算時,需要進行人為干預,如果調峰不及時還會出現請求響應不及時、計算延遲較高、計算中斷等一系列問題。
?
圖6 煙囪式部署與GPU共享部署對比
客戶啟用AIStation推理平臺后,上述問題得到了根本性解決,大規模推理業務場景下的資源管理能力顯著提升。其中,GPU資源的復用率提升了300%,有效緩解了“任務多、加速卡少”、“負載計算少、資源占用多”等問題,使客戶能夠靈活應對各種不同類型的線上推理服務,極大提升了業務系統的穩定性。
某能源行業客戶案例
某能源客戶場景有2臺8卡V100(32GB顯存)GPU服務器,28人開發團隊,客戶希望能夠合理分配這16張GPU卡給開發者做推理測試。因為人均不到一張GPU卡,如何合理高效的分配使用GPU資源,是用戶急需解決的問題。
?
圖7 GPU卡較少,而用戶較多
用戶在使用浪潮AIStation以后,通過設置GPU共享策略,將每個GPU切分為8個實例,每個實例可以使用4GB的顯存,原來的16塊GPU卡相當于變為了16*8=128個實例供開發用戶使用,每個用戶可以分到4~5個實例。每張GPU卡的利用率提升為原來的8倍。
圖8 AIStation將每張GPU卡劃分為8個實例
總結
以上是生活随笔為你收集整理的通过浪潮AIStation实现细粒度高性能的GPU资源共享的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: FBEC2021暨第六届金陀螺奖颁奖典礼
- 下一篇: Alluxio:2022年大数据五大趋势