【免费下载链接】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):
- 切成 448×448 的小块(tile):每张图按宽高比被划分为
1×1到12×12不等的方块,块数越多,细节看得越清; - 缩略图(thumbnail)机制:当图像被分成多块时,会额外附加一张 448×448 的整体缩略图,让模型"先看全局、再看局部";
- 块数上下限:由 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 中完成:
- Pixel Shuffle(像素重排降采样):pixel_shuffle 将相邻的 2×2 特征块合并成一个,通道数 ×4、token 数缩为原来的 1/4(
downsample_ratio: 0.5)。这一步大幅减少送进 LLM 的视觉 token 数量,省显存、提速; - 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.py | InternViT 视觉编码器实现(含 FlashAttention 加速) |
| configuration_intern_vit.py / configuration_internvl_chat.py | ViT 与主模型的配置类 |
| conversation.py | 对话模板(internvl2_5 模板) |
| model-00001-of-00007.safetensors 等 7 个分片 | 模型权重,由 model.safetensors.index.json 索引 |
| tokenizer.json / vocab.json / merges.txt | Qwen2.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
相关推荐
一图看懂InternVL3_5-14B-Flash架构:InternViT+MLP+Qwen3的快闪多模态大模型
一图看懂InternVL3_5 14B Flash架构:InternViT+MLP+Qwen3的快闪多模态大模型 InternVL3_5 14B Flash 是
如何从一份硬件报告到完整 OpenCore 配置:OpCore-Simplify 快速指南
如何从一份硬件报告到完整 OpenCore 配置:OpCore Simplify 快速指南 手动填表 vs 交报告 手动配 OpenCore EFI 很磨人:对
InternVL3-78B-hf 架构深度解析:InternViT 视觉塔 + Qwen2.5-72B 如何组成 78B 多模态大模型
InternVL3 78B hf 架构深度解析:InternViT 视觉塔 + Qwen2.5 72B 如何组成 78B 多模态大模型 InternVL3 78
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考