LMDeploy大模型量化部署实践
一、大模型部署背景
1.模型部署的定义:
- 将训练好的模型在特定软硬件环境中启动的过程,使模型能够按收输入并返回预测结果。
- 为了满足性能和效率的需求,常常需要对模型进行优化,例如模型压缩和硬件加速。
2.大模型特点
- 内存开销巨大
- 庞大的参数量。78 模型仅权重就需要 14+6 内存
- 采用自回归生成 token,无要缓存 Attention 的 k/v,带来巨大的内存开销
- 动态shape
- 请求数不固定
- Token 逐个生成,且数量不定
- 相对视觉模型,LLM结构简单
- Transformers 结构,大部分是 decoder-only
3.大模型部署背景
- 大模型部署挑战
- 设备层面:如何应对巨大的存储问题?低存储设备(消费级显卡、手机等)如何部署?
- 推理层面:如何加速token的生成速度?如何解决动态shape,让推理可以不间断?如何有效管理和利用内存?
- 服务层面:如何提升系统整体吞吐量?对于个体用户,如何降低响应时间?
二、LMDeploy简介
基础作业:
- 使用 LMDeploy 以本地对话、网页Gradio、API服务中的一种方式部署 InternLM-Chat-7B 模型,生成 300 字的小故事(需截图)
进阶作业(可选做)
- 将第四节课训练自我认知小助手模型使用 LMDeploy 量化部署到 OpenXLab 平台。
- 对internlm-chat-7b模型进行量化,并同时使用KV Cache量化,使用量化后的模型完成API服务的部署,分别对比模型量化前后(将 bs设置为 1 和 max len 设置为512)和 KV Cache 量化前后(将 bs设置为 8 和 max len 设置为2048)的显存大小。
- 在自己的任务数据集上任取若干条进行Benchmark测试,测试方向包括:
(1)TurboMind推理+Python代码集成
(2)在(1)的基础上采用W4A16量化
(3)在(1)的基础上开启KV Cache量化
(4)在(2)的基础上开启KV Cache量化
(5)使用Huggingface推理