type
status
date
slug
summary
tags
category
icon
password
LMDeploy高效部署Llama-3-8B 1.8倍vLLM推理效率

环境、模型准备

1.1 需要准备一个用于lmdeploy的环境,为了避免环境污染,这里新建一个conda环境
1.2 下载Llama3

LMDeploy Chat CLI工具进行模型推理

使用LMDeploy Chat CLI 工具部署
跟部署后的llama3打个招呼
notion image
叫它介绍一下湖南的景点
notion image

3 LMDeploy模型量化(lite)

3.1 设置最大KV Cache缓存大小
模型运行时,占用的显存可大致分为三部分: 1. 模型参数本身占用的显存 2. KV Cache占用的显存 3. 中间运算结果占用的显存 LMDeploy 的KV Cache管理器通过设置--cache-max-entry-count参数,控制KV Cache占用剩余显存的最大比例。默认的比例为0.8。
通过几个例子,观察调整--cache-max-entry-count参数的显存占用
最开始可以看到显存占用大概是36G左右
notion image
将--cache-max-entry-count参数设置为0.5
notion image
可以看到只有28G左右
将--cache-max-entry-count参数设置为0.01,相当于禁用,可以看到显存占用确实少了很多,只有16G了,变成原来的一半了。但是这样产生的代价就是模型推理速度变慢(待了解)
notion image
3.2使用W4A16量化
使用下面一条命令,完成模型量化工作
新的HF模型被保存到Meta-Llama-3-8B-Instruct_4bit目录。下面使用Chat功能运行W4A16量化后的模型
notion image
W4A16方法再禁用KV Cache,查看显存占用情况,直接从36G的显存占用变到7G不到!!!Amazing!!!
notion image

4 LMDeploy服务(serve)

在前面的章节,我们都是在本地直接推理大模型,这种方式为本地部署,在生产环境下,有时候需要将大模型封装为API接口服务,以供客户端进行访问。
4.1 启动API服务器
notion image
可以看到这里服务器已经通过FastAPI启动了
启动完服务器不能将其关闭,后面需要新建客户端连接该服务,同时,也可以使用Open API(Swagger UI )来查看接口具体说明,这一步由于Server在远程服务器上,所以本地需要做一下ssh转发才能直接访问。在你本地打开一个cmd窗口,输入命令如下:
PS:有关SwaggerUI的内容可以参考我的另一篇
🗒️
OpenAPI(Swagger)
notion image
4.2 命令行客户端连接API服务器
新建一个终端连接API服务器
就可以通过终端与模型进行对话
4.3 网页客户端(gradio)连接API服务器
新建一个终端,将Gradio作为前端,启动网页客户端
notion image

拓展部分:

5 测量推理速度(使用Imdeploy)

benchmark测试结果如图所示
我第一次尝试的时候爆显存了,调低了参数后恢复正常

6 使用LMDeploy运行视觉多模态大模型Llava-Llama-3

6.1 安装依赖
6.2 运行模型
运行touch /root/pipeline_llava.py 新建一个文件夹,复制下列代码进去
这里执行的速度可能会有点慢,耐心等待一下,因为看着文件都不小
notion image
💡
有关这篇博客的任何问题,欢迎您在底部评论区留言,我会在github邮箱中第一时间收到邮件,让我们一起交流~
NVM——Node版本管理器VSCode 代码自动格式化
  • Giscus
Zachary_Yang
Zachary_Yang
一个普通的干饭人🍚
Announcement
🎉欢迎来到我的博客🎉
-- 亲爱的读者们,你们好! ---
👏在这里,我希望能够和你们一起分享我对生活的观察、对技术的理解和热爱,暂将博客分为以下几个栏目👏
🌿 心绪漫卷边:一些小随笔
🌌 智绘非遇路:AI领域
😊 浅笑编程边:前后端开发
🛠 技术汇流石下:零散技术分享

祝好,
Zachary_Yang