武瓊
北京冉騰語云科技有限公司 北京 100000
大模型時代已然到來,我們要擁抱未來,改變世界。但大模型在網絡受限、計算資源不足的場景下,不能有效使用,算力低,無法滿足端側訓練及本地化部署的問題亟待解決。大模型加速、輕量化,是大模型能在消費級配置中運用的必然之路。
大模型的出現,改變了馮諾依曼的傳統計算機體系結構。處理器結構、計算速度、計算精度等,對處理器及內存提出了分布式存儲計算的要求,對體系架構下各設備之間的輸入輸出提出了更高的要求。
大模型出現之前,算法與硬件是可以解耦的,但大模型的出現,需要算法強依賴硬件資源,只有合理使用硬件,對硬件做到足夠優化的基礎上,才能更好地支撐算法的訓練和應用。
目前在大模型輕量化的研究主要集中在模型量化,剪枝,蒸餾等算法層面,并未從硬件到軟件,從計算機體系角度全面貫通的大模型輕量化方法。
本文從計算機體系架構角度,分析大模型對計算機各組成部分的優化技術和調整方案,以滿足將大模型在消費級移動設備和小型設備上進行訓練和部署的目標。
本文主要從計算機體系架構的7個方面分析大模型輕量化研究進展:①基于大模型的計算機體系架構的變化;②處理器計算加速;③顯存加速;④輸入輸出通信傳輸加速;⑤操作系統加速;⑥編譯加速;⑦算法加速。
大模型技術的出現,在計算機系統架構中,最大變化是處理器,由單CPU模式變革到CPU與GPU聯合處理模式,這也是大模型得以實現的關鍵所在。處理器變化如下圖。
整體架構如圖1所示。

圖1 新計算機體系架構
1.1.1 系統存儲。
(1)L/L2L3:多級緩存,其位置一般在CPU芯片內部。
(2)System DRAM:片外內存,內存條。
(3)Disk/Buffer:外部存儲,如磁盤或者固態磁盤。
1.1.2 GPU設備存儲。
(1)/L2 cache:多級緩存,位置在GPU芯片內部。
(2)GPUDRAM:通常所指顯存。
(3)GPU設備存儲包含許多存儲單元。
1.1.3 傳輸通道。
(1)PCIEBUS:PCIE標準的數據通道,數據是通過該通道從顯卡到達主機。
(2)BUS:總線。計算機內各個存儲之間交互數據通道。
(3)PCIE-to-PCIE:顯卡之間通過PCIE直接傳輸數據。
(4)NVLINK:顯卡之間的一種專用的數據傳輸通道。
所有對大模型的優化、加速、輕量化,都是對于體系架構中更好利用CPU、多級內存、GPU并行計算速度,GPU顯存更好利用,提升速度等方面的優化。
①為了適應大模型千億數據的并行計算,處理器由CPU單一架構,增加了GPU集群;②為了存儲更多的參數,內存由過去的CPU緩存,增加了多級緩存,最革新的變化為增加了大量的GPU顯存;③處理器內部,增加了內存到顯存、顯存到顯存的通信傳輸通道。
處理器加速的最大變革是增加了GPU。為了更好地優化算法,最大程度節省硬件資源,需要對算法進行算力評估。
2.1.1 訓練算力。
訓練算力 = 訓練步數×每步計算量×并行度
(1)訓練步數:模型訓練的迭代次數,確保模型能夠收斂到最優解。
(2)每步計算量:每個訓練步驟需要的計算量,取決于模型的復雜度和訓練數據的大小。
(3)并行度:計算設備的并行計算能力,計算設備的并行度越高,計算速度就越快。
2.1.2 參數計算。
其中:
C是訓練transformer模型所需的計算量,單位為總浮點運算數(FLOP);
C=C前向+C后向;
C前向≈ 2PD;
C后向≈ 4PD。
τ是訓練集群的實際總吞吐量:
τ=GPU數×每GPU的實際每秒浮點運算數(實際FLOPs),單位為FLOPs;
T是訓練模型所花費的時間,以秒為單位;
P是transformer模型的參數量;
D是數據集大小,表示為數據集的總詞元數。
2.1.3 精度計算。
精度計算如圖2所示。

圖2 精度計算結構
GPU集群能夠支持萬級卡的高速互聯,支持各種異構計算,包括CPU、GPU等算力的高速互聯。
GPU集群支持模型并行、數據并行、流水線并行、張量并行,大大提高計算速度。
大模型環境下,存儲加速考慮最多的是GPU顯存加速。
GPU的高性能已成為業界共識,但單個GPU的顯存大小卻增長緩慢,顯存能力成為大模型訓練的主要瓶頸,大模型的加速目標主要集中在對顯存的優化與加速。首先要明確消耗顯存的來源。
①數據顯存:輸入數據和神經網絡每層輸出的激活值大小受batchsize及上下文長度影響;②模型顯存:權重參數、梯度參數、優化器狀態等都直接影響顯存的性能;③臨時顯存:GPUkernel計算時用到的臨時內存和其他緩存等。④精度計算。
①Batch size:減少每次傳入模型的樣本數量。較小的batchsize可以減少顯存的使用,但也會降低模型的訓練效果,batchsize選擇要權衡顯存的限制和模型的性能要求;②減少模型的參數量:也就是減少模型的復雜度,減少模型的隱藏層、每層神經元數量,但會導致模型的表示能力下降,影響模型性能,要選擇適當的參數量,達到兩者平衡后的最佳效果。③梯度累積技術:將梯度計算結果存儲在顯存中,以便在計算下一批樣本時重復使用;④壓縮模型參數:利用GPU集群,使用分布式存儲計算推理技術,將模型的計算分布到多個設備上,以減少單個設備的顯存需求;⑤模型并行:將模型的參數、梯度、優化器狀態以模型并行的方式切分到所有的GPU,利用ZeRO-Cache框架把內存作為二級存儲offload卸載參數、梯度、優化器狀態到CPU內存;⑥數據并行:在各個GPU上都拷貝一份完整模型,各自有一份數據,算一份梯度,最后對梯度進行累加來更新整體模型;⑦流水線并行:當模型太大,一塊GPU放不下時,流水線并行將模型的不同層放到不同的GPU上,通過切分mini-batch實現對訓練數據的流水線處理,提示GPU計算通信比,通過re-materialization機制降低顯存消耗;⑧內存架構優化:可以采用參數服務器集中式和去中心化兩種方式。
大模型的基礎設施需要高性能智能計算,在萬卡規模的網絡架構中,要保證網絡的擴展性,沒有擁塞,是非常困難的。大模型體系架構的通信特點是,有很多集合的通信操作,集合通信可以分解為同號卡之間的集合通信,在同號卡之間構建高速的通信通道,提升整個網絡的吞吐量。
大模型架構體系的輸入輸出通信模式,也對大模型性能有很大的影響,大模型通信優化方向:①改善網絡硬件資源,從物理上直接提升帶寬,降低延遲,但成本高,需要新設備及使用維護開銷;②采用AllReduce集合通信,減少帶寬聚合,但不利于集中管理;③增加并行度,通過重疊計算與通信減少通信獨立時間,但實現設計深度學習框架,修改困難;④改善同步通信算法,通過選取更合適的算法來減少通信時間,但不同環境下算法選擇不固定;⑤使用張量融合技術,減少小通信包的通信時間占比,有額外的計算開銷,會造成異步;⑥使用異步通信算法,減小由于計算時間差導致的節點等待,但只支持PS結構,另外會造成渾濁梯度影響訓練精度;⑦量化壓縮及稀疏化壓縮,大幅度降低通信量,造成數量信息丟失,影響訓練精度;⑧與拓撲相關的網絡優化,充分利用拓撲帶寬,限定應用范圍,系統,算法實現難;⑨專用系統設計,減少帶寬聚合,減少節點計算量,但硬件成本高;⑩減少通信占比,調整神經網絡來降低同步參數量,但在多數環境下性能因素并非調整神經網絡的主導因素。
大模型在內存的分布式存儲與并行計算,對計算機系統管理提出了更高的要求,越來越多的操作系統管理工作放在GPU中,以及與GPU相關的CUDE中,未來大模型會是操作系統中的一部分。
大模型需要在更多不同操作系統的端側設備,如手機、汽車、智能家電等點在設備、VR可穿戴設備等終端設備運行,需要有更高效的操作系統在硬件與軟件之間找到平衡。
①減少卷積核大小,將大卷積分解成一系列小的卷積核的操作組合,將少attention點積操作;②減少通道數;③加強神經網絡架構搜索:更少的乘法操作,更快的速度;④損失函數優化。
對矩陣計算進行優化,提高計算效率和節省存儲空間。
6.2.1 分塊矩陣乘法:將矩陣劃分成小矩陣的塊,通過重新組合計算順序來減少計算量。可以利用矩陣的局部性,將少內存訪問次數,提高計算效率。
6.2.2 并行計算的矩陣乘法優化:將大矩陣分解成多個子矩陣,分配給不同的處理器進行并行計算,加快計算速度。
6.2.3 矩陣轉置優化:交換矩陣的行和列,需要使用額外的存儲空間,時間復雜度高。
6.2.4 矩陣分解優化:將一個矩陣分解成多個子矩陣,常用的矩陣分解方法LU分解、QR分解、奇異值分解。
大模型網絡結構中,有大量的冗余參數,在推理過程中,僅有少部分的權值與有效計算,并對推理結果產生主要影響。剪枝方法通過把網絡結構中冗余的權值、節點或層去掉,減少網絡的規模,降低復雜度。
6.3.1 剪枝原理:訓練一個性能較好的原始模型,參數巨大,推理速度慢。判斷原模型中參數的重要程度,去除重要程度較低的參數,在訓練集上微調,盡量避免由于網絡結構變化而出現的性能下降,判斷模型大小、推理速度、效果等是否滿足要求,不滿足繼續剪枝。
6.3.2 非結構化剪枝:權重剪枝,神經元剪枝。
6.3.3 結構化剪枝:卷積剪枝,跨多層剪枝。
6.3.4 Channel-wise: 通道剪枝[2]。
6.3.5 Stripe-wise pruning:[3]。
大模型中計算量非常大,需要GPU等專用的計算pintail才能實現實時運算,這對于端上產品是不可接受的,模型量化就是減少計算量的方法。量化,對模型網絡的權值,激活值等從高精度轉化成低精度的操作過程,模型量化優勢如下。
6.4.1 量化方法。①聚類量化[4];②對數量化;③二值量化;④對稱量化;⑤非對稱量化;⑥訓練后量化和訓練感知量化。
6.4.2 量化步驟。①選擇合適的量化方法,確定選用的對稱量化或非對稱量化;②統計輸輸入數據的數值區間;③根據量化方法,輸入區間,計算量化參數,零點值,縮放系數;④根據轉換公式,對輸入的float32精度的數據轉換為int8精度數據;⑤驗證量化后的模型效果。
大模型結構復雜,但有良好的性能和泛化能力,小模型網絡規模小,表達能力有限,利用大模型學習到的知識去指導小模型訓練,使得小模型具有與大模型相當的性能,使參數量大福降低,可實現大模型輕量化。
6.5.1 知識蒸餾一般流程。
知識蒸餾如圖3所示。

圖3 知識蒸餾一般流程
6.5.2 知識蒸餾方法。①利用蒸餾損失函數刻畫的教師神經網絡中的知識在蒸餾過程中的丟失程度;②多教師知識蒸餾;③融合圖神經網絡的知識蒸餾;④結合多模態的知識蒸餾。
編譯器是連接算法和體系結構的部分,是解決訓練環境與部署環境不一致的直接方法。一般通過大模型特有的深度學習訓練框架,作為訓練環境和部署環境的中間層,在中間層表示做系列標準的流圖優化操作(loop調度,算子融合等),最后在按需求生成各自目標平臺的機器碼。常用的大模型編譯器:①TVM:實現算子代碼的自動生成;②TensorflowXLA:是一種優化TensorFlow計算的編譯器,可以提高服務器的移動平臺的速度,改進內存使用、提升便攜性和可移植性;③PytorchGlow:Glow是一個機器學習編譯器和執行引擎,可以面向多種硬件;④DeepSpeed:微軟開源的一個LLM模型訓練推理加速工具,并在此編譯框架下復現了instructGPT論文工作,可以將速度提升15倍以上。DeepSpeed提供了GPU加速、模型壓縮、ZeRO優化、自動混合精度、算力預測等功能,支持多種編程語言和編譯框架,如Python、PyTorch、TensorFlow、JAX等編譯器。
全文從計算機體系架構角度,從底層硬件到上層軟件,對目前存在的LLM大模型加速方進行總結分析,建立了一種全視角LLM大模型加速的思路,有利于下一步通過計算機體系架構整體研究LLM大模型加速。