LMDeploy 技术通识:从 TurboMind 到零部署玩的通吃手册

211 阅读7分钟

在这里插入图片描述

开源地址:InternLM 团队的 LMDeploy GitHub:github.com/InternLM/lm… (GitHub)

LMDeploy 是一个覆盖 压缩(量化)—推理—服务 的一体化工具包,双引擎(TurboMind / PyTorch)可选,既追求极致性能,也兼顾易用性;支持海量 LLM / VLM,提供 OpenAI 兼容服务与离线 Pipeline,并内置 KV Cache INT4/INT8 在线量化 等特性。官方近期还加入了 MXFP4DeepSeek 系列加速组件PD 分离部署生态集成 等前沿优化。(GitHub)


1. 项目简介

LMDeploy 由 MMRazor / MMDeploy 团队联合开发,目标是为 LLM/VLM 的压缩、部署与服务 提供“拿来即用”的全链路方案:

  • 双引擎架构
    • TurboMind:C++/CUDA 实现,追求极致吞吐与时延(连续批处理、Blocked KV、动态 split & fuse、并行切分、自研高性能 kernel 等)。
    • PyTorch Engine:纯 Python,更易于二开和实验(已支持 Ascend/图模式、CUDA Graph 等)。(GitHub)
  • 高效量化:权重与 KV Cache 在线量化(INT8/INT4),在不显著牺牲质量的前提下降低显存、提升并发。(LMDeploy)
  • 服务形态:OpenAI 兼容 api_server,以及 请求分发(多模型/多机多卡) 的代理服务。(LMDeploy)

最新进展速览(2025):TurboMind 支持 MXFP4(V100+ 可用),在 H800 上推理 gpt-oss 模型性能可达 vLLM 的 1.5×;引入 DeepSeek 系列优化(FlashMLA/DeepGemm/DeepEP/MicroBatch/eplb 等)及 PD 分离部署 生态(DLSlime、Mooncake)。(GitHub)


2. 性能与工程要点

  • 吞吐优势:在多种规模模型上,LMDeploy(TurboMind)在 RPS 上可比 vLLM 提升 ~1.3×—1.8×;4-bit 推理相对 FP16/BF16 常见可达 ~2.4× 的 token/s 提升(小 batch 更明显)。(GitHub)
  • 显存与并发KV Cache INT4/INT8 在线量化 + 持续批处理,可显著降低并发单连接的 VRAM 占用、提高同时会话数。(LMDeploy)
  • 最新精度/硬件特性MXFP4FP8 路线在 Hopper/Ampere 代 GPU 上进一步释放吞吐—延迟平衡;与 PD 分离部署生态(MoE/超长上下文/海量并发)结合后,易于做跨节点 KV 远端化Prefill/Decode 解耦。(AI工具集)

实战提示:在生产环境里,优先结合 连续批处理 + KV 量化 + 长上下文优化(如 Automatic Prefix Caching)与 合理的并行策略(TP/PP/EP/MoE),可在稳定性、成本与 QPS 之间拿到更优折中。(GitHub)


3. 支持的模型

LLMs VLMs
  • Llama (7B - 65B)
  • Llama2 (7B - 70B)
  • Llama3 (8B, 70B)
  • Llama3.1 (8B, 70B)
  • Llama3.2 (1B, 3B)
  • InternLM (7B - 20B)
  • InternLM2 (7B - 20B)
  • InternLM3 (8B)
  • InternLM2.5 (7B)
  • Qwen (1.8B - 72B)
  • Qwen1.5 (0.5B - 110B)
  • Qwen1.5 - MoE (0.5B - 72B)
  • Qwen2 (0.5B - 72B)
  • Qwen2-MoE (57BA14B)
  • Qwen2.5 (0.5B - 32B)
  • Qwen3, Qwen3-MoE
  • Baichuan (7B)
  • Baichuan2 (7B-13B)
  • Code Llama (7B - 34B)
  • ChatGLM2 (6B)
  • GLM-4 (9B)
  • GLM-4-0414 (9B, 32B)
  • CodeGeeX4 (9B)
  • YI (6B-34B)
  • Mistral (7B)
  • DeepSeek-MoE (16B)
  • DeepSeek-V2 (16B, 236B)
  • DeepSeek-V2.5 (236B)
  • Mixtral (8x7B, 8x22B)
  • Gemma (2B - 7B)
  • StarCoder2 (3B - 15B)
  • Phi-3-mini (3.8B)
  • Phi-3.5-mini (3.8B)
  • Phi-3.5-MoE (16x3.8B)
  • Phi-4-mini (3.8B)
  • MiniCPM3 (4B)
  • gpt-oss (20B, 120B)
  • LLaVA(1.5,1.6) (7B-34B)
  • InternLM-XComposer2 (7B, 4khd-7B)
  • InternLM-XComposer2.5 (7B)
  • Qwen-VL (7B)
  • Qwen2-VL (2B, 7B, 72B)
  • Qwen2.5-VL (3B, 7B, 72B)
  • DeepSeek-VL (7B)
  • DeepSeek-VL2 (3B, 16B, 27B)
  • InternVL-Chat (v1.1-v1.5)
  • InternVL2 (1B-76B)
  • InternVL2.5(MPO) (1B-78B)
  • InternVL3 (1B-78B)
  • InternVL3.5 (1B-241BA28B)
  • Intern-S1 (241B)
  • Intern-S1-mini (8.3B)
  • Mono-InternVL (2B)
  • ChemVLM (8B-26B)
  • CogVLM-Chat (17B)
  • CogVLM2-Chat (19B)
  • MiniCPM-Llama3-V-2_5
  • MiniCPM-V-2_6
  • Phi-3-vision (4.2B)
  • Phi-3.5-vision (4.2B)
  • GLM-4V (9B)
  • GLM-4.1V-Thinking (9B)
  • Llama3.2-vision (11B, 90B)
  • Molmo (7B-D,72B)
  • Gemma3 (1B - 27B)
  • Llama4 (Scout, Maverick)
------

4. 快速开始

4.1 安装

建议在 conda 干净环境(Python 3.9–3.13)安装。官方 v0.3.0+ 预编译包默认基于 CUDA 12;GeForce RTX 50 系列可选 CUDA 12.8 的 wheel。(GitHub)

# 新建环境
conda create -n lmdeploy python=3.10 -y
conda activate lmdeploy

# 安装稳定版(CUDA 12 系)
pip install lmdeploy

CUDA 12.8(50 系)示例:

export LMDEPLOY_VERSION=0.10.0
export PYTHON_VERSION=310
pip install \
  https://github.com/InternLM/lmdeploy/releases/download/v${LMDEPLOY_VERSION}/lmdeploy-${LMDEPLOY_VERSION}+cu128-cp${PYTHON_VERSION}-cp${PYTHON_VERSION}-manylinux2014_x86_64.whl \
  --extra-index-url https://download.pytorch.org/whl/cu128

(GitHub)

需要 CUDA 11+ 或源码编译,请查阅官方 Installation。(GitHub)

4.2 零样本推理(离线 Pipeline)

import lmdeploy

with lmdeploy.pipeline("internlm/internlm3-8b-instruct") as pipe:
    res = pipe(["Hi, pls intro yourself", "Shanghai is"])
    print(res)
  • 默认从 Hugging Face 拉取模型;如需 ModelScopeOpenMind Hub,安装对应 SDK 并设置环境变量:
    • pip install modelscope && export LMDEPLOY_USE_MODELSCOPE=True
    • pip install openmind_hub && export LMDEPLOY_USE_OPENMIND_HUB=True 更多 Pipeline 选项详见文档。(GitHub)

4.3 一键开服务(OpenAI 兼容)

# 单机多卡,OpenAI 兼容协议
lmdeploy serve api_server \
  --model internlm/internlm3-8b-instruct \
  --tp 2 --session-len 8192 --cache-max-size-mb 55000
  • API 用法与 OpenAI SDK 基本一致;多模型/多机多卡请用 Request Distributor(代理服务)。(LMDeploy)

4.4 开启 KV Cache 在线量化(降显存 / 提并发)

# INT4/INT8 KV Cache 示例(按引擎参数名设置)
lmdeploy serve api_server \
  --model internlm/internlm3-8b-instruct \
  --kv-int4 true \
  --cache-max-size-mb 55000

KV Cache 在线量化自 v0.4.0 起提供,采用非对称 per-head、per-token 策略;官方已移除旧的“离线 kv 量化”方案。(LMDeploy)


5. “零部署”玩法(免服务器 / 轻运维)

如果你暂时不想搭服务,可以直接使用 离线 Pipeline 在本机做批量推理;或在 Colab / Notebook 里跑起来,不涉及长期常驻进程与端口暴露:

  • 官方 Quick Start 提供 离线推理 代码段与 Colab 入口;
  • 若需要临时对外提供 API,可在本地短时启动 api_server,或考虑云上即开即用(如 Vast.ai 社区教程)。(LMDeploy)

对于只做评测与离线处理的场景(例如生成数据集、跑对齐脚本、做大规模文本生成),只用 lmdeploy.pipeline 即可,既无需额外网关/负载均衡,也避免服务面暴露带来的安全面与成本。(LMDeploy)


6. 与同类的差异点

  • 性能优先的 TurboMind:对标 vLLM 的同时,突出连续批处理、Blocked KV、CUDA Graph 等工程优化;在多项测试中给出 ~1.3×—1.8× 的吞吐领先,且在新硬件/新数值格式(如 MXFP4)上快速迭代。(GitHub)
  • 量化覆盖全链路:权重 + KV Cache 在线量化,同时提供长上下文的 Prefix Caching 等配套能力。(GitHub)
  • 生态可插拔:与 DeepSeek 系列低层优化组件、PD 分离部署(Mooncake / DLSlime)协同,便于大规模推理与跨节点缓存流动。(GitHub)

7. 实战建议与排坑清单

  1. 优先选 TurboMind(对性能敏感):
  • 开启 连续批处理KV 在线量化CUDA Graph(在 PyTorch 引擎亦可见收益),并结合 session-lencache-max-size-mb 进行容量规划。(LMDeploy)
  1. 模型仓与下载
  • HF 默认;国内网络可切换 ModelScopeOpenMind Hub;注意不同平台的 chat template 兼容(lmdeploy list 查看)。(GitHub)
  1. 多模型/多卡/多机
  • 单机:api_server + --tp/--pp 等并行参数;
  • 多模型/多机:Request Distributor(代理服务)按路由/负载均衡转发。(LMDeploy)
  1. MoE / DeepSeek 系列
  • 若追求极致成本/吞吐,关注 PD 分离KV 远端化 实践,并结合 微批/MicroBatch 取平衡。(LMSYS)

9. 小结

对于“既要上量、又要省成本,还得易二开”的团队,LMDeploy 提供了一个颇为均衡的落地路径:

  • TurboMind 兜底性能,PyTorch 引擎保障研发迭代速度;
  • 在线 KV 量化 + 连续批处理给出可感知的并发提升;
  • 生态上不断拥抱新硬件/新数值与大规模分布式方案。 如果你的场景是 离线数据生成/评测,甚至不部署服务也能借助 Pipeline 高效完成绝大部分工作负载;若要跑线上流量,再开启 api_server 与代理服务即可渐进式演进。