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