读懂LLaVA-v1.5-13B的config.json:CLIP视觉塔、mlp2x_gelu投影器与LLaMA-2的8个核心配置参数
【免费下载链接】llava-v1.5-13b 项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/llava-v1.5-13b
想快速上手多模态大模型 LLaVA-v1.5-13B,第一步不是写代码,而是读懂它的 config.json。这份配置文件用 40 行 JSON 说清了一个 13B 参数视觉语言模型的全部"身份":它用哪个 CLIP 视觉塔看图片、靠哪个 mlp2x_gelu 投影器把图像特征翻译成语言特征、又由哪个 LLaMA-2 语言骨干来生成回答。本文为你逐个拆解其中最值得关注的 8 个核心配置参数,零基础也能看懂。
一、LLaVA-v1.5-13B 是什么?📦
LLaVA-v1.5-13B 是一个开源的多模态聊天模型(2023 年 9 月发布),核心思路只有一句话:
让"会看图的 CLIP" + "会说话的 LLaMA-2" 组队,中间用一个小型 MLP 投影器做翻译,就能聊图片。
本仓库是它的 HuggingFace 格式权重文件,主要内容包括:
| 文件 | 作用 |
|---|---|
config.json | 模型架构与超参数配置(本文主角) |
pytorch_model-00001~00003-of-00003.bin | 分片保存的模型权重,总量约 26GB |
mm_projector.bin | mlp2x_gelu 投影器的独立权重 |
tokenizer.model / tokenizer_config.json | Llama 分词器及其配置 |
generation_config.json | 生成行为(最大长度 4096、特殊 token 等) |
pytorch_model.bin.index.json | 权重分片索引,记录每个权重张量在哪个文件里 |
二、先看图说话:三段式流水线 🔗
LLaVA 的前向过程像一条流水线,config.json 里的参数分别属于三段:
图片 ──▶ ① CLIP ViT-L 视觉塔 ──▶ ② mlp2x_gelu 投影器 ──▶ ③ LLaMA-2 13B ──▶ 文字回答
mm_vision_tower mm_projector_type hidden_size / 层数 / 头数
- ① 视觉塔(Vision Tower):把图片切成 14×14 的小块,输出特征向量;
- ② 投影器(Projector):把视觉特征"翻译"成语言模型能理解的向量;
- ③ 语言骨干(Language Backbone):基于 LLaMA-2 13B,逐词生成回答。
三、8 个核心配置参数一览表 📋
| # | 参数 | 值 | 所属模块 |
|---|---|---|---|
| 1 | mm_vision_tower | openai/clip-vit-large-patch14-336 | CLIP 视觉塔 |
| 2 | mm_hidden_size | 1024 | CLIP 视觉塔 |
| 3 | mm_vision_select_layer | -2 | CLIP 视觉塔 |
| 4 | image_aspect_ratio | pad | CLIP 视觉塔 |
| 5 | mm_projector_type | mlp2x_gelu | 投影器 |
| 6 | hidden_size | 5120 | LLaMA-2 |
| 7 | num_hidden_layers | 40 | LLaMA-2 |
| 8 | num_attention_heads | 40 | LLaMA-2 |
下面逐个拆解。
四、CLIP 视觉塔:4 个参数看懂"眼睛"👁️
1️⃣ mm_vision_tower:用哪双"眼睛"看图
"mm_vision_tower": "openai/clip-vit-large-patch14-336"
这是 OpenAI 的 CLIP ViT-L/14-336:
- ViT-L(Large):大型视觉 Transformer,负责"看图";
- patch14:把图像切成 14×14 像素的小块再编码;
- 336:输入分辨率提升到 336×336(原版 CLIP 是 224×224),能看清更多细节。
💡 这个值决定了模型看图的"底子和清晰度",v1.5 版本正是靠换 336 分辨率的 CLIP 显著提升了图表、小目标识别能力。
2️⃣ mm_hidden_size:图像特征有多"宽"
"mm_hidden_size": 1024
CLIP 输出的每个图像块(patch)特征是一个 1024 维向量。这个数字是投影器的"输入宽度":投影器必须把 1024 维的视觉特征,转成语言模型的 5120 维空间,才能被 LLaMA-2 理解。
3️⃣ mm_vision_select_layer:从哪一层取特征
"mm_vision_select_layer": -2
CLIP 是多层 Transformer,-2 表示取倒数第二层的输出(而不是最后一层)。这是 LLaVA 的经典技巧:中间层特征在"语义理解"和"视觉细节"之间更均衡,比最后一层更利于多模态任务。
4️⃣ image_aspect_ratio:图片怎么摆进 336×336
"image_aspect_ratio": "pad"
值 pad 表示:保持原图比例,用填充(padding)补成正方形,而不是直接拉伸压扁图片。这样图片不会变形,模型看到的图像更"真实"。
五、mlp2x_gelu 投影器:视觉与语言的"翻译官"🗣️
5️⃣ mm_projector_type:两层的 MLP
"mm_projector_type": "mlp2x_gelu"
拆开读这个名字,含义一目了然:
- mlp:多层感知机(全连接层);
- 2x:有 2 个线性层;
- gelu:中间用 GELU 激活函数。
结构就是:1024 维 → 线性层 → GELU → 线性层 → 5120 维。
你可以在 pytorch_model.bin.index.json 里验证这一点——索引文件记录了投影器权重 model.mm_projector.0 和 model.mm_projector.2 分别存放在第 3 个权重分片中(编号 0 和 2,中间的 GELU 没有可训练参数)。这些权重的独立副本就是仓库里的 mm_projector.bin。
💡 投影器很小(只有两个矩阵),但它是预训练阶段唯一从零训练的部件,决定了"图话"和"人话"能否对上。
六、LLaMA-2 骨干:3 个参数看懂"大脑"🧠
LLaVA-v1.5-13B 的语言模型底座是 LLaMA-2 13B,config.json 里这些参数正是它的"体格":
6️⃣ hidden_size:5120 维的语言空间
"hidden_size": 5120
每个 token 在模型内部用一个 5120 维向量表示。这也解释了为什么投影器要把视觉特征升到 5120 维——必须和语言空间对齐。
7️⃣ num_hidden_layers:40 层 Transformer
"num_hidden_layers": 40
语言骨干由 40 层 Transformer 堆叠而成,这是 13B 参数规模的关键标志(7B 版是 32 层,70B 版是 80 层)。
8️⃣ num_attention_heads:40 个注意力头
"num_attention_heads": 40,
"num_key_value_heads": 40,
"intermediate_size": 13824
- 40 个注意力头:每个头关注不同的语义关系,13B 版恰好 40 头(每头维度 5120 ÷ 40 = 128);
num_key_value_heads与它相等,说明没有使用 GQA 分组注意力;intermediate_size: 13824是每层前馈网络的隐藏宽度(约为 5120 的 2.7 倍)。
七、顺带一提的其他实用配置 ✅
| 参数 | 值 | 一句话解释 |
|---|---|---|
torch_dtype | float16 | 权重以半精度存储,13B 模型约 24GB 显存/内存 |
vocab_size | 32000 | 词表大小,LLaMA-2 的标准配置 |
max_position_embeddings | 4096 | 单次上下文最长 4096 个 token |
hidden_act | silu | 语言模型前馈层使用 SiLU 激活 |
rms_norm_eps | 1e-05 | RMSNorm 归一化的数值稳定性参数 |
use_cache | true | 开启 KV 缓存,逐词生成时加速推理 |
bos/eos_token_id | 1 / 2 | 句子开始与结束符号的编号 |
生成行为方面,generation_config.json 同样声明了 max_length: 4096,与上文一致。
八、总结:一张配置看懂一个多模态大模型 🔍
读 config.json 其实就是回答三个问题:
- 眼睛是什么? →
mm_vision_tower(CLIP ViT-L/14-336)+mm_hidden_size(1024)+ 取第-2层 +pad方式预处理; - 翻译官是什么? →
mm_projector_type(mlp2x_gelu,两层 MLP + GELU,把 1024 维转 5120 维); - 大脑是什么? → LLaMA-2 13B:
hidden_size5120、num_hidden_layers40、num_attention_heads40,float16 精度、4096 上下文。
理解了这 8 个参数,你就掌握了 LLaVA-v1.5-13B 的全部架构信息——换视觉塔、调投影器、改上下文长度,都只需要看这个文件就够了。
【免费下载链接】llava-v1.5-13b 项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/llava-v1.5-13b
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



