《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,81560LLAMA 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,2373692442201865LLAMA 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 W8A825292725832246LLAMA 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 长度更多的应用场景:对话、推荐、安全等多模态大模型适配不同异构加速计算平台