news 2026/10/19 1:54:22

拆解ViT-MLP-LLM架构:InternVL3-14B-Instruct多模态大模型中InternViT-300M与Qwen2.5-14B的融合奥秘

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
拆解ViT-MLP-LLM架构:InternVL3-14B-Instruct多模态大模型中InternViT-300M与Qwen2.5-14B的融合奥秘

【免费下载链接】InternVL3-14B-Instruct

项目地址:https://ai.gitcode.com/OpenGVLab/InternVL3-14B-Instruct
点击查看免费下载

InternVL3-14B-Instruct是上海 AI Lab 开源的视觉-语言多模态大模型(MLLM),采用经典的ViT-MLP-LLM三段式架构:由约 3 亿参数的视觉编码器InternViT-300M提取图像特征,经两层MLP投影器对齐维度,再交给Qwen2.5-14B语言模型生成回答。本文带你快速拆解这三大组件如何融合,以及动态分辨率、Pixel Shuffle 等关键设计背后的原理。

上面这只小熊猫,正是项目 examples/ 目录里的示例图——模型能描述它、回答关于它的问题,靠的就是下面这套架构。

一、三大组件全景:14.5B 参数从哪里来?

查看权重索引文件 model.safetensors.index.json,整个模型共925 个张量,按前缀可分为三部分:

组件张量数参数量级源码入口
视觉编码器 vision_model340~300Mmodeling_intern_vit.py
投影器 mlp16~20Mmodeling_internvl_chat.py
语言模型 language_model579~14B(Qwen2.5-14B)modeling_internvl_chat.py

权重以 bfloat16 存储,总计约 30GB(7 个分片 safetensors),对应约 145 亿参数。这种"ViT + MLP + LLM"的组合是 InternVL 系列延续多代的核心范式,简单却高效。

二、ViT 部分:InternViT-300M 与动态分辨率

视觉配置在 config.json 的vision_config字段中:

  • patch_size = 14:图像被切成 14×14 的小块送入 ViT;
  • force_image_size = 448:每个图块固定 448×448 像素;
  • 448÷14 = 32,即一张图块产生 32×32 =1024 个视觉 token;
  • 网络共 24 层 Transformer,hidden_size = 1024,整体约 3 亿参数。

InternVL3 支持动态分辨率(config.json 中min_dynamic_patch: 1、max_dynamic_patch: 12):大图会被自动切分成最多 4×3 = 12 个 448×448 图块(最高 1344×896 分辨率),并额外生成一张 448×448 缩略图(use_thumbnail: true)。这样小图不浪费算力,大图细节也不丢失,多图与视频输入同样适用。

三、MLP 部分:256 个 token 的"瘦身"魔法

如果直接把 1024 个视觉 token 喂给 LLM,序列会爆炸。InternVL3 用Pixel Shuffle把 token 数压到1/4:

  1. 在 extract_feature 中取出 ViT 输出,去掉 CLS token;
  2. pixel_shuffle 按downsample_ratio: 0.5(config.json)将相邻 2×2 的 token 特征合并,1024 →256 个 token,特征维度相应放大 4 倍(1024→4096);
  3. 最后经 mlp1 投影器:LayerNorm → Linear(4096→5120) → GELU → Linear(5120→5120),把视觉特征对齐到 LLM 的 5120 维隐层空间。

这个两层 MLP 就是视觉与语言之间的"翻译官",仅 6 个张量(4 个权重 + 2 个偏置),参数占比不足 0.2%,却承担了跨模态对齐的全部工作。每个 448×448 图块在 forward 中会替换掉提示词里 256 个<IMG_CONTEXT>占位符,视觉信息就此融入文本序列。

四、LLM 部分:Qwen2.5-14B 的能力底座

语言部分采用Qwen2.5-14B(配置见 config.json 的llm_config):

  • 48 层 Transformer,hidden_size = 5120,intermediate_size = 13824;
  • 40 个注意力头 + 8 个 KV 头(GQA 分组查询注意力),推理更快更省显存;
  • 词表 151674,支持 32K 动态 RoPE 长上下文,bfloat16 精度。

InternVL3 的一大亮点是Native Multimodal Pre-Training:语言与视觉在同一个预训练阶段交替学习,因此纯文本能力甚至超过原版 Qwen2.5-14B。此外 InternVL3 引入了V2PE(Variable Visual Position Encoding),为视觉 token 使用更小、更灵活的位置增量,显著提升了长文档、多图文交错场景的理解能力。

五、数据流动向图:一次问答的完整旅程 🧭

以 examples/image1.jpg 配问题"图中是什么动物?"为例:

  1. 图像被预处理成 1~12 个 448×448 图块,<image>占位符在 batch_chat 中展开为num_image_token × 图块数个<IMG_CONTEXT>(每图块 256 个);
  2. 图块送入 InternViT-300M → Pixel Shuffle → mlp1,得到视觉特征向量;
  3. 特征替换掉对应占位符的 embedding,与文本 embedding 拼接成统一序列;
  4. Qwen2.5-14B 基于对话模板(conversation.py 中internvl2_5模板)逐 token 生成回答。

配置总开关集中在 InternVLChatConfig:template(对话模板)、ps_version: v2(修正了 v1 转置 bug 的 Pixel Shuffle 版本)、select_layer: -1(取 ViT 最后一层输出)等,调参时改 config.json 即可。

六、快速上手:如何加载 InternVL3-14B-Instruct?

先 clone 仓库:

git clone https://gitcode.com/OpenGVLab/InternVL3-14B-Instruct

然后用 HuggingFace Transformers 加载(模型自带自定义代码,需开启trust_remote_code):

from transformers import AutoTokenizer, AutoModel model_dir = "InternVL3-14B-Instruct" tokenizer = AutoTokenizer.from_pretrained(model_dir, trust_remote_code=True) model = AutoModel.from_pretrained( model_dir, torch_dtype="auto", device_map="auto", trust_remote_code=True, )

调用model.chat(tokenizer, pixel_values, question)即可对话,完整示例见 README.md 的 Quick Start 部分。单卡 16GB 显存(bfloat16)即可运行,非常适合本地部署体验。

七、总结:为什么是 ViT-MLP-LLM?

设计点作用
InternViT-300M + 448px 动态切块小模型 + 高分辨率,细节捕捉强
Pixel Shuffle (0.5)视觉 token 减至 1/4,大幅降低 LLM 计算量
两层 MLP 投影器以极低成本完成视觉-语言维度对齐
Qwen2.5-14B + Native 多模态预训练文本与多模态能力双高
V2PE 可变视觉位置编码长上下文、多图交错理解更准

InternVL3-14B-Instruct 证明了:不需要 6B 的大视觉塔,靠动态分辨率 + token 压缩 + 强 LLM 底座的巧妙组合,14B 规模就能拿下多模态基准前列。理解了 ViT、MLP、LLM 三者的分工与数据流,你就能读懂绝大多数开源 MLLM 的架构本质。

📌延伸阅读:权重映射详见 model.safetensors.index.json,视觉网络细节见 modeling_intern_vit.py,对话模板见 conversation.py。

【免费下载链接】InternVL3-14B-Instruct

项目地址:https://ai.gitcode.com/OpenGVLab/InternVL3-14B-Instruct
点击查看免费下载
上一篇:Harbor 用户管理测试实战:DB 模式下非管理员用户修改密码的验证与实现剖析
下一篇:平安银行「卖出」决策报告深度解析:TradingAgents-CN 多智能体辩论如何生成投资决策报告

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/19 1:54:22

2026 年智能锁怎么选?一份不堆榜单的品牌格局参考

2026 年上半年,中国智能门锁市场出货量与上一年同期相比有所回落,但行业集中度不降反升——头部几大品牌合计占据了过半的市场份额。与此同时,豆包、文心一言、元宝等 AI 问答平台在回答"智能锁推荐"类问题时,越来越倾向于引用头部品牌的公开资料和第三方行业报告…

作者头像 李华
网站建设 2026/10/19 1:53:53

3D医学影像分类实战:从npz数据读取到PyTorch模型训练全流程

简介&#xff1a;这份机器学习大作业提供了一套完整的3D医学影像分类实现&#xff0c;包含Python源代码与配套文档说明&#xff0c;适合计算机、电子信息工程、数学等专业学生用于课程设计、期末大作业或毕业设计。项目以CSV文件组织训练与验证标签&#xff0c;以大量NPZ文件保…

作者头像 李华
网站建设 2026/10/19 1:53:52

kill极域的n种方法

kill极域的n种方法 现在的许多杀极域的方法在最新版都失效了&#xff0c;在机房里&#xff0c;我实践了n种方法杀掉了极域&#xff1a; 比较老的版本也适用 老版本可以用JiyuTrainer 方法1&#xff0c;资源监视器&#xff1a; 打开 打开方法1&#xff0c;通过任务管理器打…

作者头像 李华
网站建设 2026/10/19 1:53:43

GDRE Tools 实战指南:从 PCK 到可运行 Godot 项目的完整恢复

GDRE Tools 实战指南&#xff1a;从 PCK 到可运行 Godot 项目的完整恢复 【免费下载链接】gdsdecomp Godot reverse engineering tools 项目地址: https://gitcode.com/GitHub_Trending/gd/gdsdecomp GDRE Tools 是一款 Godot 逆向工程工具&#xff0c;能完成 GDScript …

作者头像 李华
网站建设 2026/10/19 1:53:43

UVR5 人声分离:一首歌拆出人声与伴奏的 5 步操作教程

UVR5 人声分离&#xff1a;一首歌拆出人声与伴奏的 5 步操作教程 【免费下载链接】ultimatevocalremovergui GUI for a Vocal Remover that uses Deep Neural Networks. 项目地址: https://gitcode.com/GitHub_Trending/ul/ultimatevocalremovergui 翻唱投稿总被提示&q…

作者头像 李华
网站建设 2026/10/19 1:53:05

BT 下载慢?用每日更新的公共 Tracker 列表把节点连接补满

BT 下载慢&#xff1f;用每日更新的公共 Tracker 列表把节点连接补满 【免费下载链接】trackerslist Updated list of public BitTorrent trackers 项目地址: https://gitcode.com/GitHub_Trending/tr/trackerslist 晚上到家点开下载任务&#xff0c;进度条几乎不动。打…

作者头像 李华