news 2026/10/18 1:57:17

一图读懂InternVL3-14B-Pretrained模型架构:InternViT-300M、MLP投影器与Qwen2.5-14B如何协同工作

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
一图读懂InternVL3-14B-Pretrained模型架构:InternViT-300M、MLP投影器与Qwen2.5-14B如何协同工作

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

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

InternVL3-14B-Pretrained 是上海 AI Lab OpenGVLab 团队推出的多模态大语言模型(MLLM)预训练版本,采用经典的ViT-MLP-LLM三段式架构:视觉编码器InternViT-300M负责"看懂"图像,随机初始化的MLP 投影器负责"翻译"视觉特征,语言模型Qwen2.5-14B负责"理解并组织"最终回答。本文带你一图读懂这三者如何协同工作 🧩。

整体架构总览:三大组件如何分工

InternVL3-14B-Pretrained 与 InternVL 2.5 及其前身保持同一架构范式,整体由三大组件串联而成:

组件角色对应实现通俗比喻
InternViT-300M视觉编码器modeling_intern_vit.py👀 眼睛:把像素变成特征
MLP 投影器(mlp1)特征对齐桥梁modeling_internvl_chat.py🌉 翻译官:把视觉特征"翻译"成 LLM 能懂的向量
Qwen2.5-14B语言模型(大脑)modeling_internvl_chat.py🧠 大脑:推理并生成文字

三者被统一封装在InternVLChatModel类中,完整定义位于 modeling_internvl_chat.py,配置入口是 configuration_internvl_chat.py。

图像预处理:动态分辨率与 448×448 分块

在进入 InternViT-300M 之前,图像会先经过一套动态分辨率策略(README 中称为 dynamic resolution):

  1. 切成 448×448 的小块(tile):每张图按宽高比被划分为1×1到12×12不等的方块,块数越多,细节看得越清;
  2. 缩略图(thumbnail)机制:当图像被分成多块时,会额外附加一张 448×448 的整体缩略图,让模型"先看全局、再看局部";
  3. 块数上下限:由 config.json 中的min_dynamic_patch: 1与max_dynamic_patch: 12控制。

仓库自带的示例图片 examples/image1.jpg 就是一次标准输入的原始素材——它会先被load_image动态切块,再送入视觉塔。

第一站 InternViT-300M:视觉编码器

InternViT-300M-448px-V2_5是 InternVL 系列自研的 Vision Transformer,专门在 448 像素输入分辨率上增量预训练,约 3 亿参数,轻量却高效。它的工作流程(见 InternVisionEmbeddings):

  • Patch 化:通过卷积把图像切成14×14像素的小块(patch_size: 14),每个块变成一个向量;
  • 位置编码:拼接可学习的位置嵌入(position_embedding),让模型知道每个块在图中的位置;
  • 多层 Transformer:逐层做自注意力与前馈计算,输出每个块的语义特征。

超参数集中在 configuration_intern_vit.py,例如image_size=448、patch_size=14、qkv_bias、qk_normalization等。

第二站 MLP 投影器:像素重排 + 特征"翻译"

视觉特征还不能直接喂给 Qwen2.5-14B,中间要过两道工序,都在 extract_feature 中完成:

  1. Pixel Shuffle(像素重排降采样):pixel_shuffle 将相邻的 2×2 特征块合并成一个,通道数 ×4、token 数缩为原来的 1/4(downsample_ratio: 0.5)。这一步大幅减少送进 LLM 的视觉 token 数量,省显存、提速;
  2. MLP 投影器(mlp1):结构为LayerNorm → Linear → GELU → Linear(源码 L78-L83),把降采样后的视觉向量映射到 LLM 的隐藏维度。值得注意的是,它采用随机初始化——不单独做对齐训练,而是靠原生多模态预训练(Native Multimodal Pre-Training)一步到位,这也是 InternVL3 相比前代的重要简化。

算一笔账:每块 448×448 图像经 ViT 输出32×32=1024个 patch 特征,降采样后为256 个视觉 token,最多 12 块即 3072 个 token,规模完全可控。

第三站 Qwen2.5-14B:视觉 token 如何"注入"大脑

Qwen2.5-14B是 InternVL3-14B 的语言组件,提供推理、生成与多语言能力。视觉信息注入的机制非常优雅:

  • 对话模板把用户消息中的<image>展开为<img>+ 256×块数个<IMG_CONTEXT>+</img>(模板见 conversation.py,特殊 token 定义在 added_tokens.json 中);
  • 前向时,forward 会把 MLP 输出的视觉向量逐位替换到<IMG_CONTEXT>对应的嵌入位置上(generate 中的注入逻辑 L322-L334);
  • 对 LLM 而言,图像就像一段"特殊词汇"混在文字中间,它用统一的自注意力同时理解图文。

InternVL3 还引入了V2PE(Variable Visual Position Encoding,可变视觉位置编码),为视觉 token 使用更小、更灵活的位置增量,显著提升了长上下文理解能力。得益于原生多模态预训练,InternVL3 的纯文本能力甚至超过了它所用的 Qwen2.5 底座 📈。

完整数据流:一张图的"旅程"

把三站串起来,一张图到一条回答的完整链路是:

原始图像 → 动态切块(448×448,1~12 块)+ 缩略图 → InternViT-300M:patch 化 → 多层 Transformer → 视觉特征 → Pixel Shuffle:token 数 ÷ 4 → MLP 投影器(mlp1):映射到 LLM 隐藏维度 → <IMG_CONTEXT> 占位符替换:视觉向量注入文本序列 → Qwen2.5-14B:图文联合注意力 → 逐 token 生成回答

这套流程支持单图、多图、视频帧等多种输入,也是 InternVL3 家族(1B~78B)共享的通用架构。

模型文件解析:仓库里的关键资料

文件作用
config.json总配置:force_image_size、downsample_ratio、dynamic_image_size等核心超参
modeling_internvl_chat.py主模型:三大组件的组装、特征提取与生成入口
modeling_intern_vit.pyInternViT 视觉编码器实现(含 FlashAttention 加速)
configuration_intern_vit.py / configuration_internvl_chat.pyViT 与主模型的配置类
conversation.py对话模板(internvl2_5 模板)
model-00001-of-00007.safetensors 等 7 个分片模型权重,由 model.safetensors.index.json 索引
tokenizer.json / vocab.json / merges.txtQwen2.5 分词器文件
README.md官方说明:架构介绍、推理示例、部署与微调指引

快速上手:加载 InternVL3-14B 最小示例

使用transformers(≥4.37.2)加载只需几行,完整示例见 README.md 的 Quick Start 部分:

from transformers import AutoModel, AutoTokenizer import torch path = "OpenGVLab/InternVL3-14B-Pretrained" model = AutoModel.from_pretrained( path, torch_dtype=torch.bfloat16, low_cpu_mem_usage=True, use_flash_attn=True, trust_remote_code=True, ).eval().cuda() tokenizer = AutoTokenizer.from_pretrained(path, trust_remote_code=True, use_fast=False)

加载后即可调用model.chat(tokenizer, pixel_values, question, generation_config)进行单图、多图或视频对话。

总结

  • InternViT-300M是"眼睛":448px 输入、14px patch,输出细粒度视觉特征;
  • MLP 投影器是"翻译官":Pixel Shuffle 先砍掉 3/4 的 token,再用随机初始化的两层 MLP 对齐到 LLM 维度;
  • Qwen2.5-14B是"大脑":视觉向量通过<IMG_CONTEXT>占位符无缝注入文本流,配合 V2PE 实现长上下文图文理解。

三大组件解耦清晰、各司其职,这正是 ViT-MLP-LLM 范式优雅的地方——想升级"眼睛"或"大脑",替换任意一端即可,其余组件无需改动。🚀

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

项目地址:https://ai.gitcode.com/OpenGVLab/InternVL3-14B-Pretrained
点击查看免费下载
上一篇:Visual Studio Code Remote - SSH 实战技巧:SSH 配置文件、ProxyCommand 与 ControlMaster 进阶指南
下一篇:Natron RGB709ToLab 节点详解:Rec.709(D65)到 CIE L*a*b 色彩空间转换

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

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

AI建站实战:从生成到自动部署,彻底解决网站更新难题

1. AI建站到底怎么解决“没时间更新”这个死结先说一个我身边的真实状态&#xff1a;白天被各种会议、需求、工单塞满&#xff0c;晚上回家只想躺着刷手机&#xff0c;连自己网站后台多久没登录都记不清了。每次想起来“该更新了”&#xff0c;又觉得从头改页面、调样式、写文案…

作者头像 李华
网站建设 2026/10/18 1:55:59

ComfyUI-LTXVideo 完整攻略:LTX-2 视频生成从 0 到出片一次到位

ComfyUI-LTXVideo 完整攻略&#xff1a;LTX-2 视频生成从 0 到出片一次到位 【免费下载链接】ComfyUI-LTXVideo LTX-Video Support for ComfyUI 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI-LTXVideo ComfyUI-LTXVideo 是 ComfyUI 生态里最完整的 LTX-2 …

作者头像 李华
网站建设 2026/10/18 1:55:11

ChainEdit: Propagating Ripple Effects in LLM Knowledge Editing through Logical Rule-Guided Chains

文章主要内容总结 本文针对大语言模型(LLMs)知识编辑中存在的“涟漪效应”问题(即编辑某一知识后,难以同步更新逻辑关联的其他知识,导致逻辑不一致),提出了名为ChainEdit的框架。该框架通过整合知识图谱(KG)提取的逻辑规则与LLM的内在逻辑推理能力,实现知识的系统性…

作者头像 李华
网站建设 2026/10/18 1:54:04

PLM选型避坑指南:从系统热配置到BOM变更的真实对比

简介&#xff1a;这份PDF对比表面向正在推进PLM/PDM选型的企业信息化负责人、技术架构师与项目决策者&#xff0c;聚焦达索、西门子、PTC三大国际厂商的解决方案横向评估。内容从供应商综合实力、技术方案完整性、数字化制造与系统工程能力&#xff0c;延伸到平台架构、系统性能…

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

CCO服务:分布式上下文透传机制与微服务治理实践

简介&#xff1a;这份资源是面向Java开发者与企业级应用学习者的「CCO服务」源码工程包&#xff0c;适合具备一定Java基础、希望了解客户服务或运营类系统实现方式的读者参考。压缩包共62个文件&#xff0c;以52个Java源文件为主体&#xff0c;辅以4个XML配置、3个YML配置文件&…

作者头像 李华