⑴ 算力平台:GPU利用率與集群線性加速比
GPU利用率與集群線性加速比是衡量GPU集群性能的關鍵指標,它們直接影響大模型訓練的效率與成本。決定這些指標的因素眾多,包括單GPU卡性能、GPU卡間的互聯、集群網路配置以及軟體解決方案等。對於千卡GPU集群,算力利用率約為70%,集群線性加速比約為95%;而萬卡集群下,算力利用率降至50%,線性加速比接近93%。本文將深入探討GPU利用率和集群線性加速比的概念與計算方法。
GPU利用率,包含算力利用率與顯存利用率,衡量的是大模型訓練期間平均每張GPU卡的有效算力和顯存,與卡的峰值性能的比例。顯存利用率相對容易量化,提升空間也較大,而算力利用率則涉及如何充分利用GPU卡的計算能力。MFU(Model FLOPS Utilization)統計方法用於評估算力利用率,其計算公式為平均訓練FLOPS除以卡的峰值FLOPS。例如,MegaScale論文中提到,對於千卡集群,算力利用率約為59%;萬卡集群下,這一比例降低至55.2%。
GPU集群線性加速比反映了隨著GPU數量增加,計算任務完成速度提升的比例與GPU卡數量增加的比例之間的關系。線性加速比計算公式為任務完成時間縮短比例除以GPU卡數量增加比例。然而,隨著集群規模擴大,通信時間開銷增加,GPU利用率會下降,線性加速比也會相應降低。極端情況下,GPU數量達到一定值後,再增加GPU卡可能不會繼續增加集群總算力。
算力利用率是一個靜態指標,表示給定GPU集群下的有效算力獲取情況;而線性加速比是一個動態指標,反映集群擴展能力。GPU集群線性加速比可通過平均每張GPU卡的計算吞吐、算力利用率或集群總算力增加比例與GPU卡數量增加比例的比值來表示。實際應用中,由於通信開銷等因素,無法實現完美的線性加速。
舉例而言,Nvidia的萬卡H100集群在從3584卡擴展至10752卡時,線性加速比約為93.16%;在MegaScale論文中,萬卡集群相較於千卡集群的線性加速比約為93.29%。這些數據展示了GPU利用率與集群線性加速比在不同集群規模下的表現。
通過深入理解GPU利用率與集群線性加速比的概念、計算方法及其影響因素,我們可以更有效地優化GPU集群配置,提高大模型訓練效率與成本效益。
⑵ 什麼是深度學習的算力
在深度學習的領域中,模型的算力衡量標准至關重要,其中FLOPs(每秒浮點運算次數)、Macs(乘加運算)以及FC(全連接層)、CNN、LSTM和Transformer模型的計算量是衡量性能的關鍵指標。讓我們一一解析這些術語。
FLOPs</,全稱為Floating Point Operations Per Second,是評估硬體性能和模型運行速度的基石。它的單位包括MFLOPs(百萬)、GFLOPs(十億)、TFLOPs(萬億)、PFLOPs(千萬億)以及更高層級。值得注意的是,FLOPs與FLOPS(每秒浮點運算次數)雖然相似,但前者強調的是每秒執行的運算次數,而後者更側重於概念表述。
Macs</,即 Multiply-Add Operations,常被用於衡量模型的復雜度,特別是在工業界中,QPS(每秒查詢處理數)通常被用來評估處理速度。Macs與FLOPs關聯密切,大約每1個Macs對應2個FLOPs,這意味著Macs更側重於實際執行的計算操作。
訓練模型估算</,如全連接層(FC Layer),其計算量主要來自矩陣乘法,每個元素涉及乘法和加法。為了簡化計算,FLOPs的計算公式通常涉及參數數量,這有助於預測訓練時間。
CNN Layer</的計算量則由卷積核尺寸和輸入通道數決定,每層的FLOPs計算公式雖然包含了這些變數,但實際計算時會排除常數項,以簡化分析。
LSTM Layer</的計算量涉及詞向量維度和隱藏層維度,其FLOPs由四個非線性變換的矩陣乘法組成,每一層都有其獨特的計算需求。
Transformer 架構</,尤其是LLM(大型語言模型),其計算量主要源於注意力機制和多層感知器(MLP)模塊。Encoder和Decoder各有6層注意力層,加上Decoder的mask機制,每層的參數量包括Multi-head Attention和MLP的特定矩陣形狀。
在Transformer的參數分析中,每層的參數計算包括Attention模塊的縮放和平移參數,以及MLP的參數量。例如,每層Attention的參數量可以通過矩陣乘法的大小來估算。
Transformer的總參數還包括詞嵌入矩陣,隨著模型層數的增加,如7B到70B的模型,隱藏層參數量通常會有顯著增長。
計算FLOPs時,Transformer模型主要依賴於矩陣相乘,公式通常是Input_size乘以參數數量再乘以2。假設訓練語料的Token數,比如10億,那麼訓練所需的FLOPs大約可以這樣估算:FLOPs ≈ 100,000,000 x Parameter x 2。
對於LLM,如LLaMa-13B模型,FLOPs的計算公式更復雜,會考慮attention、LM head以及隱藏層的大小。經過簡化後,FLOPs大致為...(具體數值根據模型參數計算得出)。
要深入了解這些計算細節,可以參考Ethan Yan的文章,它詳細討論了估算與精算的區別,以及是否考慮FFN(Feed-Forward Network)和詞表計算。務必查閱Attention is All you Need和The Illustrated Transformer等權威論文和博客以獲取深入見解。
以上內容由Zhihu On VSCode整理,為理解模型訓練背後的算力計算提供了寶貴的指導。
⑶ TOPS(處理器運算能力單位)
TOPS(處理器運算能力單位)是一個衡量處理器每秒執行操作次數的指標,單位為萬億次(1012)。與此類似的還有GOPS(十億次)和MOPS(百萬次)。在某些應用中,會用TOPS/W來評價處理器在單位功耗下的運算效率。OPS與FLOPS(浮點運算次數)相似,前者是操作次數,後者是浮點運算次數。
FLOPS定義為每秒執行的浮點運算次數,是科學計算領域衡量處理器性能的常用指標。一個MFLOPS代表每秒一百萬次浮點運算,一個GFLOPS代表每秒十億次浮點運算,一個TFLOPS代表每秒一萬億次浮點運算,一個PFLOPS代表每秒一千萬億次浮點運算。這里的前標與內存單位一致,採用二進制計算,每進一級為1024單位。
常規神經網路算力方面,如AlexNet處理224*224圖像需1.4GOPS,ResNet-152處理相同尺寸圖像需22.6GOPS。對於1080p圖像(1920*1280像素,30FPS)的8路流,ResNet-152處理能力約為265Teraop/sec,相當於30張高端顯卡的性能。EIE在稀疏網路上的算力可達102GOPS/s,相當於同等級非稀疏網路的1TGOPS/s。一些層的具體算力則需參考特定論文或資料。
CPU處理能力的衡量單位包括MIPS(百萬指令/秒)和DMIPS(Dhrystone百萬指令執行速率/秒)。MIPS衡量整數運算性能,而DMIPS用於評估處理器在Dhrystone基準程序下的整數運算性能。FLOPS衡量浮點運算性能,ARM架構的MIPS值與處理器頻率的關系可通過公式MIPS=0.9×MHz進行估算。NXP S32V234處理器是專門用於輔助駕駛硬體計算的平台。
ROM(只讀存儲器)用於存放程序,通常分為片內和片外。程序存儲區的地址范圍從0x00到0x7F(片內)和0x00到0xFF(片外)。RAM(隨機存取存儲器)用於數據存儲,STC89C52單片機有512位元組RAM,分為片內(0x00到0x7F)和片外(0x00到0xFF)。
NCC S1神經網路計算卡採用AI專用APiM架構,提供5.6Tops算力,峰值性能強大,適用於高性能邊緣計算。其核心採用28nm工藝製程,功率效率高,能耗比為9.3 Tops/W。搭配ROC-RK3399-PC主板,具備高性能處理器與豐富介面,可快速集成邊緣計算硬體平台。提供基於PyTorch的模型訓練工具PLAI,支持多種網路訓練模型實例,適用於深度學習應用。
⑷ 訓練模型算力的單位:FLOPs、FLOPS、Macs 與 估算模型(FC, CNN, LSTM, Transformers&&LLM)的FLOPs
FLOPS(Floating Point Operations per Second)代表每秒浮點運算次數,是衡量計算速度的單位,常用於評估硬體性能,如GPU的計算算力,以及描述深度學習模型在GPU上運行時的速度。
例如,英偉達A100與H100以及NVLink技術連接的兩塊H100在進行不同精度運算時的算力對比,都使用TFLPOS(每秒1萬億次運算)作為算力單位。
FLOPs的基本單位還包括FLOPs(Floating Point Operations),表示浮點運算次數,用於衡量模型或演算法的總體復雜度。在論文中,常用GFLOPs(1 GFLOPs=10^9 FLOPs)作為單位。QPS(queries per second,即每秒處理的個數)也是衡量模型處理速度的指標。
MACs(Multiply ACcumulate operations)指乘加累積操作次數,通常與FLOPs混淆。實際上,1個MACs包含1個乘法操作和1個加法操作,相當於2個FLOPs。
估算模型FLOPs的方法通常有手動估算和利用第三方包獲取。以下是對FC Layer、CNN Layer、LSTM Layer和LLM & Transformers的FLOPs推導和估算的介紹。
FC Layer的FLOPs計算公式為FLOPs = Input_size x Parameter x 2,其中Input_size是輸入值大小,Parameter是參數量。
CNN Layer的FLOPs計算公式為FLOPs = Input_size x Parameter x 2,其中Input_size是輸入值大小,Parameter是參數量。
LSTM Layer的FLOPs計算公式為FLOPs = Input_size x Parameter x 2,其中Input_size是輸入值大小,Parameter是參數量。
Transformers & LLM的FLOPs計算公式為FLOPs = 6TP,其中TP是模型訓練過程中需要的總浮點運算次數。