LMDeploy 大模型量化部署实践
大模型部署背景
模型部署
定义
- 将训练好的模型在特定软硬件环境中启动的过程,使模型能够接受输入并返回预测结果
- 为了满足性能和效率的要求,尝尝需要对模型进行优化,例如模型压缩和硬件加速
产品形态
云端、边缘计算端、移动端
计算设备
CPU、GPU、NPU、TPU等
大模型特点
- 内存消耗巨大 庞大的参数量 7B模型仅权重就需要14+G内存
- 采用自回归生成token 需要缓存Attention的k/v带来巨大的内存开销
- 动态shape 请求数不固定 token逐个生成,且数量不定
- 相对视觉模型 LLM结构简单
大模型挑战
- 设备 如何应对巨大的存储问题 ? 底存储设备如何部署?
- 推理 如何加速token的生成速度 如何解决动态shape 让推理可以不间断 如何有效管理和利用内存
- 服务 如何提升系统整体吞吐量。对于个体用户 如何降低相应时间
大模型部署方案
- 技术点
- 方案
LMDeploy简介
LMDeploy 是LLM在英伟达设备上部署的全流程解决方案。包括模型轻量化、推理和服务。
项目地址:https://github.com/InternLM/lmdeploy
推理性能
- 静态推理性能 固定batch
- 动态推理性能 真是对话
核心功能-量化
为什么做weight only的量化?
- 计算密集:推理的绝大部分时间消耗在数值计算上,针对计算密集场景,可以通过使用更快的硬件计算单元来提升计算速度,比如量化为W8A8使用Int8 Tensor Core来加速计算
- 访问密集:推理时,绝大部分时间消耗在数据读取上,针对访问密集场景,一般是通过提高计算访存比来提升性能。
核心功能-推理引擎TurboMind
核心功能 推理服务 api-server
案例(安装、部署、量化)
参考教程:
https://github.com/InternLM/tutorial/blob/main/lmdeploy/lmdeploy.md