LMDeploy 的量化和部署
文档:https://github.com/InternLM/tutorial/blob/vansin-patch-4/lmdeploy/lmdeploy.md
视频:https://www.bilibili.com/video/BV1iW4y1A77P
一、模型量化
大模型参数量很大,运行起来非常消耗显存和内存,模型的参数和计算过程中的kv是浮点数,如果在保证一定精度的下存储为低精度的浮点数或者整数,就可以减少调取参数的时间。主要有两种量化方法,KV Cache 量化和 **4bit Weight Only 量化(W4A16)
KV Cache 量化是指将逐 Token(Decoding)生成过程中的上下文 K 和 V 中间结果进行 INT8 量化(计算时再反量化),以降低生成过程中的显存占用。
4bit Weight 量化,将 FP16 的模型权重量化为 INT4,Kernel 计算时,访存量直接降为 FP16 模型的 1/4,大幅降低了访存成本。Weight Only 是指仅量化权重,数值计算依然采用 FP16(需要将 INT4 权重反量化)。
二、模型部署
模型需要在具体的运行环境中跑起来,才能对外提供推理服务,模型部署的过程涉及到模型的转换(针对运行环境进行格式转换),推理服务的部署(包括后端模型的运行启动、中间的接口暴露、前端的对话界面)。LMDeploy就是应用于模型部署的工具,基础架构如图:
LMDeploy(TurboMind) is a toolkit for compressing, deploying, and serving LLM.