快手聯(lián)手英偉達(dá)部署業(yè)界最先進(jìn)GPU計(jì)算基礎(chǔ)架構(gòu)
日活超過2億的快手,庫存短視頻超過130億條,仍以每日超過1500萬條短視頻上傳的速度新增,擁有海量超大數(shù)據(jù)應(yīng)用場景??焓只A(chǔ)設(shè)施的規(guī)模已經(jīng)處于國內(nèi)互聯(lián)網(wǎng)公司頭部行列。目前快手服務(wù)器規(guī)模已經(jīng)超過十萬臺(tái),數(shù)據(jù)總量達(dá)到EB級(jí)別,每天新增數(shù)據(jù)超過5PB。
為保障千億級(jí)別數(shù)據(jù)量的處理和基礎(chǔ)設(shè)施穩(wěn)定、高效運(yùn)行,快手服務(wù)器選型和業(yè)務(wù)優(yōu)化團(tuán)隊(duì)(以下簡稱“快手SAT團(tuán)隊(duì)”)選用合作伙伴英偉達(dá)新一代圖靈架構(gòu)的TESLA T4/V100,在業(yè)內(nèi)率先完成計(jì)算架構(gòu)的全新升級(jí)。
據(jù)了解,快手SAT團(tuán)隊(duì)的成員經(jīng)驗(yàn)豐富,人均工作經(jīng)驗(yàn)在10年左右,專注于硬件方面的成員大多來自于海內(nèi)外大型服務(wù)器或者硬件廠商,專注于軟件方面的成員大多數(shù)來自國內(nèi)頭部互聯(lián)網(wǎng)企業(yè)。正是這樣的一個(gè)軟硬結(jié)合的團(tuán)隊(duì),給快手超過2億 的日活量級(jí)提供了堅(jiān)實(shí)的保障。
據(jù)快手SAT團(tuán)隊(duì)研發(fā)人員介紹,快手大數(shù)據(jù)應(yīng)用場景如視頻推薦平臺(tái)、音視頻理解、風(fēng)控、商業(yè)化廣告、強(qiáng)化學(xué)習(xí)等都是公司的核心業(yè)務(wù),多個(gè)業(yè)務(wù)場景數(shù)據(jù)處理需求量大,英偉達(dá)推出新的特斯拉架構(gòu)產(chǎn)品之后,SAT團(tuán)隊(duì)將TESLA T4/V100 GPU的引入列為首要任務(wù),使用新一代的GPU,搭配現(xiàn)有的計(jì)算平臺(tái)(CPU、FPGA等),將TESLA T4引入到新的套餐上,同時(shí)以最快速度適配給公司內(nèi)的核心業(yè)務(wù),保障硬件基礎(chǔ)架構(gòu)走在業(yè)界前列。
GPU架構(gòu)優(yōu)化性能提升2倍成本節(jié)省30%
針對(duì)快手快速增長的業(yè)務(wù)需求,既需要盡可能的滿足業(yè)務(wù)靈活多變的需求,又不能使得套餐數(shù)量過于發(fā)散,同時(shí)要兼顧成本優(yōu)化目標(biāo),所面臨的問題十分復(fù)雜。為平衡需求和復(fù)雜性,快手SAT團(tuán)隊(duì)最終決定引入了2個(gè)GPU套餐,搭配虛擬化容器,滿足不同業(yè)務(wù)場景下的不同需求。
GPU服務(wù)器特別是多卡GPU服務(wù)器在實(shí)際計(jì)算中,普遍會(huì)面臨CPU性能成為瓶頸的問題。為了解決CPU性能瓶頸、GPU利用率不高的問題,快手SAT團(tuán)隊(duì)聯(lián)合算法團(tuán)隊(duì),通過在Resnet50/SSD上將Resize、Augment等從CPU端遷移至GPU端的方法,將CPU的loading逐步遷移到GPU上,進(jìn)一步利用了GPU強(qiáng)大的計(jì)算能力,解放了CPU,達(dá)到了CPU和GPU之間的均衡計(jì)算效果。
GPU之間的性能均衡是另一個(gè)問題。部分業(yè)務(wù)場景的模型體積非常巨大,單GPU顯存往往沒有辦法存下整個(gè)模型,這時(shí)候通常會(huì)將模型存在內(nèi)存中,由CPU來進(jìn)行相對(duì)應(yīng)的運(yùn)算操作,快手SAT團(tuán)隊(duì)通過優(yōu)化CPU親和性,避免了負(fù)載不均和查找路徑較遠(yuǎn)的問題。
快手的訓(xùn)練模型要求精度較高,之前普遍使用FP32,模型較大,目前正在慢慢使用混合精度來替代原來方案,性能得到明顯提升。 在實(shí)際使用中,快手SAT團(tuán)隊(duì)也發(fā)現(xiàn)AMP(自動(dòng)混合精度)雖然使用起來簡單,但并不能適配所有業(yè)務(wù)。所以需要快手SAT團(tuán)隊(duì)和業(yè)務(wù)團(tuán)隊(duì)一起嘗試不同方法,結(jié)合FP32、AMP以及手動(dòng)混合精度等手段為業(yè)務(wù)方的訓(xùn)練提供計(jì)算性能。
推理模型相對(duì)于訓(xùn)練模型,普遍存在batchsize較小的問題,需要對(duì)內(nèi)存進(jìn)行頻繁的讀寫訪問,同時(shí)推理相較于訓(xùn)練,要求的精度沒有那么高。為解決這些問題,同時(shí)為更好的利用新架構(gòu)中的Tensor Core的性能,快手SAT團(tuán)隊(duì)引入了TensorRT,幫助業(yè)務(wù)快速使用在GPU上,使得運(yùn)行速度大大提升,編譯后的代碼所占內(nèi)存的大小大大縮減。
解碼H264:T4 / P4 = 2.6 倍左右; 解碼Hevc:T4/P4 = 4倍左右。在Hevc下的高性能,得益于T4的2個(gè)nvdec引擎,解碼Hevc時(shí)比H264投入的計(jì)算單元更多
T4的Fast Preset 與 P4的Slow preset在質(zhì)量和并發(fā)數(shù)量上大致相當(dāng)
使用TensorRT-Inference-Server,對(duì)比text-classification,性能提升2倍左右
從以上對(duì)比圖中可以看出,通過現(xiàn)階段GPU計(jì)算架構(gòu)的優(yōu)化,業(yè)務(wù)的性能平均增長了2倍,成本較之前節(jié)省了30%以上。
軟硬結(jié)合,優(yōu)化落地
為了讓新產(chǎn)品的特性更好的助力快手的業(yè)務(wù),快手SAT團(tuán)隊(duì)提供了一整套的流程方案。了解業(yè)務(wù)使用需求后,通過分析目前的瓶頸點(diǎn)和高頻使用資源,合理選擇硬件產(chǎn)品,將這些產(chǎn)品快速集成在套餐之中。新硬件往往伴隨著一些新的框架和指令集的支持,例如TESLA T4對(duì)于FP16的支持,使得T4的性能大幅提升。參考這些新特性,業(yè)務(wù)部門將代碼優(yōu)化后部署上線。通過Vtune/Nsight等工具對(duì)代碼進(jìn)行分析,優(yōu)化低效的部分,最終呈現(xiàn)效果后上線灰度,追求高效迅捷,使得快手一直走在技術(shù)的前沿。
(圖示:快手選型上線流程)
(圖示:快手新硬件/新技術(shù)引入平臺(tái)模塊)
自定義監(jiān)控,防范故障于未然
如果說使用是第一步的話,那么運(yùn)維就是第二步??焓諷AT團(tuán)隊(duì)針對(duì)GPU的監(jiān)控,一共做了三件事,一是自主開發(fā)的GPU使用率監(jiān)控,二是自定義的GPU故障監(jiān)控,三是GPU的故障預(yù)判。
監(jiān)控GPU的使用率,可以使得業(yè)務(wù)更加了解自己的負(fù)載情況,也可以驗(yàn)證前面選型配置的合理性。通常來說業(yè)內(nèi)大多使用smi中的GPU-Util參數(shù)來判斷GPU的使用情況,但快手在實(shí)際使用中發(fā)現(xiàn),判斷GPU的使用率是一個(gè)較為復(fù)雜的問題,GPU-Util反應(yīng)的只是單位時(shí)間內(nèi)GPU的整體使用情況,并不能清晰地反應(yīng)GPU的負(fù)載情況。針對(duì)這種情況,快手SAT團(tuán)隊(duì)手動(dòng)開發(fā)了一套使用率監(jiān)控腳本,從SM單元、編解碼單元采樣值、帶寬負(fù)載、讀寫時(shí)間比等多個(gè)維度進(jìn)行分析,最終得出GPU的綜合使用率。
故障的監(jiān)控,是一個(gè)比較老生常談的問題,在任何硬件產(chǎn)品上都會(huì)遇到,GPU因?yàn)槠漭^高的功耗和溫度,以及業(yè)務(wù)對(duì)其的強(qiáng)依賴性,最初快手SAT團(tuán)隊(duì)設(shè)置了非常多的監(jiān)控指標(biāo),這些監(jiān)控指標(biāo)都是通過GPU設(shè)備的API提煉抽取出來的,但是隨著監(jiān)控實(shí)例的增加,告警的數(shù)量也隨之大幅提高。這些告警里包括持續(xù)告警、波動(dòng)告警、關(guān)聯(lián)告警,當(dāng)然這些告警的出現(xiàn),使得快手發(fā)現(xiàn)了問題,但是也給快手的運(yùn)維人員造成了極大的困擾。為了解決告警泛濫的問題,快手SAT團(tuán)隊(duì)對(duì)監(jiān)控參數(shù)進(jìn)行分析整合,針對(duì)不同業(yè)務(wù)使用GPU時(shí)的不同需求,制定業(yè)務(wù)生死標(biāo)準(zhǔn):影響業(yè)務(wù)生存的標(biāo)準(zhǔn)優(yōu)先報(bào),在單位時(shí)間內(nèi)發(fā)生的告警只報(bào)一個(gè)。
故障的預(yù)判,是為了避免有可能發(fā)生的故障對(duì)業(yè)務(wù)帶來損失,這個(gè)預(yù)判的準(zhǔn)確性是關(guān)鍵。故障的預(yù)判在很多情況下都是一個(gè)導(dǎo)火索,是一個(gè)隨著時(shí)間的推移慢慢變成現(xiàn)象級(jí)的過程。快手SAT團(tuán)隊(duì)在故障的預(yù)判方面針對(duì)GPU設(shè)定了十余個(gè)監(jiān)控參數(shù),通過對(duì)這些積累下來的數(shù)據(jù)進(jìn)行訓(xùn)練,得到一個(gè)閾值,再使用這個(gè)閾值進(jìn)行故障預(yù)判。通過這個(gè)訓(xùn)練預(yù)測(cè)不斷循環(huán)的過程,使得故障的預(yù)判越來越精準(zhǔn)。
后續(xù)規(guī)劃
隨著快手日活量不斷增加,用戶數(shù)據(jù)不斷豐富,模型的數(shù)量越來越多,越來越復(fù)雜,在空間的占用上呈幾何級(jí)數(shù)增長。目前快手SAT團(tuán)隊(duì)正在做幾件事:引入大容量低成本NVM與GPU組成異構(gòu)計(jì)算+異構(gòu)存儲(chǔ)服務(wù)器;搭配100G/200G/400G RDMA,做CPU offload的架構(gòu),提高分布式計(jì)算的效率;將存儲(chǔ)資源和計(jì)算資源解耦分離。
快手選型上線流程和英偉達(dá)企業(yè)級(jí)技術(shù)支持團(tuán)隊(duì)已經(jīng)有了一年多的合作經(jīng)驗(yàn),以TESLA GPU引入為契機(jī),快手SAT團(tuán)隊(duì)整理規(guī)范了GPU服務(wù)器引入和應(yīng)用優(yōu)化一整套的科學(xué)體系,并在實(shí)踐中獲得了較好的業(yè)務(wù)收益,為公司節(jié)省了大量的時(shí)間成本,同時(shí)計(jì)算力更加出色的GPU計(jì)算架構(gòu)也為未來快手關(guān)鍵業(yè)務(wù)線上線更加復(fù)雜的模型打下了堅(jiān)實(shí)的基礎(chǔ)??焓窒到y(tǒng)運(yùn)營部硬件研發(fā)團(tuán)隊(duì)誠聘新技術(shù)硬件研發(fā)工程師,歡迎每一個(gè)對(duì)技術(shù)有追求的技術(shù)人。