资讯详情

InternVL3_5-30B-A3B-MPO 多模态对话实战:单图问答、多图对比到视频理解,5大核心场景一次讲透

📅 2026/10/17 11:06:35 | 华诺云谱 👁 阅读
InternVL3_5-30B-A3B-MPO 多模态对话实战:单图问答、多图对比到视频理解,5大核心场景一次讲透
【免费下载链接】InternVL3_5-30B-A3B-MPO项目地址https://ai.gitcode.com/OpenGVLab/InternVL3_5-30B-A3B-MPO点击查看免费下载InternVL3_5-30B-A3B-MPO是 OpenGVLab 开源的多模态大模型MLLM权重库属于 InternVL3.5 家族。它基于 ViT–MLP–LLM 架构语言部分采用 Qwen3-30B-A3B 混合专家MoE模型视觉部分采用 InternViT-300M 编码器。只需3B 激活参数即可驱动 30B 总参数单卡 A100 即可部署支持单图问答、多图对比、视频理解、纯文本对话与批量推理五大场景并完成 CPT SFT MPO 三阶段训练。一、先认识它模型规格与文件构成项目说明模型类型internvl_chat图像/视频 → 文本视觉编码器InternViT-300M24 层image_size448语言模型Qwen3-30B-A3B128 专家每 token 激活 8 个训练阶段CPT SFT MPO离线强化学习阶段部署门槛1 张 A100≤30B 系列依赖transformers4.52.1仓库内核心文件速览模型结构定义modeling_internvl_chat.py视觉编码器InternViTmodeling_intern_vit.py对话模板系统conversation.py模型配置分辨率/动态切片等config.json视觉权重vision.safetensors语言权重按层拆分layer-0-ep-0-of-1.safetensors 至 layer-47-ep-0-of-1.safetensors另见权重索引 model.safetensors.index.json分词器资源tokenizer_config.json、vocab.json、merges.txt、added_tokens.jsonMPO 是什么MPOMixed Preference Optimization混合偏好优化是 Cascade RL 中的离线 RL 算法目标是偏好损失 质量损失 生成损失的加权和。带 MPO 后缀的版本已完成 SFT 后的偏好对齐回答风格更贴近人类偏好但未叠加最终的在线 GSPO 阶段。若追求最强推理可关注无后缀的完整版InternVL3_5-30B-A3B。二、3 步加载模型从权重到可对话以本地路径为例16-bit 加载只需几行完整示例见 README.md Quick Start 一节import torch from transformers import AutoTokenizer, AutoModel path ./ # 本仓库目录 model AutoModel.from_pretrained( path, torch_dtypetorch.bfloat16, low_cpu_mem_usageTrue, use_flash_attnTrue, trust_remote_codeTrue).eval().cuda() tokenizer AutoTokenizer.from_pretrained(path, trust_remote_codeTrue, use_fastFalse)三个关键参数记住即可trust_remote_codeTrue模型自带custom_code必须允许加载仓库内的 modeling 文件torch_dtypetorch.bfloat16显存紧张可改为load_in_8bitTrue走 BNB 8-bit 量化多卡部署加device_mapauto自动分片。加载后的model就是InternVLChatModel见 modeling_internvl_chat.py所有场景都围绕它的chat()方法定义处和batch_chat()方法定义处展开。统一生成配置generation_config dict(max_new_tokens1024, do_sampleTrue)三、场景 1单图问答 —— 最基础也最常用的姿势单图对话的核心思路先把图片切成若干 448×448 的瓦片max_num12控制最多切片数再用image占位符告诉模型这里有一张图。pixel_values load_image(./examples/image1.jpg, max_num12).to(torch.bfloat16).cuda() question image\n请简短描述这张图片。 response model.chat(tokenizer, pixel_values, question, generation_config) print(response)单图多轮对话通过return_historyTrue拿到历史第二轮起传入history即可追问无需重复传图question image\n请详细描述这张图片。 response, history model.chat(tokenizer, pixel_values, question, generation_config, historyNone, return_historyTrue) question 根据这张图片写一首诗。 response, history model.chat(tokenizer, pixel_values, question, generation_config, historyhistory, return_historyTrue)️ 小技巧图片细节多、文字密如文档、图表把max_num调大普通照片max_num4就够能显著降低 token 消耗。四、场景 2多图对比 —— 两种方式一次学会多图对话有两种喂法官方示例都给了区别在于模型怎么数图方式 A拼接图像不传 num_patches_listpixel_values torch.cat((load_image(./examples/image1.jpg), load_image(./examples/image2.jpg)), dim0).to(torch.bfloat16).cuda() question image\n详细描述这两张图片。 response, history model.chat(tokenizer, pixel_values, question, generation_config, historyNone, return_historyTrue) question 这两张图的异同点是什么 response, history model.chat(tokenizer, pixel_values, question, generation_config, historyhistory, return_historyTrue)方式 B独立图像传 num_patches_list推荐用Image-1: image/Image-2: image显式编号模型对每张图的对应关系更准确pv1 load_image(./examples/image1.jpg, max_num12).to(torch.bfloat16).cuda() pv2 load_image(./examples/image2.jpg, max_num12).to(torch.bfloat16).cuda() pixel_values torch.cat((pv1, pv2), dim0) num_patches_list [pv1.size(0), pv2.size(0)] question Image-1: image\nImage-2: image\n详细描述这两张图片。 response model.chat(tokenizer, pixel_values, question, generation_config, num_patches_listnum_patches_list)其原理在源码中很清晰chat()会按num_patches_list中每张图的切片数把每个image占位符替换成对应数量的图像 token替换逻辑编号越清晰模型越不容易张冠李戴。五、场景 3视频理解 —— 把视频抽帧当多帧图片InternVL3_5 没有独立的视频分支而是按帧采样 → 逐帧切片 → 多帧拼接天然复用多图机制。官方示例从视频中均匀抽取 8 帧num_segments8pixel_values, num_patches_list load_video(./examples/red-panda.mp4, num_segments8, max_num1) pixel_values pixel_values.to(torch.bfloat16).cuda() video_prefix .join([fFrame{i1}: image\n for i in range(len(num_patches_list))]) question video_prefix 小熊猫在做什么 response, history model.chat(tokenizer, pixel_values, question, generation_config, num_patches_listnum_patches_list, historyNone, return_historyTrue) question 请详细描述这段视频。 response, history model.chat(tokenizer, pixel_values, question, generation_config, num_patches_listnum_patches_list, historyhistory, return_historyTrue)调参经验短视频/动作快→ 加大num_segments32 起步帧率覆盖更密长视频→ 配合bound参数只截取关键时间段帧数 × 每帧切片数就是总 token 量注意控制上下文长度SFT 阶段为 32K tokens。六、场景 4纯文本对话与批量推理 —— 别忘了它也会纯聊天纯文本pixel_values传None即可chat()会退化为普通 LLM 对话自动补占位符逻辑question 你好你是谁 response, history model.chat(tokenizer, None, question, generation_config, historyNone, return_historyTrue)批量推理batch_chat()一次处理 N 张图 N 个问题适合文档批量摘要、图片批量打标等流水线任务注意不支持多轮questions [image\n详细描述图片。] * len(num_patches_list) responses model.batch_chat(tokenizer, pixel_values, num_patches_listnum_patches_list, questionsquestions, generation_configgeneration_config)流式输出用TextIteratorStreamer 线程跑model.chat边生成边打印体验更接近聊天产品完整代码见 README.md Streaming Output 一节。七、场景 5生产部署 —— LMDeploy 一行起服务单机transformers适合开发调试线上服务推荐 LMDeploy安装后一条命令即可起 OpenAI 兼容 APIpip install lmdeploy0.9.1 lmdeploy serve api_server OpenGVLab/InternVL3_5-30B-A3B-MPO \ --server-port 23333 --tp 1 --backend pytorch之后任何支持 OpenAI 接口的客户端都能直接调用image_url里传图片即可。部署要点版本张量并行--tp≤30B含本模型1单卡 A10038B2241B-A28B8vLLM 同样支持本系列多图推理时记得调大session_len因为多张图会显著增加输入 token 数。八、进阶开启 Thinking 深度思考模式对数学、图表推理等复杂任务可设置 R1 风格的 system prompt 让模型先想再答model.system_message R1_SYSTEM_PROMPT # 提示词全文见 README generation_config dict(max_new_tokens1024, do_sampleTrue, temperature0.6)官方建议开启 Thinking 模式时使用do_sampleTrue且temperature0.6避免重复输出。对话模板系统conversation.py也内置了多种模板本模型使用internvl2_5模板见 config.json 的template字段。九、常见问题速查FAQ问题解决办法加载时报trust_remote_code相关错误加trust_remote_codeTrue并确认transformers4.52.1显存不足 OOM用load_in_8bitTrue量化或减小图片max_num多图回答串图改用方式 BImage-N:编号 num_patches_list视频回答泛泛而谈增大num_segments抽更多帧或截取关键时间段想微调本模型官方支持 InternVL、SWIFT、XTuner 等仓库微调见 README.md Finetune 一节十、写在最后InternVL3_5-30B-A3B-MPO 把大模型能力和MoE 推理效率结合得很好30B 的总参数量保证了单图问答、多图对比、视频理解、OCR 与推理任务的通用能力3B 激活参数 单卡 A100 的部署门槛让普通团队也能跑起来。建议上手顺序先单图 → 再多图 → 再视频 → 最后接入 LMDeploy 服务化配合本文五个场景的示例代码基本可以覆盖绝大多数多模态应用需求。本模型基于 Apache-2.0 协议开源商业可用若用于研究引用参考 README.md 中的 Citation 部分。赞分享【免费下载链接】InternVL3_5-30B-A3B-MPO项目地址https://ai.gitcode.com/OpenGVLab/InternVL3_5-30B-A3B-MPO点击查看免费下载相关推荐Muse-Glimmer-30B-bf16多模态玩法指南图像描述、视觉问答与视频理解一次讲透Muse Glimmer 30B bf16多模态玩法指南图像描述、视觉问答与视频理解一次讲透 Muse Glimmer 30B bf16 是 Meta 开源多玩转InternVL3-1B-AWQ多模态对话单图、多图与视频问答完整实战清单玩转InternVL3 1B AWQ多模态对话单图、多图与视频问答完整实战清单 InternVL3 1B AWQ 是上海人工智能实验室推出的开源多模态大模型如何用SWIFT和XTuner微调InternVL3_5-30B-A3B-MPO多模态大模型微调完整工作流如何用SWIFT和XTuner微调InternVL3_5 30B A3B MPO多模态大模型微调完整工作流 想用 SWIFT 和 XTuner 对 Inter创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑