LMDeploy 量化部署实战:国产大模型推理框架的崛起
AI InfraLMDeploy国产大模型量化部署
提到大模型推理框架,除了 vLLM、SGLang,还有一个不可忽视的国产力量 —— LMDeploy。
作为小米大模型团队开源的推理框架,LMDeploy 在国产模型支持方面有着独特优势。
LMDeploy 核心特性
| 特性 | 说明 |
|---|---|
| TurboMind | 自研推理引擎,深度优化 |
| 全量化支持 | FP16/INT8/INT4 一键量化 |
| 国产模型 | 原生支持 Qwen、ChatGLM、DeepSeek 等 |
| 高效推理 | 批处理、Prefix Cache 优化 |
安装
pip install lmdeploy
快速开始
1. 量化模型
# INT8 量化
lmdeploy lite quantize /path/to/Qwen-7B /workspace/Qwen-7B-int8
# INT4 量化(推荐)
lmdeploy lite quantize /path/to/Qwen-7B /workspace/Qwen-7B-int4 --w-bit 4 --q-bit 4
2. 启动服务
# 启动 OpenAI 兼容 API
lmdeploy serve api_server /workspace/Qwen-7B-int4 \
--server-name 0.0.0.0 \
--server-port 23333
3. Python API
from lmdeploy import pipeline, TurbomindEngineConfig
# 配置引擎
engine_cfg = TurbomindEngineConfig(
session_len=8192,
max_batch_size=64,
tp=1, # 张量并行数
)
# 创建 pipeline
pipe = pipeline("Qwen/Qwen-7B-Chat", backend_config=engine_cfg)
# 推理
response = pipe(["你好,请自我介绍"])
print(response)
TurboMind 引擎
LMDeploy 的核心是 TurboMind 引擎:
┌────────────────────────────────────────┐
│ TurboMind │
├────────────────────────────────────────┤
│ 🌊 高效计算层 │
│ - CUDA Kernel 融合 │
│ - FP16/INT8/INT4 计算优化 │
│ │
│ 💾 显存管理层 │
│ - PagedAttention │
│ - KV Cache 量化 │
│ - 动态 Batch │
│ │
│ 📡 通信层 │
│ - NCCL 集合通信 │
│ - Pipeline 并行 │
└────────────────────────────────────────┘
性能对比
| 框架 | 模型 | 吞吐量 | 显存 |
|---|---|---|---|
| vLLM | Qwen-7B | 120 tok/s | 18GB |
| LMDeploy | Qwen-7B | 145 tok/s | 16GB |
国产模型支持
LMDeploy 对国产模型有原生优化:
Qwen 系列
from lmdeploy import pipeline
# Qwen2.5 推荐配置
pipe = pipeline("Qwen/Qwen2.5-7B-Instruct")
response = pipe([
{"role": "user", "content": "讲个笑话"}
])
ChatGLM 系列
# ChatGLM3
pipe = pipeline("THUDM/chatglm3-6b")
DeepSeek 系列
# DeepSeek Coder
pipe = pipeline("deepseek-ai/deepseek-coder-33b-instruct")
实战:部署 Qwen2-14B
# 1. 安装
pip install lmdeploy
# 2. INT4 量化
lmdeploy lite quantize \
Qwen/Qwen2-14B-Instruct \
./qwen2-14b-int4 \
--w-bit 4 \
--q-bit 4 \
--batch_size 32
# 3. 启动服务
lmdeploy serve api_server \
./qwen2-14b-int4 \
--server-name 0.0.0.0 \
--port 8000 \
--tp 2 # 2卡并行
服务调用
import openai
client = openai.Client(
api_key="EMPTY",
base_url="http://localhost:8000/v1"
)
response = client.chat.completions.create(
model="qwen2-14b",
messages=[{"role": "user", "content": "什么是大语言模型?"}],
temperature=0.7,
max_tokens=512
)
print(response.choices[0].message.content)
性能优化技巧
1. 批处理配置
engine_cfg = TurbomindEngineConfig(
max_batch_size=128, # 增大 batch
max_session_len=16384, # 更长上下文
cache_max_entry_count=50, # KV Cache 缓存数
)
2. Prefix Caching
# 启用前缀缓存(对多轮对话有效)
engine_cfg = TurbomindEngineConfig(
enable_prefix_cache=True,
)
3. 张量并行
# 多卡部署
engine_cfg = TurbomindEngineConfig(
tp=4 # 4卡并行
)
与 vLLM 对比
| 特性 | vLLM | LMDeploy |
|---|---|---|
| 性能 | ★★★★☆ | ★★★★★ |
| 国产模型 | 一般 | ★★★★★ |
| 易用性 | ★★★★★ | ★★★★☆ |
| 生态 | ★★★★★ | ★★★☆☆ |
| 更新频率 | 高 | 高 |
总结
LMDeploy 值得关注的点:
- TurboMind 引擎:自研高效推理
- 国产模型优化:Qwen、ChatGLM、DeepSeek 原生支持
- 一键量化:INT8/INT4 轻松搞定
- 活跃开发:小米团队持续维护
如果你主要使用国产大模型,LMDeploy 是非常值得尝试的选择!
下期预告:Ollama 本地部署完全指南