LMDeploy量化部署LLM实践笔记
模型部署与优化
模型部署
- 定义与特点
- 软件工程中部署是指开发完毕的软件投入使用。
- 人工智能领域模型部署是算法落地的关键;因为模型部署存在多种场景,例如是部署到CPU上,还是GPU/TPU/NPU上,还是多卡/集群上;或者说是部署到端侧上,例如机器人和手机。
- 在不同的场景下,部署有不同的需求,例如不同的硬件架构,需要有针对性的进行优化;或者部署到集群上,如何分布式推理;再例如部署到端侧上,需要针对端侧内存和计算能力较小的情况下,进行优化。这些都是实际生产中需要考虑的。
- 大模型部署
- 参数量巨大,推理大量计算。
- 根据InternLM2和openAI提供的计算量估算方法,20B模型每生成一个token,就要进行大约460亿次浮点运算。
- 20B算是小模型,GPT3参数量规模有175B,Batch-Size大一些,每次推理计算量将达到千万亿量级;A100 FP16理论运算性能每秒77.97万亿。
- 内存开销
- 以FP16为例子,20B模型加载参数需要40G+显存,175B模型(GPT3)需要350G+显存
- 由于KV cache的存在,还会额外占用显存,例如FP16,batch-size=16,输入为512 tokens,输出为32tokens,20B模型额外产10.3G 缓存
- 访存瓶颈
- 大模型推理是访存密集任务
- 动态请求
- 请求量不确定
- 请求时间不确定
- Token生成不确定
大模型部署方法
剪枝
蒸馏
量化
- 量化感知训练(QAT) LLM-QAT
- 量化感知训练,主要是通过QDQ让模型适应量化误差
- 量化感知微调(QAF) PEQA QLORA
- 微调过程中进行量化
- 训练后量化(PTQ) LLM.int8 AWQ
- 训练后量化,减少LLM的存储和计算复杂性
LMDeploy
涵盖了LLM任务的全套轻量化、部署和服务功能包
有状态推理学到了
可扩展的KV 缓存器 类似于内存池和页式管理,用到了kv cache