当前位置: 首页 > news >正文

SmolVLM模型结构

image

SmolVLM-256M-Instruct

一、模型结构

  1. 视觉模型 (Vision Model):
    Idefics3VisionTransformer (一个类似 ViT 的结构),负责将输入图像编码成一系列视觉特征向量。
  2. 连接器 (Connector):
    Idefics3Connector (包含一个 Idefics3SimpleMLP),负责将视觉特征向量的维度投影到语言模型所需的维度。
  3. 文本模型 (Text Model):
    LlamaModel (一个 Llama 架构的解码器),负责处理文本信息和融合后的视觉信息,并进行自回归文本生成。
  4. 语言模型头部 (LM Head):
    一个线性层 (Linear),将 Llama 模型的输出转换为词汇表上的概率分布,用于预测下一个词。
    参考链接

二、Printf模型

Idefics3ForConditionalGeneration((model): Idefics3Model((vision_model): Idefics3VisionTransformer((embeddings): Idefics3VisionEmbeddings((patch_embedding): Conv2d(3, 768, kernel_size=(16, 16), stride=(16, 16), padding=valid)(position_embedding): Embedding(1024, 768))(encoder): Idefics3Encoder((layers): ModuleList((0-11): 12 x Idefics3EncoderLayer((self_attn): Idefics3VisionAttention((k_proj): Linear(in_features=768, out_features=768, bias=True)(v_proj): Linear(in_features=768, out_features=768, bias=True)(q_proj): Linear(in_features=768, out_features=768, bias=True)(out_proj): Linear(in_features=768, out_features=768, bias=True))(layer_norm1): LayerNorm((768,), eps=1e-06, elementwise_affine=True)(mlp): Idefics3VisionMLP((activation_fn): PytorchGELUTanh()(fc1): Linear(in_features=768, out_features=3072, bias=True)(fc2): Linear(in_features=3072, out_features=768, bias=True))(layer_norm2): LayerNorm((768,), eps=1e-06, elementwise_affine=True))))(post_layernorm): LayerNorm((768,), eps=1e-06, elementwise_affine=True))(connector): Idefics3Connector((modality_projection): Idefics3SimpleMLP((proj): Linear(in_features=12288, out_features=576, bias=False)))(text_model): LlamaModel((embed_tokens): Embedding(49280, 576, padding_idx=2)(layers): ModuleList((0-29): 30 x LlamaDecoderLayer((self_attn): LlamaAttention((q_proj): Linear(in_features=576, out_features=576, bias=False)(k_proj): Linear(in_features=576, out_features=192, bias=False)(v_proj): Linear(in_features=576, out_features=192, bias=False)(o_proj): Linear(in_features=576, out_features=576, bias=False))(mlp): LlamaMLP((gate_proj): Linear(in_features=576, out_features=1536, bias=False)(up_proj): Linear(in_features=576, out_features=1536, bias=False)(down_proj): Linear(in_features=1536, out_features=576, bias=False)(act_fn): SiLU())(input_layernorm): LlamaRMSNorm((576,), eps=1e-05)(post_attention_layernorm): LlamaRMSNorm((576,), eps=1e-05)))(norm): LlamaRMSNorm((576,), eps=1e-05)(rotary_emb): LlamaRotaryEmbedding()))(lm_head): Linear(in_features=576, out_features=49280, bias=False)
)

三、详解模型结构

1、Vision Model

其实就是一个Vit的神经网络,输入图像先经过Embedding层,再经过Transformer的encoder层。Embedding(1024, 768)表示可以为最多1024个图像块添加位置信息。由于patch大小是1616,3232等于1024,所以就是说输入图像最多是512*512分辨率。

2、Connector

Connector(投影层)的任务是把“视觉特征”翻译成“文本 Token”。
(几个不同的Connector)

  1. (LLaVA)把视觉模型输出的每一个 Patch 特征,直接通过一个简单的线性层(或两层 MLP)映射过去。1 个图像块 = 1 个 Token。缺点是高分辨率图像Tokens过多,推理及其缓慢。
  2. (BLIP-2 的 Q-Former, Idefics2 的 Perceiver)设计一个小型的 Transformer 结构(带有交叉注意力机制 Cross-Attention)。用一组设定好的“查询向量(Query)”去原图中“捞”出最有用的信息,强制把几千个特征压缩成固定的比如 32 个或 64 个 Token。缺点是计算复杂度高,且打乱了图片原有的 2D 空间排布丢失空间细节。
  3. (Idefics3 / SmolVLM)把相邻的图像块在空间上“捏”在了一起。在 SmolVLM 中,它把 4 * 4 = 16个相邻的图像块,当成了一个超级大块。每个小图像块的特征是 768 维。当16 个块拼在一起,特征维度就变成了 16 * 768 = 12288 维。最后通过一个极简的无偏置线性层(Linear)强行映射并压缩回语言模型认识的 576 维。

3、Text Model: LlamaModel

输入: 第二阶段的“视觉 Token” + 用户的“文本 Token”。
输出: 融合了图像和文字理解后的综合隐状态向量(维度为 576)。
具体细节:

  1. 词嵌入与旋转位置编码
    (embed_tokens)负责把输入的纯文本(如“你好”)也变成 576 维的向量,确保文字 Token 和前面传过来的视觉 Token 在维度上完全对齐,具备相同的数学格式。
    (rotary_emb: LlamaRotaryEmbedding)由于模型是同时处理所有数据的,没有先后顺序的概念。RoPE(旋转位置编码)通过一种复数旋转数学运算,给每一个 Token 打上了一个“绝对位置”和“相对位置”的烙印。明白图片 Token 是排在文字前面的。
  2. 核心处理单元
    (LlamaDecoderLayer)分组查询注意力机制:基本工作原理采用常规的自注意力机制,文字 Token 会去观察图像 Token,图像 Token 也会反过来观察文字 Token。但是Llana采用特殊优化,采用分组查询向量q_proj输出维度576,而键k_proj被压缩到192维。
    (门控前馈神经网络 (LlamaMLP / SwiGLU))传统的模型通常用 ReLU 激活函数,但 Llama 使用了由三个线性层组成的门控网络(Gate, Up, Down)配合 SiLU 激活函数。它能更精准地控制哪些信息该被激活,哪些该被过滤,这被证明比传统结构具有更强的表达能力.
  3. 均方根归一化 (LlamaRMSNorm)
    传统的 LayerNorm 会计算均值和方差,非常拖慢速度。RMSNorm 直接砍掉了计算均值的步骤,只计算均方根,不仅速度更快,而且效果丝毫不减。

4、Output Head

Linear: 最后一个线性层,将 576 维的隐状态,反向映射回 49280 的词表空间。

5、分组查询注意力机制对话

image
image
image

6、门控前馈神经网络 (LlamaMLP / SwiGLU)对话

image
image

http://www.jsqmd.com/news/454227/

相关文章:

  • 从组合总和到回溯模板:大厂算法面试的万能钥匙
  • P1437 敲砖块 Sol
  • 游戏上市公司合同系统实施复盘(一):当“功能落地”遇上“蓝图未定”,我们错在哪?
  • # 别追着新工具跑了!真实的小公司AI Coding落地生存指南
  • 2026最新防腐涂料及工程推荐!水池/混凝土/储罐/地坪/钢结构适用权威榜单 - 十大品牌榜
  • 多动症是什么?主要有哪些早期识别及治疗方法?
  • MySQL进阶版第二课时
  • 说说湖南成人专升本培训,哪家品牌靠谱且性价比高? - 工业设备
  • 计算机毕业设计springbootNBA体育赛事直播平台 基于SpringBoot的篮球赛事在线直播与数据管理系统 基于Java的NBA球赛实时转播与信息服务平台
  • YOLO26改进75:全网首发--c3k2模块添加FFCM模块:在空间域和频域同时执行卷积操作,兼具局部-全局特征捕获能力与高效性
  • 聊聊上海好用的DTSS认证服务商,上海擎标口碑如何? - 工业品网
  • 基于ANSYS的小型温室的温湿度场对流分析(任务书+开题报告+文献综述+仿真+毕业论文+答辩PPT)
  • 行业内有实力的百度推广公司推荐
  • 计算机毕业设计springboot校园药送达 高校医药配送服务平台 校园智慧药品快送系统
  • ubuntu 安装 Redis
  • OpenClaw基础-4-三分钟完成QQ机器人接入
  • Linux生态下HTTP协议解析+进阶HTTPS证书:抓包、拆解与问题排查实战
  • 博图中水处理系统PLC程序设计:电机智能启停与轮训实现
  • Redis 核心原理解析:跨越次元壁的“快”
  • WebSpoon9.0(KETTLE的WEB版本)编译 + tomcatdocker部署 + 远程调试教程
  • 改了Windows用户文件夹名称之后,IntelliJ IDEA打不开
  • 上海普陀区有实体样板间可参观的公寓装修公司
  • 前端实习后的感受:实习要注意什么?实习怎么提升效率?
  • Virus-BeautyCode
  • 高清4k手机电脑壁纸
  • Jmeter分布式压测,一篇搞定。。。
  • 【ASP.NET CORE】 4. 集成配置系统、分层架构
  • 什么是Lambda表达式,为什么要用Lambda表达式,你在哪里使用过
  • 数据库设计 Step by Step ()
  • 探寻2026年热风干燥机设备系列,江苏靠谱供应商排名 - 工业设备