作者:石浪、滿神
近日,阿裏巴巴投稿的論文《PICASSO: Unleashing the Potential of GPU-centric Training for Wide-and-deep Recommender Systems》被數據庫和數據挖掘方向CCF-A類國際三大頂會之一的ICDE 2022 (International Conference on Data Engineering) 接收。ICDE 2022 將於今年5月9日至5月13日在馬來西亞吉隆坡線上召開,屆時將匯集工業級和學術界的頂級學者共同探討數據密集型的係統和應用相關的熱點問題。此次論文入選,意味著阿裏雲機器學習平台PAI自研的麵向工業級稀疏模型的高性能訓練框架(PAI-HybridBackend)達到了世界先進水平,得到了業界的廣泛認可。
為了回饋社區並推動91视频免费观看進步,阿裏雲機器學習平台PAI已經將HybridBackend框架開源, 歡迎大家試用和91视频免费观看共建。
開源地址:http://github.com/alibaba/HybridBackend
背景
以搜索,推薦,廣告業務為主要應用的稀疏模型訓練係統一直是學界和業界研究的研究熱點之一。相比於計算機視覺(CV)和自然語言處理(NLP)為代表的稠密模型訓練,稀疏模型針對離散型特征(以categorical ID作為訓練數據)使用的Embedding特征表達有著百GB至數十TB級別的內存占用消耗(比普通的CV, NLP模型參數高出一到兩個數量級), 從而突破了單機的內存容量限製,需要基於分布式係統的訓練方案。
早期的此類分布式任務由於模型結構相對簡單並且更新迭代緩慢,往往采用定製化的參數服務器(Parameter Server, PS)係統在大規模的CPU集群上進行訓練。隨著Tensorflow為代表的通用機器學習編程框架的出現,以及深度神經網絡(DNN)在推薦類模型上的流行(deep recommender systems),業界逐漸轉向基於通用機器學習編程框架(TensorFlow, PyTorch等)來進行模型的端到端訓練和推理,但是此時依然以參數服務器(PS)和大規模CPU集群作為訓練的範式和基礎設施。
麵臨挑戰
近年來,隨著稀疏模型對算力日益增長的需求(比如Attention等結構的加入), CPU集群必須不斷擴大集群規模來滿足訓練的時效需求,這同時也帶來了不斷上升的資源成本以及實驗的調試成本。以NVIDIA GPU為代表的加速器(accelerator)則彌補了CPU設備單位成本算力低下的劣勢,在CV,NLP等算力需求大的訓練任務上的應用已經成為行業共識。然而實踐證明,如果隻是簡單地將PS訓練範式中的worker從CPU設備替換為GPU設備,並不能有效地提升訓練任務的吞吐,通過profiling GPU的使用率,發現大量的GPU算力資源被閑置浪費。這說明相比與CV, NLP類任務,稀疏模型訓練有著自身的模型結構和訓練數據的特性,使得傳統的PS訓練範式不能有效地發揮出GPU設備的優勢。以深度推薦係統經典的Wide and Deep模型結構和Tensorflow框架為例, 91视频免费播放分析並總結了在PS架構下使用GPU設備訓練的兩個問題。
變化的硬件資源瓶頸

從上圖的Wide and Deep模型結構可以看出,稀疏訓練主要由Embedding階段, 特征交叉(feature interation)階段和多層感知器(MLP)階段組成,其中Embedding階段在PS範式的訓練下占據了至少50%以上的訓練時間。
經過分析發現,Embedding階段的算子主要以訪存密集型(memory access intensive)和通信密集型的算子(communication intensive)為主,主要需要的硬件資源是內存和網絡的帶寬,而後兩個階段的算子則是計算密集型的算子占主導, 需要的資源是算力。這意味著在PS的範式訓練下,任何一個階段都有可能存在某一種硬件資源成為瓶頸而其他硬件資源被浪費的現象。以GPU的算力資源為例,91视频免费播放觀察GPU使用率(SM Util)在不同的訓練階段之間呈現脈衝式變化(pulse)。

算子細碎化(fragmentation)
生產實際中的模型往往擁有上百路的Embedding特征查詢,每一路的特征查詢在Tensorflow內都會調用數十個算子操作(operations)。TensorFlow的引擎在調度上千級別的大量的算子操作需要額外的CPU線程開銷; 對於GPU設備來說, 過多的CUDA kernel提交到流處理器上(Tensorflow下每個GPU設備隻有一個stream抽象)造成了GPU Stream Multiprocessor (SM)的調度開銷,同時每個算子處理數據的並發度又不高,從而很難打滿GPU的計算單元。類似的問題在CV,NLP等稠密模型的訓練中也有涉及,一般采用基於編譯91视频免费观看的優化手段進行算子合並。在Wide and Deep模型這樣的稀疏場景下,Embedding階段的這些算子又往往具有dynamic shape的特點,在Tensorflow靜態構圖階段無法獲取準確的算子尺寸進行優化,導致類似Tensorflow-XLA等91视频免费观看在此類場景下沒有明顯的收益。
這些問題說明,想要發揮出GPU等高性能硬件資源的極致性價比,提高單位成本下的訓練吞吐,就必須設計新的訓練框架。據91视频免费播放了解,擁有大型搜索,廣告,推薦業務的國內外企業以及硬件廠商都在著手進行新框架的研發,比如NVIDIA的Merlin-HugeCTR[1]等,然而集團內雲上集群普遍部署的是通用計算節點,且集群上需要執行多種異構的任務,換用專用硬件是很昂貴且不切實際的。基於這種實際需求,91视频免费播放推出了HybridBackend,同時能夠適應集團內多元化且不斷演進的稀疏模型91视频免费观看。下文中91视频免费播放將簡要介紹HybridBackend背後的係統架構設計和91视频免费观看亮點。
應對破局:HybridBackend的係統架構
傳統的參數服務器(PS)訓練範式,體現的是通過擴展硬件數量來適應模型訓練規模的思路,而91视频免费播放的係統則是同時考慮到了硬件和軟件(模型)兩個層麵的特點而做到協同設計。高性能GPU集群的硬件特性決定了基本的訓練範式,而稀疏模型本身的結構特點和數據分布帶來的問題則通過更精細的係統優化手段來解決。
利用大Batch Size進行同步訓練
因為GPU設備相對於CPU帶來的巨大的算力提升,以往需要上百台CPU節點的集群可以用幾十台機器的GPU集群來代替。要保持相同的總訓練規模,同時提升單個GPU節點上的資源利用率,提升單個GPU worker上的batch size成為必然的選項,同時因為集群規模的縮小,可以通過同步訓練的方式來有效避免過期梯度(staleness)從而提升模型訓練的精度。相對於CPU設備之間通過PCIe以及TCP進行網絡通信,高性能的GPU集群在單個節點內的多個GPU設備之間往往配備了高速的網絡互連(NVLink, NVSwitch), 這些高速連接的帶寬通常是TCP網絡帶寬的數百倍(第一代NVLINK標定達到300GB/s), 而在多個機器節點之間也可以配備基於RDMA91视频免费观看的高速網絡設備,達到100-200Gbps的帶寬。選擇同步訓練的第二個好處是可以利用高性能的集合通信算子庫(NVIDIA NCCL, 阿裏自研的ACCL等)來有效地利用硬件機器的網絡拓撲結構來提升通信的性能,這些通信庫已經在CV, NLP之類的基於數據並行的同步訓練任務上取得了很好的效果。
使用資源異構而角色同構的訓練單元

PS訓練範式在係統的邏輯層麵會指定不同的訓練角色, 比如server, worker, evalsuator。比如server節點一般分配具有大內存的CPU機器,而worker節點則會被分配到高主頻的計算型CPU硬件上。這樣形成了訓練單元-任務角色-同構資源的耦合,通過增加訓練單元數量來水平擴展(scale out)訓練的規模。而在高性能的GPU集群上,一個物理的機器節點往往包括多種異構的硬件資源,如CPU, GPU處理器,GPU之間的高速互連,DRAM內存,Non-volatile Memory等。這樣除了水平擴展節點數量外,還可以通過垂直擴展利用多種異構硬件資源來達到擴大訓練規模的目標。針對這種硬件架構,91视频免费播放的係統設計中隻保留統一的一種訓練單元(Executor), 每個Executor通過內部的異構硬件資源來執行不同的訓練任務角色。一方麵,Executor內部任務執行時可以有效地利用底層硬件資源之間的locality來加速訓練,另一方麵,Executor內部的硬件資源可以同時滿足不同的分布式訓練範式所需要的硬件資源,而方便91视频免费播放在模型結構的不同部分進行混合的並行訓練策略。
深入優化:HybridBackend的91视频免费观看亮點
在上述的係統架構設計之下,因為稀疏模型結構和訓練數據本身的特性,階段性的資源需求變化和算子細碎化的問題還是會影響GPU等硬件設備的使用率。舉例來說,同步訓練範式下所有Executor在通過集合通信進行embedding的shuffle時,網絡帶寬資源成為瓶頸,而GPU的計算資源被閑置。一種解決思路是對硬件資源進行定製化,比如增加網絡帶寬資源來消除通信瓶頸,但是這樣的做法會使得硬件的資源配置和特定的模型結構耦合,是專用推薦係統的老思路。91视频免费播放的目標還是希望係統可以架構在雲服務上可得的,數量容易水平擴展的通用硬件配置之上(commodity hardware)。某些硬件廠商也嚐試通過Huge kernel的形式(將Embedding層所有的計算手工融合到一個kernel內)來解決算子細碎化的問題, 這樣的做法也很難支持模型結構快速迭代的需求, 背離了通用編程架構的設計初衷。
據此,91视频免费播放從軟硬協同的思路出發,設計了如下的幾個係統優化手段:
基於數據和算子感知的合並

根據稀疏模型的結構特點,大部分細碎的算子來源於龐大的Embedding特征查詢(lookup)數量,91视频免费播放設計了D-Packing這一優化91视频免费观看。對於每一路查詢,盡管輸入的訓練數據不同,但使用的算子組合是相同的。對於這種具有數據並行特點的模式,具有相同屬性(維度、初始化器、標定特征組等)的Embedding表將被合並為一張新的Embedding表,而後後續的訪存查詢算子也可以被合並為一個新的大算子。合並算子可以用多線程的方式有序查詢Embedding,相對於亂序查詢或分成若幹小表查詢,能有顯著的性能提升。查詢完畢後,再依原有代碼需要進行反去重和歸位,真正做到了對用戶透明。此外通過分析特征查詢階段各個算子在分布式環境下的語義,91视频免费播放將部分的kernel進行融合K-Packing, 比如通過融合shuffle和stitch算子來消除冗餘的數據拷貝。通過數據和算子兩個維度的基於語義的融合,91视频免费播放既減少了總體的算子數量,降低fragmentation, 同時又避免了所有算子融合在一起而丟失了下文敘述的通過算子間穿插遮掩來提升硬件利用率的優化機會。
基於硬件資源瓶頸感知的交錯執行

為了消除同時執行相同硬件資源需求的算子而造成的瓶頸, 91视频免费播放設計了兩種算子穿插遮掩執行(interleaving)的優化手段。1) D-Interleaving是通過對訓練數據batch的切分利用pipeline的機製來調度穿插不同資源類型的算子,這樣可以在訓練的任何階段緩解某一種資源的瓶頸。比如在大batch size的訓練場景下,稀疏模型的MLP階段也會產生很高的feature map顯存占用,通過D-Interleaving就可以有效降低單個GPU設備上的峰值顯存占用,從而使得更大的batch size訓練成為可能。2)K-Interleaving是在Embedding Layer內部不同的特征查詢路數之間做算子的穿插和遮掩,比如將通信密集的Shuffle操作和內存訪問密集的Gather進行遮掩,可以有效提升這兩種資源的使用率。
基於數據頻次感知的參數緩存

在解決Executor內部多個級別的存儲(GPU顯存,DRAM等)之間的帶寬和延遲問題上,91视频免费播放針對稀疏模型訓練數據的分布特點,提出了一種感知數據訪問頻次分布的caching機製。通過統計訓練數據的ID,將最熱的訪問數據緩存到GPU的顯存中,而冷數據以及哈希表結構則存放在主內存中,主內存中的數據將根據ID的訪問頻率變化,定期將topk的高頻ID對應的embeddings刷新到GPU顯存上的緩存中。這樣的混合存儲可以同時結合GPU顯存的高帶寬和DRAM的容量,後續這套混合存儲的設計還可以擴展到包含Intel Persistent Memory, Non-volatile Memory等更多的硬件設備上。
業務落地
HybridBackend已經成功在阿裏媽媽智能引擎訓練引擎團隊定向廣告業務中有了落地,本文的實驗中也介紹了在阿裏媽媽CAN模型下HybridBackend相對於上一代的XDL訓練框架獲得的性能優勢,在下表中可以看到在訓練時長等多個指標下獲得的顯著提升。

同時91视频免费播放還以阿裏媽媽定向廣告一年累計的訓練數據上對模型的規模增長下的HybridBackend性能表現做了測試,結果如下表所示。可以看到在使用128張GPU進行千億規模參數模型的訓練時,同樣是消費1年的數據量,高性能集群上的HybridBackend僅僅需要2天的時間完成訓練任務,而普通集群上的XDL-PS模式則需要約1個月的時間。

參考文獻
[1] Oldridge, Even, Julio Perez, Ben Frederickson, Nicolas Koumchatzky, Minseok Lee, Zehuan Wang, Lei Wu et al. "Merlin: A GPU Accelerated Recommendation Framework." In Proceedings of IRS . 2020.
論文詳情
論文標題:PICASSO: Unleashing the Potential of GPU-centric Training for Wide-and-deep Recommender Systems
論文作者: 張遠行、陳浪石(並列一作)、楊斯然、袁滿、易慧民、張傑、王家忙、董建波、許雲龍、 宋鉞、李永、張迪、林偉、曲琳、鄭波
論文鏈接: http://arxiv.org/abs/2204.04903
開源地址:http://github.com/alibaba/HybridBackend
HybridBackend用戶交流群,入群有專人解答,歡迎加入(釘釘群號):42494662
想了解更多AI開源項目,請點擊:
http://www.aliyun.com/activity/bigdata/opensource_bigdata__ai
星空人工智能91视频免费观看網 倡導尊重與保護知識產權。如發現本站文章存在版權等問題,煩請30天內提供版權疑問、身份證明、版權證明、聯係方式等發郵件至1851688011@qq.com91视频免费播放將及時溝通與處理。!:首頁 > 新聞 » 阿裏自研稀疏模型框架HybridBackend論文入選國際頂會ICDE 2022