Part5 LLM部署技术

1、量化(Quantization)

1.1. 权重-激活联合量化:SmoothQuant

核心思想

  • 问题背景:LLM的激活中存在离群值(outliers),直接量化会导致精度大幅下降。
  • 解决方案:通过迁移量化难度,将激活的量化难度部分转移到权重上,使两者均易于量化。
    • notion image
  • 数学公式
    • 迁移强度 :控制激活和权重量化难度的平衡(默认 )。
      • notion image

实现步骤

  1. 校准阶段:计算每通道的最大激活值()和权重值()。
  1. 平滑阶段:调整激活和权重的数值分布,使其更易于量化。
  1. 推理阶段:使用平滑后的激活和权重进行低比特量化(如W8A8)。
    1. notion image

优势与效果

  • 精度保留:在OPT-175B、BLOOM-176B等模型上,量化后精度损失<0.5%。
  • 效率提升:内存占用减少50%,推理速度提升2倍(如MT-NLG 530B可在单节点部署)。

2. 仅权重量化:AWQ(Activation-aware Weight Quantization)

核心思想

  • 关键观察:权重的重要性与激活分布相关,保留1%的关键权重通道可显著减少量化误差。
    • notion image
  • 方法
    • 混合精度量化:对关键权重通道保留高精度(FP16),其余通道量化至低比特(如INT4)。
    • 缩放优化:基于激活幅度动态调整权重量化缩放因子,最小化量化误差。

实现步骤

  1. 校准:通过少量样本(如128条)分析激活分布,识别关键权重通道。
  1. 缩放与量化:对权重进行分组量化(group-wise),每组独立计算缩放因子。
  1. 硬件优化:通过寄存器级并行化(如UINT4转UINT8)加速反量化过程。

优势与效果

  • 精度保留:在LLaMA-7B、VILA多模态模型等任务中,INT4量化后精度损失<1%。
  • 硬件加速:TinyChat引擎在Jetson Orin上实现3倍速度提升,支持边缘设备部署。

3. 实践扩展:QServe(W4A8KV4)

设计目标

  • 云边协同:结合W4A16(边缘)和W8A8(云端)的优势,实现高效内存带宽利用与计算强度平衡。
  • 系统优化
    • 核融合:减少反量化操作在CUDA核中的开销,避免部分和(partial sum)的反量化。
    • 注意力平滑:将KV缓存的量化难度迁移至查询矩阵(Q),支持低比特KV缓存(如KV4)。

效果

  • 精度与效率:在Llama-2-70B上,W4A8KV4量化后困惑度(PPL)为4.18,优于Atom-W4A4(4.58)。
  • 吞吐量:在A100 GPU上,端到端吞吐量提升2.4-3.5倍。

二、剪枝与稀疏化(Pruning & Sparsity)

1. 权重稀疏化:Wanda

核心思想

  • 动态重要性评估:权重的重要性由权重值与激活幅度的乘积(\(|W_{ij}| \cdot \mathbb{E}[|X_j|]\))决定。
  • 剪枝策略:保留高重要性权重,剪枝低重要性权重(如50%稀疏度)。

效果

  • 在LLaMA-70B上,50%稀疏度下困惑度仅下降0.3%,显著优于传统幅度剪枝(下降4.8%)。

2. 上下文稀疏化:DejaVu与MoE

DejaVu

  • 动态稀疏预测:通过异步预测头(async predictor)识别输入相关的冗余注意力头和特征。
  • 优势:在保持精度的前提下,减少50%计算量。

混合专家(MoE)

  • 稀疏激活:每个Token仅激活部分专家(如2/8个专家),提升模型容量而不增加计算开销。
  • 路由机制
    • 容量因子(Capacity Factor):控制每个专家处理的Token数量(如1.5倍缓冲)。
    • 硬件挑战:专家跨设备通信开销需优化。

3. 注意力稀疏化:SpAtten与H2O

SpAtten

  • 级联剪枝:逐步剪枝不重要Token和注意力头,结合渐进量化(低精度优先)。
  • 效果:在长序列任务中减少50%注意力计算。

H2O(Heavy-Hitter Oracle)

  • KV缓存优化:仅保留局部Token和关键Token(Heavy Hitters),减少内存占用。
  • 效果:在4096长度序列中,内存减少40%且精度无损。

三、LLM服务系统(LLM Serving Systems)

1. 核心指标

  • TTFT(Time To First Token):用户请求到首Token生成的时间,依赖提示处理效率。
  • TPOT(Time Per Output Token):单Token生成时间,影响用户体验(目标<100ms/Token)。
  • 吞吐量(Throughput):系统每秒处理的Token总数,受批处理策略影响。

2. 关键技术

Paged Attention(vLLM)

  • 分页KV缓存:借鉴操作系统虚拟内存管理,将KV缓存划分为非连续物理块,减少内存碎片。
  • 优势:支持动态批处理与长上下文(如4096长度),内存利用率提升3倍。

FlashAttention

  • 核融合与内存优化:通过分块计算(tiling)避免生成\(N \times N\)注意力矩阵,减少HBM访问。
  • 效果:在NVIDIA H100上,训练速度提升2倍。

推测解码(Speculative Decoding)

  • 草稿-验证机制:小模型(7B)生成候选Token序列,大模型(175B)并行验证,加速生成。
  • 效果:2-3倍速度提升,输出与原始模型完全一致。

批处理策略

  • 动态批处理:等待批次填满或超时后处理,平衡吞吐与延迟。
  • 连续批处理(In-Flight Batching):Token级批处理,最大化GPU利用率(适合变长输出)。

四、总结

  1. 量化是LLM部署的核心:SmoothQuant和AWQ通过迁移量化难度与混合精度,显著降低内存与计算开销。
  1. 稀疏化提升效率:Wanda和MoE分别从权重与结构层面减少冗余计算,支持大规模模型部署。
  1. 系统优化是关键:vLLM和FlashAttention通过内存管理与核融合,解决长上下文与高吞吐需求。
  1. 边缘与云端协同:TinyChat和QServe针对不同场景优化,实现低延迟与高能效。
下节课预告:MCUNet——面向微控制器的算法-系统协同设计框架。

参考文献:详见课程PPT引用论文(SmoothQuant、AWQ、vLLM、FlashAttention等)。