LMDeploy 课程
任务来源:https://aicarrier.feishu.cn/wiki/IW3HwIVZ3icIpEkd8cXcFq5NnNd
闯关任务:复现 InternVL 和 InternLM 的部署和量化提交为在线飞书文档。
说明:
1.本次课程文档涵盖广泛,相当于较为完整的用户手册,部分完全小白用户使用时,可能会有困惑,其实完成闯关任务并不需要操作所有课程内容,只是用到课程很少部分内容。此外本次课程文档并没有对其中工作内容的原理进行讲解,故本帖会对课程部分整体框架和知识点进行解析。
2.本次课程文档基于上海人工智能实验室InternStudio进行操作,在上面课程文档中部分模型路径配置存在无法使用的情况,感谢张富才进行批注修正,这样可以极大减轻初学者的操作时间,以便最快速度完成任务,提前体验部署成功体验。
3.本次课程内容非常有价值,感兴趣且有多卡童鞋可以都操练一下。
4.本帖分为三个部分完成闯关任务、课程整体介绍、不同量化方法的简要说明
一、闯关任务
1.LMDeploy 是一个高效且友好的 LLMs 模型部署工具箱,功能涵盖了量化、推理和服务
conda create -n lmdeploy python=3.8 -y
conda activate lmdeploy
pip install lmdeploy
2.源码安装
conda activate lmdeploy
git clone https://github.com/InternLM/lmdeploy.git
cd lmdeploy
pip install -e .
3.InternLM部署
说明:修改pipe = lmdeploy.pipeline("/root/share/new_models/InternVL3/InternVL3-1B")
import lmdeploy
pipe = lmdeploy.pipeline("/root/share/new_models/InternVL3/InternVL3-1B")
response = pipe(prompts=["Hi, pls intro yourself", "Shanghai is"],gen_config=GenerationConfig(max_new_tokens=1024,top_p=0.8,top_k=40,temperature=0.6))
print(response)
4.InternVL部署
from lmdeploy import pipeline, VisionConfig
from lmdeploy.vl import load_imagepipe = pipeline('/root/share/new_models/InternVL3/InternVL3-1B',vision_config=VisionConfig(max_batch_size=8))image = load_image('https://raw.githubusercontent.com/open-mmlab/mmdeploy/main/tests/data/tiger.jpeg')
response = pipe(('describe this image', image))
print(response)
3.量化部署internlm2-chat-7b
export HF_MODEL=/root/share/model_repos/internlm2-chat-7b
export WORK_DIR=/root/internlm2-chat-7b-4bit
如遇到下方问题
TypeError: 'NoneType' object is not callable
解决方法
pip uninstall -y datasets && \
pip install --no-cache-dir "datasets==2.19.2" "huggingface_hub>=0.20.0"
执行后效果如下:
4.量化部署internlm2-chat-7b
pip install timm==1.0.8
pip install --no-cache-dir datasets==2.19.2lmdeploy lite auto_awq \/root/share/new_models/InternVL3/InternVL3-1B \--work-dir /root/InternVL3-1B-4bit
执行效果如下
二、课程整体概述
1. 安装与快速上手
项目 | 说明 |
---|---|
安装 | 使用 pip 或源码安装 LMDeploy,准备部署环境 |
快速上手 | 调用 pipeline() 快速运行推理示例(文本或图文) |
2. 大语言模型(LLMs)部署
功能点 | 简洁说明 |
---|---|
1. 离线部署 | 不联网也能部署模型(需提前下载模型和依赖) |
2. 设置多卡并行 | 启用多个 GPU,提高推理速度和处理能力 |
3. 生成核心参数介绍 | 配置如 max_batch_size 、session_len 等性能参数 |
4. 部署类 OpenAI 服务 | 模拟 OpenAI 接口,便于前端接入或进行 API 测试 |
5. APIClient 接口 | 使用 Python 客户端调用本地或远程模型服务 |
6. Requests 调用 | 用 Python 的 requests 包直接发送 HTTP 请求访问模型接口 |
7. 使用 CURL 命令 | 用命令行 curl 测试接口是否正常(无需写代码) |
8. 多机多卡部署 | 在多台服务器和多张显卡上部署大模型 |
9. 使用 WebUI | 提供网页交互界面(如聊天机器人页面) |
10. 部署 Huggingface Demo | 模拟 Huggingface Spaces,快速体验模型效果 |
3. 视觉-语言模型(VLMs)部署
功能点 | 简洁说明 |
---|---|
1. 离线部署 | 本地加载图文模型(如 InternVL),无需联网 |
2. 多卡并行 | 使用多 GPU 加速图文推理 |
3. 图片 Token | 将图片转为“视觉 token”,供模型理解 |
4. 对话模板 | 配置图文对话格式(Prompt 模板) |
5. 视觉模型参数 | 设置分辨率、图像批次大小等参数 |
6. 多图推理 | 支持输入多张图片同时问答/描述 |
7. 多轮对话 | 支持图文混合的多轮连续问答 |
4. 模型量化(加速压缩)
功能点 | 简洁说明 |
---|---|
1. 量化模型 | 将模型从 FP16 压缩为 INT4、INT8 等格式,提高运行效率 |
2. 模型评测 | 对量化模型进行精度与速度的对比测试 |
3. W8A8 量化 | 权重 8bit + 激活 8bit 的量化方案 |
三、不同量化方法说明
项目 | 量化方法 | 目标对象 | 精度损失 | 优势 | 适用场景 |
---|---|---|---|---|---|
AWQ | 权重量化(Adaptive) | 权重(Weights) | ≤1.5% | 减小显存占用;适配大模型 | 离线部署、大模型微调 |
SmoothQuant | 权重 + 激活联合量化 | 权重+激活 | ≤1% | 提前平滑量纲,支持 INT8 | 在线推理;模型部署优化 |
KV Cache 量化 | 缓存数据量化 | Key/Value 缓存 | 极低(≈0.1%) | 降低内存峰值;支持更长上下文 | 多轮对话、RAG检索增强 |
量化评测 | 评估方法 | 整体模型输出 | - | 定量衡量精度变化 | 模型部署评审、选择量化策略 |