cxl
Published on 2025-04-19 / 20 Visits
2
0

探索LMDeploy:开源跨平台大模型工具的无限可能

LMDeploy 是由上海人工智能实验室开发的专为大语言模型(LLM)和视觉-语言模型(VLM)设计的高效部署工具箱,其核心目标是通过压缩、量化和服务化技术降低模型推理成本并提升性能。没错,咱们国人团队开发的,属于国货,made in china!

一、核心功能与架构​

高效推理引擎 TurboMind

  • 连续批处理(Continuous Batch)​​:动态调整批次大小,最大化 GPU 利用率,显著提升吞吐量。

  • KV 缓存优化​:通过分块存储和动态管理 KV Cache,减少显存占用,支持长文本对话场景。

  • 张量并行与高性能 CUDA 内核​:支持多 GPU 并行计算,适配 NVIDIA 全系列显卡(如 A100、H100)。

量化技术

  • 权重量化(W4A16/AWQ)​​:将 FP16 权重量化为 INT4,显存需求降低至 1/4,推理速度提升 2.4 倍。

  • KV Cache 量化​:对注意力机制的键值缓存进行 INT8/INT4 量化,进一步优化显存占用。

服务化部署

  • 多协议接口​:支持 RESTful API、gRPC 及 OpenAI 兼容接口,便于集成到现有业务系统。

  • 有状态推理​:缓存历史对话的注意力结果,避免重复计算,提升多轮对话效率。

二、多模态与模型支持​

  • 视觉-语言模型(VLM)​​:支持 InternVL、LLaVA 等多模态模型,通过复用上游库的图像处理和视觉推理模块,简化部署流程。

  • 模型兼容性​:原生适配 Hugging Face 和 ModelScope 模型仓库,支持 InternLM、LLaMA 等主流架构。

三、部署场景与性能优势​

  1. 典型应用场景

  • 高并发在线服务​:如智能客服、实时风控系统,吞吐量可达 vLLM 的 1.8 倍。

  • 边缘设备与低资源环境​:通过 4-bit 量化在消费级 GPU(如 3090)上运行 7B 模型,显存占用仅 6-8GB。

  1. 性能基准

  • 在 A100 GPU 上,推理 13B 模型的吞吐量可达 2100 tokens/s,显存占用比 FP16 减少 40%。

  • 对比 vLLM,LMDeploy 的延迟降低至 50ms 级别,更适合实时性要求高的场景。

安装与使用

按照惯例,我们还是使用 anaconda 创建一个新环境

  conda create -n lmdeploy python=3.10 -y
  conda activate lmdeploy
  pip install lmdeploy -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com  -- 直接安装lmdeploy

以上环境皆是在 wsl子系统 上运行的

基础使用:模型对话

安装完成之后以命令行对话的模式(像ollama的run命令)运行之前已经下载好的模型

   lmdeploy chat /root/llm/models/Qwen/Qwen2.5-0.5B-Instruct -- 调整显存占用,通过-cache-max-entry-count控制KV Cache显存比例,如:lmdeploy chat /root/llm/models/Qwen/Qwen2.5-0.5B-Instruct --cache-max-entry-count 0.4

第一次运行可能会报错没有 partial_json_parser 模块,直接通过命令 pip install partial_json_parser -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com 安装就行了

服务化部署

1. 启动API服务器
  lmdeploy serve api_server \
  /root/llm/models/Qwen/Qwen2.5-0.5B-Instruct \
  --server-name 0.0.0.0 \
  --server-port 23333 \
  --tp 1  # GPU 并行数

2. 客户端连接

使用另一个窗口执行客户端连接命令

  lmdeploy serve api_client http://localhost:23333

由于lmdeploy遵循了 openai/swagger规范,所以使用apifox客户端导入也是可以的

3. web端连接

lmdeploy提供了gradio的方式开启web端页面连接服务使用,执行命令成功后可在浏览器使用对应端口打开该网页

  # 打开另一个窗口执行
  lmdeploy serve gradio http://localhost:23333 --server-port 6006   # 执行后如果报错没有gradio模块,则先用pip install安装后再执行
  # 或者在启动API服务器时一起启动gradio,加入gradio参数
  lmdeploy serve api_server \
  gradio
  /root/llm/models/Qwen/Qwen2.5-0.5B-Instruct \
  --server-name 0.0.0.0 \
  --server-port 23333 \
  --tp 1  # GPU 并行数
  

总结​

LMDeploy 是面向生产环境的高性能部署方案,尤其适合需要低延迟、高吞吐量及多模态支持的场景。其量化技术与 TurboMind 引擎的结合,显著降低了 LLM/VLM 的部署门槛和成本。开发者可通过其灵活的接口和工具链,快速实现从本地测试到云端服务的全流程部署


Comment