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打个招呼
叫它介绍一下湖南的景点
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左右
将--cache-max-entry-count参数设置为0.5
可以看到只有28G左右
将--cache-max-entry-count参数设置为0.01,相当于禁用,可以看到显存占用确实少了很多,只有16G了,变成原来的一半了。但是这样产生的代价就是模型推理速度变慢(待了解)
3.2使用W4A16量化
使用下面一条命令,完成模型量化工作
新的HF模型被保存到
Meta-Llama-3-8B-Instruct_4bit
目录。下面使用Chat功能运行W4A16量化后的模型W4A16方法再禁用KV Cache,查看显存占用情况,直接从36G的显存占用变到7G不到!!!Amazing!!!
4 LMDeploy服务(serve)
在前面的章节,我们都是在本地直接推理大模型,这种方式为本地部署,在生产环境下,有时候需要将大模型封装为API接口服务,以供客户端进行访问。
4.1 启动API服务器
可以看到这里服务器已经通过FastAPI启动了
启动完服务器不能将其关闭,后面需要新建客户端连接该服务,同时,也可以使用Open API(Swagger UI )来查看接口具体说明,这一步由于Server在远程服务器上,所以本地需要做一下ssh转发才能直接访问。在你本地打开一个cmd窗口,输入命令如下:
PS:有关SwaggerUI的内容可以参考我的另一篇
OpenAPI(Swagger)4.2 命令行客户端连接API服务器
新建一个终端连接API服务器
就可以通过终端与模型进行对话
4.3 网页客户端(gradio)连接API服务器
新建一个终端,将Gradio作为前端,启动网页客户端
拓展部分:
5 测量推理速度(使用Imdeploy)
benchmark测试结果如图所示
我第一次尝试的时候爆显存了,调低了参数后恢复正常
6 使用LMDeploy运行视觉多模态大模型Llava-Llama-3
6.1 安装依赖
6.2 运行模型
运行
touch /root/pipeline_llava.py
新建一个文件夹,复制下列代码进去这里执行的速度可能会有点慢,耐心等待一下,因为看着文件都不小
有关这篇博客的任何问题,欢迎您在底部评论区留言,我会在github邮箱中第一时间收到邮件,让我们一起交流~
- Author:Zachary_Yang
- URL:https://notion-next-git-main-little1ds-projects.vercel.app//19e351fdc7574e3bb8b3388916d01fdb
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!