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