资讯详情

资讯详情

LMDeploy 部署 Molmo 系列多模态模型实战指南:TurboMind 引擎下的离线推理与在线服务

人工智能大模型模型推理服务推理引擎本地部署模型量化【免费下载链接】lmdeployLMDeploy is a toolkit for compressing, deploying, and serving LLMs.项目地址https://gitcode.com/gh_mirrors/lm/lmdeploy点击查看免费下载本文围绕 LMDeploy 对 Molmo 系列视觉语言模型VLM的支持展开完整介绍 Molmo-7B-D-0924 / Molmo-72-0924 的安装、离线 Pipeline 推理含多图多轮对话与api_server在线服务部署并结合仓库源码lmdeploy/vl/model/molmo.py剖析其 TurboMind 后端下的视觉特征提取与嵌入拼接原理。读完本文你将掌握用 LMDeploy 一条命令完成 Molmo 模型推理与服务的完整流程并理解该模型在 LMDeploy 内部是如何被处理的。支持的 Molmo 模型一览LMDeploy 目前支持 Molmo 系列中的以下两个模型均由TurboMind推理引擎承载模型参数量支持的推理引擎Molmo-7B-D-09247BTurboMindMolmo-72-092472BTurboMind其中 Molmo-7B-D-0924 是后续所有示例的默认模型。从源码结构看Molmo 目前仅注册在 TurboMind 后端路径下视觉模型实现 MolmoVisionModel 的to_pytorch()方法直接assert 0拒绝 PyTorch 引擎其架构标识_arch MolmoForCausalLMlmdeploy/vl/model/molmo.py并通过 builder.py 的from .molmo import MolmoVisionModel完成注册。在模型架构识别层面MolmoForCausalLM也被列入 archs.py 的受支持 VLM 架构集合中TurboMind 后端可以据此自动判定任务类型。安装请先按照 安装指南 完成 LMDeploy 的安装。Molmo 的离线推理与在线服务均依赖 TurboMind 后端因此请确保安装环境包含 TurboMind 相关组件。离线推理基础用法VLM PipelineLMDeploy 将多模态模型的复杂推理过程抽象为与 LLM Pipeline 一致的pipeline接口。下面的示例展示了最基本的 Molmo 图像描述用法更完整的 VLM Pipeline 说明可参考 VLM 离线推理 Pipelinefrom lmdeploy import pipeline from lmdeploy.vl import load_image pipe pipeline(allenai/Molmo-7B-D-0924) 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用于加载本地或网络图片pipeline接收(prompt, image)元组作为输入。如果执行上述代码时出现ImportError请按提示安装缺失的依赖包。多图、多轮对话与图像组合当需要同时输入多张图片并进行多轮对话时可以采用 OpenAI 风格的消息格式配合GenerationConfig控制生成参数。示例展示了先让模型详细描述两张图片再追问两者异同的完整流程from lmdeploy import pipeline, GenerationConfig pipe pipeline(allenai/Molmo-7B-D-0924, 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(do_sampleFalse)) 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(do_sampleFalse))这里的do_sampleFalse采用贪心解码保证确定性输出messages列表累加 assistant 回复与新的用户提问即可自然衔接多轮对话。多模态消息的完整格式参考图片、视频、音频、时序等模态可查阅 多模态输入。源码视角Molmo 在 TurboMind 下如何被处理理解底层实现有助于排查问题与调优。Molmo 的视觉模型实现在 lmdeploy/vl/model/molmo.py其处理链路分为三个阶段1. 预处理preprocess将文本内容拼接为 User: {text}形式的 prompt调用 HuggingFaceAutoProcessor.process()得到包含input_ids、images(n_patch, d_model)的图像 patch 特征、image_input_idx、image_masks的字典。由于 Molmo processor 会在input_ids前自动添加 BOS源码中会显式剔除第一个 tokeninput_ids result[input_ids][1:]见 molmo.py该操作与后续 TurboMind 侧的 BOS 补充逻辑相互配合。2. 视觉前向forward将images与image_masks送入 Molmo 的vision_backbone得到图像特征molmo.py随后把视觉特征按image_input_idx索引累加到文本 embedding 的对应位置完成图文嵌入融合molmo.py。因为预处理阶段已移除 BOS这里索引会统一左移 1 位对齐。3. 送入 TurboMindto_turbomind以bos_token_id若模型无 BOS 则退化为eos_token_idMolmo 与 Qwen2 类似使用 EOS 作为通用分隔符见 molmo.py作为序列起始将各段input_ids与计算好的input_embeddings、input_embedding_ranges打包返回TurboMind 引擎据此以预计算 embedding 文本 token混合方式完成后续解码。此外构建视觉模型时若由 TurboMind 承载 LLM 部分with_llmFalse源码会删除 LLM 中除 embedding 之外的模块emb_drop、ln_f、blocks、ff_out仅保留权重加载后的文本嵌入层供视觉特征融合使用molmo.py并使用no_split_module_classes[ResidualAttentionBlock, Embedding]防止大模块被切分导致显存碎片化molmo.py。关于 tokenizer 有一个值得注意的细节在 tokenizer_info.py 的注释中说明Molmo-72B-0924 的 tokenizer 中存在被填充的|image|特殊 token这些 token 不会出现在模型 lm_head 中也不会被模型生成因此在需要传入model_vocab_size的场景下应予以区分处理。在线服务通过 lmdeploy serve api_server 启动使用以下命令即可将 Molmo 模型以 OpenAI 兼容的 RESTful 服务方式启动lmdeploy serve api_server allenai/Molmo-7B-D-0924api_server的完整参数可通过lmdeploy serve api_server -h查看常用参数包括--server-port指定服务端口默认 23333、--tp设置张量并行度、--session-len指定上下文窗口最大长度、--cache-max-entry-count调整 KV Cache 占用的显存比例等详见 api_server 多模态服务指南。使用 Docker 镜像启动也可以基于官方 Docker 镜像启动服务示例将宿主机的 HuggingFace 缓存挂载进容器并通过环境变量注入 HuggingFace Hub Token下载受权限保护的模型时需要docker run --runtime nvidia --gpus all \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env HUGGING_FACE_HUB_TOKENsecret \ -p 23333:23333 \ --ipchost \ openmmlab/lmdeploy:latest \ lmdeploy serve api_server allenai/Molmo-7B-D-0924启动成功后终端会出现如下日志说明服务已正常运行在http://0.0.0.0:23333HINT: 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)访问服务服务启动后既可以在浏览器中打开http://0.0.0.0:23333查看并调试所提供 RESTful API 的详细用法也可以使用 OpenAI Python SDK 以base_urlhttp://0.0.0.0:23333/v1的方式接入。关于api_server的更多细节如/v1/chat/completions等接口的请求格式可参考 api_server 多模态服务指南。赞分享人工智能大模型模型推理服务推理引擎本地部署模型量化【免费下载链接】lmdeployLMDeploy is a toolkit for compressing, deploying, and serving LLMs.项目地址https://gitcode.com/gh_mirrors/lm/lmdeploy点击查看免费下载相关推荐LMDeploy 部署 Molmo 系列多模态模型TurboMind 引擎下的离线推理与在线服务实战LMDeploy 部署 Molmo 系列多模态模型TurboMind 引擎下的离线推理与在线服务实战 本文基于 LMDeploy 开源仓库中的 Molmo 部人工智能大模型模型推理服务推理引擎本地部署模型量化LMDeploy 部署 MiniCPM-V 系列多模态模型TurboMind 引擎下的离线推理与在线服务实战LMDeploy 部署 MiniCPM V 系列多模态模型TurboMind 引擎下的离线推理与在线服务实战 导读 本文基于 LMDeploy 开源仓库系统人工智能大模型模型推理服务推理引擎本地部署模型量化使用 LMDeploy 部署 Phi-3 系列视觉多模态模型离线推理与在线服务实战使用 LMDeploy 部署 Phi 3 系列视觉多模态模型离线推理与在线服务实战 导读 本文围绕 LMDeploy 对微软 Phi 3 系列多模态模型的官方人工智能大模型模型推理服务推理引擎本地部署模型量化上一篇手机号逆向查询QQ号3分钟快速找回账号的终极指南下一篇手机号逆向查询QQ号3分钟快速找回遗忘账号的完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →