《LLM 模型壓縮與推理加速實踐-陳磊.pdf》由會員分享,可在線閱讀,更多相關《LLM 模型壓縮與推理加速實踐-陳磊.pdf(22頁珍藏版)》請在三個皮匠報告上搜索。
1、LLM模型壓縮與推理加速實踐小紅書中臺技術部-推理加速團隊負責人/陳 磊LLM 模型壓縮與推理加速實踐領域背景大語言模型壓縮推理框架與計算優化總結與展望領域背景-LLM推理難點巨大的內存/顯存需求量 自回歸生成過程無法充分并行對于如下模型和場景:Llama 65B 模型max_batchsize=64max_input_seq_length=1024max_output_seq_length=512類別類別參數量參數量顯存用顯存用/GBWeights122120Key/Value cache4(+)240巨大的部署代價(高延遲、低吞吐、昂貴的高性能巨大的部署代價(高延遲、低吞吐、昂貴的高性能
2、GPUGPU ),),是是 LLMLLM 模型能力在產品中真正落地的攔路虎模型能力在產品中真正落地的攔路虎領域背景-LLM推理難點模型壓縮-量化原理?()=?(?(?),21+1,21 1)對稱量化&反量化:?=21 1alpha,=84?()=(?()/?()=?()Example:異常值異常值(outliers)是影響量化誤差的重要因素是影響量化誤差的重要因素模型壓縮-W8A8量化圖片來自smoothquant paperY=(?)(?)=Xp?,將激活的量化困難將激活的量化困難“部分轉移部分轉移”給權重給權重?=max()?max()1?=0.50.75?Applyper-tensor-
3、quantonWeightApplyper-tensor/per-token-quantonActivation SmoothQuant:LLM量化難點:Activation異常值能達到其他值的100 x以上;Weight數值分布均衡,容易量化;Activation異常值分布基本集中在特定的若干通道;模型壓縮-W8A8量化 量化方案:以 LLAMA 為例,W8A8 量化算法設計如圖;實際落地碰到問題及分析:Decoder-only 模型架構,誤差逐級累計放大,最終模型精度影響較大;不同位置的量化帶來的誤差對精度損失不同,比如mlp.fc2;alpha=0.50.8并非對所有層都合適;改進改進1
4、 1:只對部分decode layer 進行量化;模型壓縮-W8A8量化TypeMMCU-AccuracyFP1650.04%ALL-Layer46.53%Pre-N-Layer48.15%Post-N-Layer49.17%N通過搜索得到模型壓縮-W8A8量化改進改進2 2:Weight采用per-channel?=0.1275?=0.00789?=0.0228原數據分布原數據分布使用使用 =0.7 smooth=0.7 smooth 后數據分布后數據分布使用分層搜參使用分層搜參 smoothsmooth 后數據分布后數據分布改進改進3 3:分層制定不同的 smooth 超參數(alpha)
5、模型壓縮-W8A8量化模型壓縮-W8A8量化 基于基于opencompassopencompass 的評測實驗的評測實驗 在大部分評測集上,SQ(V2)相比于原算法有明顯的精度提升;模塊模塊功能功能http serverstream/non-stream訪問模式Tokenrizer可插拔多款tokenrizerFilter對output tokens進行規則過濾Batch Scheduler實現continuous batch 推理機制KV CacheManager實現 paged attention等cache 管理機制Modelshards多卡分布式推理框架與計算優化 框架架構及功能總覽框
6、架架構及功能總覽框架與計算優化 服務性能觀測指標:服務性能觀測指標:First-token-latency;Avg-token-package-cost;Avg-tokens-per-second;ContinuousContinuous BatchBatch InferenceInference策略:策略:Decoding階段可被周期性打斷,清理已結束請求,穿插執行新請求的prefill;當batch隊列有空位時,waiting請求直接加入;顯存不足時,按優先級回退進行中的請求,并回收cache,下輪加入重新計算;改良策略:改良策略:decoding batchsize 動態自適應;deco
7、ding 中斷interval 動態自適應;input batch 在一定范圍內更加總長度自動做循序調整;pagedpaged attentionattention 機制與實現機制與實現框架與計算優化 將原來連續的k/v cache 改成離散分塊存儲 根據decoding實際需求按需分配block,降低顯存浪費框架與計算優化 優化 generate decodinggenerate decoding 環節 attentionattention 實現 新增實現新增實現 MQA/GQAMQA/GQA框架與計算優化 優化 generate decodinggenerate decoding 環節 a
8、ttentionattention 實現框架與計算優化 Tiling 優化 KV Cache排布優化kv-cache-shape=bs*hn,tokens,dimsStep1:Tiling Key&Value around bs*hnStep2:Tiling Key around*,tokens,*Step3:Tiling Value around*,*,dimsStep4:Get P=softmax(Q*KT)done in Loop1Step5:Get O=P*V done in Loop2 偽碼 WaAbWaAb QuantQuant:-Weight:Per-channel -Activ
9、ation:Per-tensor Weigh-only-Quant:Weigh-only-Quant:-Per-channel -Per-group 框架與計算優化 優化 generate decodinggenerate decoding 環節 attentionattention 實現phaseopGEMM-MGEMM-NGEMM-KPrefillQKVSeqLen*BHD*3HDOut-projSeqLen*BHDHDFFN1SeqLen*BFDHDFFN2SeqLen*BHDFDDecodeQKVBHD*3HDOut-projBHDHDFFN1BFDHDFFN2BHDFDGEMMGEM
10、M優化優化框架與計算優化針對不同 Device&Device&TensorShapeTensorShape,搜索最高效的搜索最高效的GEMMGEMM實現實現llama模型中所有的gemm input tensor shape針對不同的Gemm shape 和 不同的device,找到不同的最佳實現框架與計算優化 CompareCompare withwith TensorRTTensorRT-LLM-LLM 測試硬件:A100(80G)測試對象:TensorRT-LLM Xformer(小紅書自研框架)1,4591,181171213261747145719381560LLAMA 7B-1 X
11、 A 100LLAMA 70B-4 X A 100 max throughput(token/s)Input Length 128 -Output Length 2048TensorRT-LLMXformerTensorRT-LLM W8A8Xformer W8A823,4861,237369215884164167442201865LLAMA 7B-1 X A 100LLAMA 70B-4 X A 100 max throughput(token/s)Input Length 128 -Output Length 128TensorRT-LLMXformerTensorRT-LLM W8A8
12、Xformer W8A82529272583212664308648246LLAMA 7B-1 X A 100LLAMA 70B-4 X A 100 max throughput(token/s)Input Length 2048 -Output Length 128TensorRT-LLMXformerTensorRT-LLM W8A8Xformer W8A82592738647625685829739711LLAMA 7B-1 X A 100LLAMA 70B-4 X A 100 max throughput(token/s)Input Length 2048 -Output Length 2048TensorRT-LLMXformerTensorRT-LLM W8A8Xformer W8A82展望與挑戰更新的模型架構更大的模型參數量更有效的模型壓縮方案更長的輸入/輸出 token 長度更多的應用場景:對話、推薦、安全等多模態大模型適配不同異構加速計算平臺