人工智能大模型模型推理服务推理引擎本地部署模型量化【免费下载链接】lmdeployLMDeploy is a toolkit for compressing, deploying, and serving LLMs.项目地址https://gitcode.com/gh_mirrors/lm/lmdeploy点击查看免费下载本篇技术指南以 Qwen2-VL-7B-Instruct 为例系统讲解如何用 LMDeploy 完成 Qwen2-VL 系列多模态大模型的部署与推理。你将掌握环境与依赖安装、基于 pipeline 的离线推理含多图多轮对话与分辨率控制技巧、基于lmdeploy serve api_server与 Docker 的在线服务搭建并了解视觉编码、mRoPE 位置编码等底层实现原理。支持范围与引擎LMDeploy 支持 Qwen-VL 系列模型具体支持情况如下表所示ModelSizeSupported Inference EngineQwen2-VL2B, 7BPyTorch从仓库源码看这一支持并不局限于文档表格列出的尺寸而是覆盖了完整的架构族。在 lmdeploy/archs.py 中Qwen2VLForConditionalGeneration、Qwen2_5_VLForConditionalGeneration等架构均被注册到 LMDeploy 的模型体系中在 lmdeploy/pytorch/models/module_map.py 中Qwen2VLForConditionalGeneration被映射到 lmdeploy/pytorch/models/qwen2_vl.py 中的同名 PyTorch 重写实现Qwen2_5_VLForConditionalGeneration则映射到 lmdeploy/pytorch/models/qwen2_5_vl.py即 Qwen2.5-VL 同样可以基于本文介绍的方式部署。本文将以 Qwen2-VL-7B-Instruct仓库内示例亦常使用 2B 版本为例演示使用 LMDeploy 部署 Qwen2-VL 系列模型的方法。安装与环境准备安装 LMDeploy 与上游依赖请参考安装文档安装 LMDeploy并安装上游 Qwen2-VL 模型库所需的依赖pip install qwen_vl_utilsqwen_vl_utils是 Qwen 官方提供的视觉工具库负责图像数据的基础处理是 Qwen2-VL 模型在 LMDeploy 中正常工作的必要依赖。基于 Docker 构建推理镜像你也可以为 Qwen2-VL 的推理构建 docker image。如果宿主机器上的 CUDA 版本12.4可以执行如下命令构建镜像git clone https://github.com/InternLM/lmdeploy.git cd lmdeploy docker build --build-arg CUDA_VERSIONcu12 -t openmmlab/lmdeploy:qwen2vl . -f ./docker/Qwen2VL_Dockerfile否则可以基于 LMDeploy cu11 的镜像来构建docker build --build-arg CUDA_VERSIONcu11 -t openmmlab/lmdeploy:qwen2vl . -f ./docker/Qwen2VL_Dockerfile查看仓库中的 docker/Qwen2VL_Dockerfile 可以理解该镜像的构成逻辑它以openmmlab/lmdeploy:latest-cu12或latest-cu11为基础镜像通过ARG CUDA_VERSIONcu12切换随后安装两个关键依赖# we use transformers to load vision part of qwen2_vl and it needs transformers v4.44.2 RUN python3 -m pip install githttps://github.com/huggingface/transformers.git RUN python3 -m pip install qwen_vl_utils值得注意的是Dockerfile 中的注释明确说明加载 Qwen2-VL 的视觉部分依赖transformers v4.44.2因此镜像内直接以源码方式安装最新版 transformers而不仅仅是固定版本的 pip 包。这也解释了为什么在线部署场景下推荐直接使用该镜像以避免本地 transformers 版本过旧导致的视觉编码器加载失败。离线推理基于 pipeline以下是使用 pipeline 进行离线推理的示例更多用法参考 VLM离线推理 pipelinefrom lmdeploy import pipeline from lmdeploy.vl import load_image pipe pipeline(Qwen/Qwen2-VL-2B-Instruct) image load_image(https://raw.githubusercontent.com/open-mmlab/mmdeploy/main/tests/data/tiger.jpeg) response pipe((fdescribe this image, image)) print(response)load_image位于lmdeploy.vl模块支持从 URL 或本地路径加载图片返回的图片对象可直接与文本 prompt 组成元组传入 pipeline。多图多轮对话Qwen2-VL 天然支持多图输入与多轮对话示例代码如下from lmdeploy import pipeline, GenerationConfig pipe pipeline(Qwen/Qwen2-VL-2B-Instruct, log_levelINFO) messages [ dict(roleuser, content[ dict(typetext, textDescribe the two images in detail.), dict(typeimage_url, image_urldict(urlhttps://raw.githubusercontent.com/QwenLM/Qwen-VL/master/assets/mm_tutorial/Beijing_Small.jpeg)), dict(typeimage_url, image_urldict(urlhttps://raw.githubusercontent.com/QwenLM/Qwen-VL/master/assets/mm_tutorial/Chongqing_Small.jpeg)) ]) ] out pipe(messages, gen_configGenerationConfig(top_k1)) messages.append(dict(roleassistant, contentout.text)) messages.append(dict(roleuser, contentWhat are the similarities and differences between these two images.)) out pipe(messages, gen_configGenerationConfig(top_k1))这里采用 OpenAI 风格的对话消息结构content是一个列表其中typetext表示文本片段typeimage_url表示图片输入支持同一轮消息中携带多张图片多轮对话则通过向messages列表追加assistant回复与下一轮user提问实现GenerationConfig(top_k1)用于控制采样策略。控制图片分辨率加速推理图片分辨率直接影响视觉 token 数量进而影响显存占用与推理延迟。Qwen2-VL 的 image processor 支持通过min_pixels/max_pixels约束输入图像的像素范围示例代码如下from lmdeploy import pipeline, GenerationConfig pipe pipeline(Qwen/Qwen2-VL-2B-Instruct, log_levelINFO) min_pixels 64 * 28 * 28 max_pixels 64 * 28 * 28 messages [ dict(roleuser, content[ dict(typetext, textDescribe the two images in detail.), dict(typeimage_url, image_urldict(min_pixelsmin_pixels, max_pixelsmax_pixels, urlhttps://raw.githubusercontent.com/QwenLM/Qwen-VL/master/assets/mm_tutorial/Beijing_Small.jpeg)), dict(typeimage_url, image_urldict(min_pixelsmin_pixels, max_pixelsmax_pixels, urlhttps://raw.githubusercontent.com/QwenLM/Qwen-VL/master/assets/mm_tutorial/Chongqing_Small.jpeg)) ]) ] out pipe(messages, gen_configGenerationConfig(top_k1)) messages.append(dict(roleassistant, contentout.text)) messages.append(dict(roleuser, contentWhat are the similarities and differences between these two images.)) out pipe(messages, gen_configGenerationConfig(top_k1))示例中min_pixels与max_pixels均设为64 * 28 * 28即固定图片总像素约为 50176。在 Qwen2-VL 中 28 是 patch 的基准尺寸该参数组合将图片缩放并裁剪到固定 token 预算内从而显著减少视觉编码与注意力计算的开销实现推理加速。分辨率控制与视觉 token 的底层原理min_pixels/max_pixels之所以有效可以从视觉模型封装 lmdeploy/vl/model/qwen2.py 的preprocess实现中一探究竟optional_keys {min_pixels, max_pixels} outputs [] for modality, image, params in images: image_kwargs {key: params[key] for key in params.keys() if key in optional_keys} result self.processor.image_processor(images[image], return_tensorspt, **image_kwargs) merge_length self.processor.image_processor.merge_size**2 image_tokens result[image_grid_thw].prod(dim1) // merge_length可以看到image_url消息中的min_pixels、max_pixels会被收集为image_kwargs原样透传给 HuggingFace 的image_processor处理器据此对图像进行缩放与填充。而视觉 token 的数量由image_grid_thw时间、高、宽的三维 grid 尺寸计算得出image_grid_thw三个维度的乘积除以merge_size**2即 2×2 patch 合并即为该图最终在语言模型输入中占据的 token 数。因此固定像素预算就等价于固定了视觉 token 的上限。在 PyTorch 后端实现 lmdeploy/pytorch/models/qwen2_vl.py 中这一计算链路与视觉编码器相互印证PatchEmbed使用 3D 卷积temporal_patch_size2, patch_size14将图像切分为 patchPatchMerger将 2×2 的相邻 patch 合并为一个 tokenVisionRotaryEmbedding与rot_pos_emb则负责为视觉特征生成基于 grid 坐标的旋转位置编码。语言模型部分通过mrope_position_ids多模态旋转位置编码将文本、图像的位置信息统一注入注意力计算这是 Qwen2-VL 在长上下文与图像-文本混合输入下仍能保持位置一致性的关键机制。在prepare_inputs_for_generation中视觉输出通过inputs_embeds.masked_scatter(image_mask[..., None], image_embeds)按image_token_id的掩码精确替换到文本 embedding 序列的对应位置。在线服务基于 api_server你可以通过lmdeploy serve api_serverCLI 工具启动服务lmdeploy serve api_server Qwen/Qwen2-VL-2B-Instruct基于 Docker 镜像启动服务也可以基于前文构建的 docker image 启动服务docker run --runtime nvidia --gpus all \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env HUGGING_FACE_HUB_TOKENsecret \ -p 23333:23333 \ --ipchost \ openmmlab/lmdeploy:qwen2vl \ lmdeploy serve api_server Qwen/Qwen2-VL-2B-Instruct命令要点说明--runtime nvidia --gpus all将全部 GPU 透传给容器-v ~/.cache/huggingface:/root/.cache/huggingface复用宿主机 HuggingFace 模型缓存避免容器内重复下载权重--env HUGGING_FACE_HUB_TOKENsecret当模型为 gated 模型时所需的访问令牌公开模型可省略-p 23333:23333将容器的 23333 端口映射到宿主机该端口为 api_server 的默认服务端口--ipchost共享宿主机 IPC 命名空间是 PyTorch 后端多进程推理的常见要求。使用 docker-compose 编排服务Docker compose 的方式也是一种选择。在 LMDeploy 代码库的根目录下创建docker-compose.yml文件内容参考如下version: 3.5 services: lmdeploy: container_name: lmdeploy image: openmmlab/lmdeploy:qwen2vl ports: - 23333:23333 environment: HUGGING_FACE_HUB_TOKEN: secret volumes: - ~/.cache/huggingface:/root/.cache/huggingface stdin_open: true tty: true ipc: host command: lmdeploy serve api_server Qwen/Qwen2-VL-2B-Instruct deploy: resources: reservations: devices: - driver: nvidia count: all capabilities: [gpu]然后执行命令启动服务docker-compose up -d通过docker logs -f lmdeploy可以查看启动的日志信息如果发现类似下方的日志信息就表明服务启动成功了HINT: Please open http://0.0.0.0:23333 in a browser for detailed api usage!!! HINT: Please open http://0.0.0.0:23333 in a browser for detailed api usage!!! HINT: Please open http://0.0.0.0:23333 in a browser for detailed api usage!!! INFO: Started server process [2439] INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:23333 (Press CTRLC to quit)日志中Application startup complete与Uvicorn running on http://0.0.0.0:23333表明服务进程已就绪此时即可通过 HTTP 接口访问该多模态推理服务。有关lmdeploy serve api_server的详细参数可以通过lmdeploy serve api_server -h查阅例如--model-name、--tp张量并行数、--max-batch-size、--cache-max-entry-count等均可按需调整。关于api_server更多的介绍以及访问api_server的方法请阅读 api_server_vl.md。更多进阶阅读若需要更丰富的离线推理用法如流式输出、视觉-语言混合输入的更多写法可继续阅读 VLM离线推理 pipeline若需要了解 api_server 的 RESTful 接口规范、请求格式与多模态消息构造可阅读 api_server_vl.md若对 Qwen2-VL 的 PyTorch 后端算子重写与权重加载细节感兴趣可直接阅读源码 lmdeploy/pytorch/models/qwen2_vl.py 与视觉模型封装 lmdeploy/vl/model/qwen2.py。本文介绍的部署路径同样适用于 Qwen2.5-VL 系列模型视觉封装类Qwen2VLModel的_arch同时包含Qwen2VLForConditionalGeneration与Qwen2_5_VLForConditionalGeneration两种架构见 lmdeploy/vl/model/qwen2.py因此在更换模型权重后即可复用同一套 pipeline 与 api_server 流程将多模态能力平滑升级到新一代模型。赞分享人工智能大模型模型推理服务推理引擎本地部署模型量化【免费下载链接】lmdeployLMDeploy is a toolkit for compressing, deploying, and serving LLMs.项目地址https://gitcode.com/gh_mirrors/lm/lmdeploy点击查看免费下载相关推荐LMDeploy 部署 Qwen2-VL 多模态模型离线推理与 OpenAI 兼容在线服务实战LMDeploy 部署 Qwen2 VL 多模态模型离线推理与 OpenAI 兼容在线服务实战 本文以 LMDeploy 为工具完整讲解 Qwen2 VL人工智能大模型模型推理服务推理引擎本地部署模型量化LMDeploy 部署 LLaVA 系列多模态模型从离线推理到在线服务完整指南LMDeploy 部署 LLaVA 系列多模态模型从离线推理到在线服务完整指南 LMDeploy 为 LLaVA 系列视觉语言模型VLM提供了从模型仓库加人工智能大模型模型推理服务推理引擎本地部署模型量化LMDeploy 部署 MiniCPM-V 系列多模态模型从离线推理到 OpenAI 兼容服务LMDeploy 部署 MiniCPM V 系列多模态模型从离线推理到 OpenAI 兼容服务 MiniCPM V 是面向端侧与云端部署的高效视觉语言模型V人工智能大模型模型推理服务推理引擎本地部署模型量化上一篇Hindsight Reflect 深度解析基于 Disposition 的 Agentic 记忆推理下一篇Tachyon 椭圆曲线扩展实战用 generate_ec_points 代码生成器添加 Short Weierstrass 曲线创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
机房温湿度监控改造:模拟传感器与RJ45以太网TCP/IP设备选型全对比 机房温湿度改造这件事,说大不大,说小也绝对不小。我前后经手过十几个机房的温湿度监控改造项目,从几十平米的小机房到上千平米的数据中心,踩过的坑比走过的路还多。最常被问到的一个问题就是:传感器和采集设备到底怎么… · 2026/9/27 12:30:12
CSS 鼠标光标样式与颜色修改:TaoToken 配置 settings.json 骨架与验证动作 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 12:30:12
发动机缸体平面度在线全检:8测点布局方案解析 发动机缸体上平面,也就是和缸盖结合的那个面,平面度要是超差,轻则密封不严渗油渗水,重则直接冲缸垫。很多机加工车间至今还在用抽检——下线后搬去三坐标或者拿刀口尺加塞尺人工比划,一百个件里能测五六个就算不错。但… · 2026/9/27 13:16:32
找口碑好的网站建设商家避坑指南:3类方案实测对比 找口碑好的网站建设商家避坑指南:3类方案实测对比 网站上线三个月,后台流量还是两位数,每天盯着数据焦虑。这种“建了个寂寞”的痛,很多SEO从业者都懂。选错技术底层的建站商家,后期优化全是死路。… · 2026/9/27 13:16:32
公司建设网站服务器必要条件与最佳实践避坑指南 公司建设网站服务器必要条件与最佳实践避坑指南 上周半夜三点,我的电话响了。客户急得声音都变了:“网站首页被黑了,全是赌博广告,赶紧处理!”那一刻我才明白,很多老板以为买个云服务器就能高枕无忧,其实 网站被黑挂马不知道怎么办… · 2026/9/27 13:16:26
VSCode 1.86 新功能实战:缩放级别、语音命令与多文件差异编辑器配置指南(附 TaoToken 接入) /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 13:16:26
3个避坑点教你选对seo扣费系统不再被域名服务器坑 3个避坑点教你选对seo扣费系统不再被域名服务器坑 很多刚入行的前端小白,一听到“seo扣费系统”就头大。 其实大家最怕的不是代码写不出来,而是域名服务器搞不懂。 到底该怎么选一套既稳定又省心的方案,今天咱们就掰开了揉碎了聊。… · 2026/9/27 13:16:26
vscode插件-查看股票行情:用TaoToken统一Key接入行情API的配置骨架 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 13:16:20
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01