☰
InternVL3_5-30B-A3B-MPO 快速上手教程:新手10分钟跑通第一个图片问答Demo
2026/10/16 15:04:16 网站建设 项目流程

【免费下载链接】InternVL3_5-30B-A3B-MPO

项目地址:https://ai.gitcode.com/OpenGVLab/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.5InternVL 系列的最新一代,延续 "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 torchvision

2. 获取模型权重

模型权重以layer-*.safetensors分片形式存放在仓库中(共 48 个语言层分片 + 视觉塔 + 其他模块),权重分布映射见 model.safetensors.index.json:

文件内容
vision.safetensorsInternViT 视觉编码器权重
layer-0 ~ layer-47-ep-0-of-1.safetensorsMoE 语言模型 48 层专家权重
others.safetensors嵌入层、归一化层等公共模块
config.json模型结构配置(视觉塔 + Qwen3-MoE 双配置)
# 将模型权重下载到本地 git clone https://gitcode.com/OpenGVLab/InternVL3_5-30B-A3B-MPO

3. 加载模型(核心 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

项目地址:https://ai.gitcode.com/OpenGVLab/InternVL3_5-30B-A3B-MPO
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询