news 2026/1/28 5:24:21

【程序员必藏】深入理解Qwen视觉语言模型:架构创新与关键技术解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【程序员必藏】深入理解Qwen视觉语言模型:架构创新与关键技术解析

文章详细解析了阿里Qwen系列视觉语言模型的技术演进,从Qwen-VL到Qwen3-VL的创新架构。核心包括:2D-RoPE与M-RoPE位置编码、NaViT原生分辨率支持、视觉-语言融合策略,以及Qwen3-VL的Interleaved MRoPE和DeepStack架构创新。特别优化了视频时间编码,解决了长视频理解问题,并支持动态分辨率处理,显著提升了多模态感知能力。


Qwen-VL

Qwen

基于 Llama,而 Llama 基于标准 Transformer 架构,Llama 对 Transformer 作出如下更改:

  1. Post-Norm 改为 Pre-Norm:训练过程中梯度回传更稳定

  2. 归一化由 LN 改为 RMSNorm

  3. 标准 LN

  4. RMSNorm

  5. RMSNorm 计算量更少,且避免了 LN 可能的除零带来的训练不稳定

  6. ReLU 改为 SwishGLU

  • 基于 Swish 激活函数,Swish 又是基于 ReLU,避免 sigmoid 等在两端非饱和区梯度为 0 的困境

  • 同时融入 Gated Linear Unit,期望通过动态门控过滤信息

  1. 位置编码改为 RoPE

    核心就如下几点:

  2. 通过旋转角度表示绝对位置,并通过乘法(旋转)形式作用于 Q、K

  3. 好处就是:

  4. 不改变语义信息的幅度,避免加性模式下位置编码对原有 attention score 计算过程的影响

  5. 天然的具备表示相对位置关系的能力,更符合 NLP 直觉

  6. 公式及可视化如下

  7. 整体架构如下

Qwen-VL

Qwen-VL 系列,包括 Qwen-VL 和 Qwen-VL-Chat,整体包含如下三部分:

  • LLM
  • 以 Qwen 7B 为语言模型并进行初始化
  • Visual Encoder
  • 采用 ViT 架构,使用 OpenClip 的 ViT-bigG 预训练权重进行初始化,对 CLIP 的开源复现
  • 输入 image 会被 resize 到 ,且按 划分 patch,以生成 image tokens
  • Position-aware Vision-Language Adapter
  • 单层随机初始化的 cross attention
  • 固定数量的 Learnable embedding 为 query
  • 原始 ViT 输出结果为 key & value
  • 用于压缩 visual tokens 数量,减少后续 LLM 计算 / 内存复杂度,同时对齐至 text hidden dims

Qwen2-VL

相比于 Qwen-VL,主要更新在于 vision encoder 部分:

  1. 通过 2D-RoPE 捕获图像的二维位置信息,并引入 NaViT 支持原生分辨率和任意宽长比
  2. 通过 Multimodal Rotary Position Embedding 统一 image / video / text 模态的位置编码

2D-RoPE & M-RoPE

2D-RoPE 就是对 RoPE 的拓展,从两两一组,变为如下分组形式:

拓展至 M-RoPE,实际上就是:

对于多模态输入,其具体含义如下:

  1. 对于文本输入, 使用相同的 position ID,使得 MRoPE等价于 1D-RoPE
  2. 处理图像时,每个 visual token 的时间 ID 保持不变,根据宽高使用 2D-RoPE
  3. 处理视频时,时间 ID 逐帧递增,其余与图像一致

NaViT 支持原生分辨率

  1. Packing

  • 预定义 batch data,尺寸为
  • 然后通过贪心算法,遍历同一 batch 内的 visual tokens 序列,填充至第一个能容纳的预设序列中
  • 最后未填充的部分进行 padding
  1. Sampling Token Dropping(For Training)

  2. 在 packing 之前,为每个 sample 设置独立的 dropping rates,具体数值通过服从某分布的动态采样实现

  3. 目的是减少序列长度,同时引入正则化

  4. Masked self attention

    训练只关注自己所在的 tokens,所以需要为 ViT 引入 Self-Attention Mask。

其它补充

  • 对于视频数据,进行 2Hz 采样,并在 ViT 之前通过 3D-Conv 融合 1s 内的相邻帧;对于图像,视为两个相同的帧

  • 在 ViT 末尾接一个简单的 MLP Layer,用于将相邻 的 tokens 压缩为一个,以减少序列长度,同时对齐 LLM 维度

  • 在 visual tokens 首尾添加 <|vision_start|> 和 <|vision_end|> 进行区分

Qwen2.5-VL

Qwen2.5-VL 框架

基于 Qwen2-VL,进行了如下更新:

  1. 重新设计 Visual Transformer Encoder 架构,并以 CLIP 训练范式从头开始训练

  2. 与 LLM 部分对齐,在 vision encoder 中引入 SwiGLU、RMSNorm

  3. 为解决 NaVIT 带来的 image tokens 过长导致计算效率低下的问题

  4. 仅 4 层使用 full-attention,其余 layers 均使用最大窗口尺寸 的 Window Attention

  5. 小于 的区域无需填充,直接保留其原始分辨率

  6. 改进 M-RoPE 编码形式:

  7. 将 M-RoPE 中 的 维度从累加值改为帧编号,以使得模型能够更好地理解时间动态

Qwen3-VL

整体结构

依旧采用三段式架构:

  1. LLM:

  2. 基于 Qwen3 构建

  3. Visual Encoder

  4. 使用 SigLIP-2 作为 vision encoder,并基于官方 checkpoint 初始化,使用动态分辨率继续训练

  5. 将 CLIP 中的对比学习 softmax loss 改为了 sigmoid loss

  6. 分布式训练中的 loss 计算不再依赖跨越多个 device 的完整 batch 数据

  7. 效率更高,且不依赖大 batch size

  8. 支持动态分辨率训练

  9. 固定分辨率训练至 90%

  10. 然后结合 FlexiViT 和 NaViT,以更好地支持动态分辨率

  11. FlexiViT:一种支持可变尺寸 PE 的训练范式(模型层面支持不同分辨率)

  12. NaViT:同一 batch 内支持不同分辨率

  13. 遵循 COMP 模式

  14. 采用 2D-RoPE + Learnable PE 双 PE

  15. 通过双线性插值实现 Learnable PE 对动态分辨率的支持

  16. 其他与 Qwen3-VL 无关的细节详见相关论文

  17. MLP-based Vision-Language Merger

  18. 使用双层 MLP 将 vision encoder 输出的相邻 tokens 合并为一个,并与 LLM 维度对齐

架构创新

架构层面,进行如下创新:

  1. Interleaved MRoPE:实际上就是修复了 Qwen2-VL 的缺陷

  2. 在 Qwen2-VL 中

  3. 按顺序划分 ,即:

  4. 这会导致 编码分据不同频段,而未享受到完整的频域空间,这将缩短位置编码的实际覆盖范围

  5. 因此 Qwen3-VL 中修改为

  6. DeepStack:

  7. 仅借鉴 DeepStack 思路

  8. 将 vision encoder 中间层特征,以残差形式直接加至 LLM 前几层的输出中

  9. Video Timestamp

  10. Qwen2.5-VL 中

  11. 通过将时间位置 ID 直接绑定到绝对时间,该方法会为长视频生成过大且稀疏的时间位置 ID,从而削弱模型理解长时间上下文的能力。比如说:

  12. 模型训练时,绝大多数是短视频,可能的总帧数是

  13. 在推理时,突然遇到 这种级别的帧编号,可能就无法正确预估距离,正确理解视频了

  14. 该方案下的有效学习需要对不同 fps 进行广泛且均匀分布的采样,这显著增加了训练数据构建的成本

  15. 在不同原始帧率的视频中,1s 可能对应着完全不同的帧编号,比如:

  16. 30 fps 的视频,对应第 30 帧

  17. 5 fps 的视频,对应第 5 帧

  18. 模型若要学会 1s 这个概念,可能需要在训练阶段见过所有可能的帧率,且进一步抽象出 1s 的不同表示

  19. Qwen3- VL 中

  20. 采用了一种基于文本 token 的时间编码策略,此时

  21. 每个视频时间片段都前缀一个以格式化文本字符串表示的时间戳,如 ❤️.0 seconds>

  22. 在训练过程中,同时生成以 s 和 hours:minutes:seconds 格式表示的时间戳,以确保模型学会解析多样化的时间码表示

  23. 这种方式以适量上下文长度的增加为代价,但使得模型能够更有效且精确地感知时间信息,从而促进时间感知视频任务,如视频定位和密集描述生成


AI大模型从0到精通全套学习大礼包

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

只要你是真心想学AI大模型,我这份资料就可以无偿共享给你学习。大模型行业确实也需要更多的有志之士加入进来,我也真心希望帮助大家学好这门技术,如果日后有什么学习上的问题,欢迎找我交流,有技术上面的问题,我是很愿意去帮助大家的!

如果你也想通过学大模型技术去帮助就业和转行,可以扫描下方链接👇👇
大模型重磅福利:入门进阶全套104G学习资源包免费分享!

01.从入门到精通的全套视频教程

包含提示词工程、RAG、Agent等技术点

02.AI大模型学习路线图(还有视频解说)

全过程AI大模型学习路线


03.学习电子书籍和技术文档

市面上的大模型书籍确实太多了,这些是我精选出来的


04.大模型面试题目详解

05.这些资料真的有用吗?

这份资料由我和鲁为民博士共同整理,鲁为民博士先后获得了北京清华大学学士和美国加州理工学院博士学位,在包括IEEE Transactions等学术期刊和诸多国际会议上发表了超过50篇学术论文、取得了多项美国和中国发明专利,同时还斩获了吴文俊人工智能科学技术奖。目前我正在和鲁博士共同进行人工智能的研究。

所有的视频由智泊AI老师录制,且资料与智泊AI共享,相互补充。这份学习大礼包应该算是现在最全面的大模型学习资料了。

资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。


智泊AI始终秉持着“让每个人平等享受到优质教育资源”的育人理念‌,通过动态追踪大模型开发、数据标注伦理等前沿技术趋势‌,构建起"前沿课程+智能实训+精准就业"的高效培养体系。

课堂上不光教理论,还带着学员做了十多个真实项目。学员要亲自上手搞数据清洗、模型调优这些硬核操作,把课本知识变成真本事‌!


如果说你是以下人群中的其中一类,都可以来智泊AI学习人工智能,找到高薪工作,一次小小的“投资”换来的是终身受益!

应届毕业生‌:无工作经验但想要系统学习AI大模型技术,期待通过实战项目掌握核心技术。

零基础转型‌:非技术背景但关注AI应用场景,计划通过低代码工具实现“AI+行业”跨界‌。

业务赋能 ‌突破瓶颈:传统开发者(Java/前端等)学习Transformer架构与LangChain框架,向AI全栈工程师转型‌。

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

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

一文读懂AI Agent:大模型时代的智能体技术与应用场景全解析,面了字节大模型岗

本文全面介绍了AI Agent的概念、发展及框架。AI Agent作为大模型的延伸&#xff0c;具备自主性、反应性等特征&#xff0c;通过控制端(推理规划)、感知端(多模态输入)和行动端(工具使用)实现复杂任务处理。应用场景包括单代理任务执行、多代理协作及人机交互。文章讨论了AI Age…

作者头像 李华
网站建设 2026/1/25 20:07:07

【AI大模型大厂面经】阿里一面,大模型SFT微调完全指南:从入门到精通,收藏必备!

本文全面介绍了大模型SFT微调技术&#xff0c;包括全参数微调的7种模式与选择策略、多种轻量级微调方法及其特点&#xff0c;以及SFT中可能出现的灾难性遗忘问题及缓解方法。文章详细讲解了SFT数据构建的质与量原则、Chat与Base模型选择考量、多能力优化策略&#xff0c;并探讨…

作者头像 李华
网站建设 2026/1/25 20:01:45

BUUCTF: [极客大挑战 2019]Upload

BUUCTF: [极客大挑战 2019]Upload 本文知识点&#xff1a;文件上传漏洞的基本思路就是上传一个可以被解析的对应引擎&#xff08;如php引擎&#xff09;解析的文件&#xff0c;然后访问这个文件&#xff0c;由于这个文件是我们上传的&#xff0c;因此我们能够控制他的行为&…

作者头像 李华
网站建设 2026/1/25 20:01:41

React 组件状态(State)

React 组件状态(State) 组件可以拥有状态&#xff08;state&#xff09;&#xff0c;它是组件数据的私有部分&#xff0c;可以用来管理动态数据。 状态仅适用于类组件&#xff0c;或者使用 React 的 Hook 时可以在函数组件中使用。 React 把组件看成是一个状态机&#xff08…

作者头像 李华