LMDeploy 量化部署 LLM-VLM 实践——作业
- 一、 基础作业
- 1.1、配置 LMDeploy 运行环境
- 1.2、以命令行方式与 InternLM2-Chat-1.8B 模型对话
- 二、进阶作业
- 2.1、设置 KV Cache 最大占用比例为0.4,开启 W4A16 量化,以命令行方式与模型对话
- 2.1.1、初始显存占用情况
- 2.1.2、KV Cache == 0.4
- 2.1.3、开启 W4A16 量化
- 2.1.4、 KV Cache == 0.4 + W4A16 量化
- 2.2、以 API Server 方式启动 lmdeploy,开启 W4A16 量化,调整 KV Cache 的占用比例为0.4,分别使用命令行客户端与 Gradio 网页客户端与模型对话
- 2.2.1、命令行客户端
- 2.2.2、Gradio 网页客户端
- 2.3、使用 W4A16 量化,调整 KV Cache 的占用比例为 0.4,使用 Python 代码集成的方式运行 internlm2-chat-1.8b 模型
- 2.4、使用 LMDeploy 运行视觉多模态大模型 llava gradio demo
- 2.5、将 LMDeploy Web Demo 部署到 OpenXLab
详细视频:LMDeploy 量化部署 LLM-VLM 实践
详细文档:看这里
一、 基础作业
1.1、配置 LMDeploy 运行环境
studio-conda -t lmdeploy -o pytorch-2.1.2
conda activate lmdeploy
pip install lmdeploy[all]==0.3.0
1.2、以命令行方式与 InternLM2-Chat-1.8B 模型对话
lmdeploy chat /root/internlm2-chat-1_8b
在这里也比较了下使用 Transformer 运行模型和用 LMDeploy直接推理的速度。
可以看到,LMDeploy 的推理速度是 Transformer库 的 6.74 倍!差别还是很大的。
二、进阶作业
2.1、设置 KV Cache 最大占用比例为0.4,开启 W4A16 量化,以命令行方式与模型对话
2.1.1、初始显存占用情况
2.1.2、KV Cache == 0.4
可以看到,设置 KV Cache == 0.4
后,显存占用一下子减少了约 35%,提升是非常明显的。
2.1.3、开启 W4A16 量化
这个地方,按理来说,显存占用应该会降低很多的,但不知道为什么我运行下来以后提升只有一点点。
2.1.4、 KV Cache == 0.4 + W4A16 量化
在双重加持下,显存占用率也是下降到了 50% 以下,效果显著。
2.2、以 API Server 方式启动 lmdeploy,开启 W4A16 量化,调整 KV Cache 的占用比例为0.4,分别使用命令行客户端与 Gradio 网页客户端与模型对话
2.2.1、命令行客户端
2.2.2、Gradio 网页客户端
2.3、使用 W4A16 量化,调整 KV Cache 的占用比例为 0.4,使用 Python 代码集成的方式运行 internlm2-chat-1.8b 模型
2.4、使用 LMDeploy 运行视觉多模态大模型 llava gradio demo
这里要分析的图片长这样:
-
安装 llava 依赖库
-
创建 pipeline 文件
-
运行结果
可以看到,这里的英文回答对图片的分析还是比较清楚的。 -
使用中文提问
-
运行结果
好一个 ☞ 🐅 → 🦅 ,虽然在括号里有说明这可能是一只老虎,但全篇回答以老鹰描述还是架不住,只能说 Llava 模型对中文的支持性还是比较低。 -
用中文拼英提问
-
运行结果
出人意料的是,用中文拼英提问,得到的回答还可以,虽然不如前两次提问时回答的详细,但这次能肯定的回答这是只老虎,还是比直接用中文好上不少的。难道说拼英介于中文和英文?