【免费下载链接】InternVL3_5-30B-A3B-MPO
InternVL3_5-30B-A3B-MPO是 OpenGVLab 开源 InternVL3.5 系列中的一款多模态大模型(MLLM),支持图片问答、多图理解与长文本对话,底层采用 Qwen3-30B-A3B 混合专家(MoE)语言模型 + InternViT-300M 视觉编码器。本教程手把手带你快速上手,10 分钟即可用transformers跑通第一个图片问答 Demo 👇
一、它是什么:30B-A3B-MPO 三个关键词
| 关键词 | 含义 |
|---|---|
| InternVL3.5 | InternVL 系列的最新一代,延续 "ViT–MLP–LLM" 架构范式,支持动态高分辨率图像切块 |
| 30B-A3B | 总参数量约 30.8B,但每次前向只激活约 3B 参数(MoE 架构),推理速度快 |
| MPO | 完成 CPT(持续预训练)+ SFT(监督微调)+ MPO(混合偏好优化,离线强化学习阶段)的中间产物,推理质量高于 Instruct 版本 |
💡 如果你追求最强推理效果,可等完整 CascadeRL 版本;想验证 MPO 训练阶段的效果或做研究,MPO 版本是首选。
二、10分钟跑通:环境准备与模型加载
1. 准备 Python 环境
官方要求transformers>=4.52.1,建议同时装好 PyTorch 与 torchvision:
pip install transformers>=4.52.1 torch torchvision2. 获取模型权重
模型权重以layer-*.safetensors分片形式存放在仓库中(共 48 个语言层分片 + 视觉塔 + 其他模块),权重分布映射见 model.safetensors.index.json:
| 文件 | 内容 |
|---|---|
vision.safetensors | InternViT 视觉编码器权重 |
layer-0 ~ layer-47-ep-0-of-1.safetensors | MoE 语言模型 48 层专家权重 |
others.safetensors | 嵌入层、归一化层等公共模块 |
| config.json | 模型结构配置(视觉塔 + Qwen3-MoE 双配置) |
# 将模型权重下载到本地 git clone https://gitcode.com/OpenGVLab/InternVL3_5-30B-A3B-MPO3. 加载模型(核心 6 行代码)
import torch from transformers import AutoTokenizer, AutoModel path = "./InternVL3_5-30B-A3B-MPO" # 本地权重目录 model = AutoModel.from_pretrained( path, torch_dtype=torch.bfloat16, low_cpu_mem_usage=True, use_flash_attn=True, trust_remote_code=True, # 必须开启:加载仓库内自定义建模代码 device_map="auto").eval() tokenizer = AutoTokenizer.from_pretrained(path, trust_remote_code=True, use_fast=False)关键点解析:
trust_remote_code=True是新手最常踩的坑:该模型使用仓库自带的 modeling_internvl_chat.py 中定义的InternVLChatModel类,而非 transformers 内置实现(配置见 config.json 的auto_map字段)。device_map="auto"会自动把模型分片到多张 GPU;30B 级别模型单张 80GB A100 即可部署 bf16 精度。- 显存吃紧时可改用 8-bit 量化加载(加
load_in_8bit=True)。
三、第一个图片问答 Demo:三步完成
完整的图像预处理代码(动态分辨率切块dynamic_preprocess、load_image等)可参考 README.md 的 Quick Start 章节,核心调用只有三步:
第 1 步:加载图片为 pixel_values
pixel_values = load_image('./examples/image1.jpg', max_num=12).to(torch.bfloat16).cuda()InternVL 的动态高分辨率策略会把图片切成最多 12 个 448×448 的块送入视觉编码器,小图只切 1 块,细节更足。
第 2 步:调用 chat 接口
generation_config = dict(max_new_tokens=1024, do_sample=True) question = '<image>\n请描述这张图片里有什么。' response = model.chat(tokenizer, pixel_values, question, generation_config) print(f'Assistant: {response}')<image>占位符会在 chat 方法 中被自动替换为视觉 token 序列,图像特征与文本特征在此融合后送入语言模型。
第 3 步:多轮追问(可选)
response, history = model.chat(tokenizer, pixel_values, question, generation_config, history=None, return_history=True) response, history = model.chat(tokenizer, pixel_values, '图中主体是什么颜色?', generation_config, history=history, return_history=True)对话模板由 conversation.py 提供,多轮历史通过history参数传递即可,无需自己拼 prompt。
四、常见问题 FAQ
Q1:显存不够 / 加载报错?
- 确认
transformers>=4.52.1,版本过低会直接报错; - 单卡放不下时使用
device_map="auto"或多卡张量并行; - 可改用 BNB 8-bit 量化(
load_in_8bit=True)省约一半显存。
Q2:必须加trust_remote_code吗?必须。模型架构InternVLChatModel由仓库内自定义代码实现(configuration_internvl_chat.py 定义配置、modeling_internvl_chat.py 定义前向逻辑),不启用远程代码将无法加载。
Q3:想让它"深度思考"?将model.system_message设置为官方 Thinking 系统提示词,并推荐do_sample=True、temperature=0.6,可显著提升数学与逻辑类图片题的表现,具体提示词见 README.md 的 Thinking Mode 小节。
Q4:想要更高吞吐的线上服务?生产部署推荐 LMDeploy 或 vLLM 框架,一行命令即可起 OpenAI 兼容的 API 服务,详见 README.md 的 Deployment 章节。
五、小结
本教程带你走完了 InternVL3_5-30B-A3B-MPO 多模态大模型的上手全流程:装环境 → 拉权重 → 加载模型 → 图片问答。接下来你可以尝试:
- 🖼️ 替换成自己的图片,测试 OCR、图表理解能力;
- 🔁 用
num_patches_list传入多张图片做对比问答; - 🚀 用 LMDeploy 把它打包成 RESTful 服务接入现有业务。
InternVL3.5 全系模型均采用 apache-2.0 协议开源,放心用于学习与商业场景,祝使用愉快 🎉
【免费下载链接】InternVL3_5-30B-A3B-MPO
相关推荐
10分钟跑通第一个Agent Skill评测:skill-up快速上手教程
10分钟跑通第一个Agent Skill评测:skill up快速上手教程 skill up 是一款用于 Agent Skill 评测与演进的开源 CLI 工具
5 分钟快速上手 InternVL2.5-26B-MPO-AWQ:LMDeploy 推理环境搭建与第一条图片问答
5 分钟快速上手 InternVL2.5 26B MPO AWQ:LMDeploy 推理环境搭建与第一条图片问答 InternVL2.5 26B MPO AWQ
如何快速上手VideoChat2?10分钟跑通第一个视频问答(含模型下载步骤)
如何快速上手VideoChat2?10分钟跑通第一个视频问答(含模型下载步骤) VideoChat2 是 OpenGVLab 开源的多模态大模型,能"看懂"视频
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考