参考教程链接:
https://github.com/InternLM/Tutorial/blob/camp2/lmdeploy/README.md#62-%E4%BD%BF%E7%94%A8lmdeploy%E8%BF%90%E8%A1%8C%E7%AC%AC%E4%B8%89%E6%96%B9%E5%A4%A7%E6%A8%A1%E5%9E%8Bhttps://github.com/InternLM/Tutorial/blob/camp2/lmdeploy/README.md#62-%E4%BD%BF%E7%94%A8lmdeploy%E8%BF%90%E8%A1%8C%E7%AC%AC%E4%B8%89%E6%96%B9%E5%A4%A7%E6%A8%A1%E5%9E%8B
https://www.bilibili.com/video/BV1tr421x75B/https://www.bilibili.com/video/BV1tr421x75B/
操作流程
1.LMDeploy环境部署
-
创建开发机
- 在InternStudio平台上创建开发机,选择Cuda12.2-conda镜像,避免使用Cuda11.7-conda镜像以防止兼容性问题。
-
创建conda环境
- 在InternStudio开发机上创建名为lmdeploy的conda环境,Python版本为3.10。
-
安装LMDeploy
- 激活conda环境后,安装0.3.0版本的LMDeploy。
2.LMDeploy模型对话(chat)
-
Huggingface与TurboMind
- HuggingFace是一个深度学习模型和数据集的在线托管社区。
- TurboMind是LMDeploy团队开发的高效推理引擎,支持LLaMa结构模型。
-
下载模型
- 从InternStudio开发机的共享目录或OpenXLab平台下载预训练模型。
-
使用Transformer库运行模型
- 使用Huggingface的Transformer库运行InternLM2-Chat-1.8B模型。
-
使用LMDeploy与模型对话
- 利用LMDeploy直接与模型进行对话,体验推理速度。
3.LMDeploy模型量化(lite)
-
设置最大KV Cache缓存大小
- KV Cache用于缓存键值对,提高性能和降低内存消耗。
-
使用W4A16量化
- LMDeploy使用AWQ算法实现模型4bit权重量化,提高推理性能。
(设置KV Cache最大占用比例为0.4,开启W4A16量化,以命令行方式与模型对话)
4.LMDeploy服务(serve)
-
启动API服务器
- 封装模型为API接口服务,供客户端访问。
-
命令行客户端连接API服务器
- 新建命令行客户端连接到API服务器,与模型对话。(此处以API Server方式启动 lmdeploy,开启 W4A16量化,调整KV Cache的占用比例为0.4,分别使用命令行客户端与Gradio网页客户端与模型对话。)
-
网页客户端连接API服务器
- 使用Gradio作为前端,启动网页客户端连接API服务器。
5.Python代码集成
-
Python代码集成运行1.8B模型
- 将大模型推理集成到Python代码中。
-
向TurboMind后端传递参数
- 通过创建TurbomindEngineConfig传递参数,如设置KV Cache占用比例。(使用W4A16量化,调整KV Cache的占用比例为0.4,使用Python代码集成的方式运行internlm2-chat-1.8b模型)
6.拓展部分
-
使用LMDeploy运行视觉多模态大模型llava
- 支持运行llava多模态模型,需要特定权限。(使用 LMDeploy 运行视觉多模态大模型 llava gradio demo)
-
使用LMDeploy运行第三方大模型
- LMDeploy支持多种第三方大模型。
-
定量比较LMDeploy与Transformer库的推理速度差异
- 编写速度测试脚本,比较两者的推理速度。
7.课后作业
- 完成homework.md中的作业。
8.附录
- 通过ssh转发访问远程服务器上的API服务器。
- 使用Gradio启动网页客户端进行模型对话。