(十一)关于InternVL2的模型结构——源码解析InternVL2的网络结构(modeling_internvl_chat.py)
前言
本章节将介绍下InternVL2的模型结构,主要是网络的组成部分,运行时的前向传播等。其中内容不会太深,涉及的代码也不会太多,毕竟逐步理解代码的话需要写很大篇幅。
之所以会有这篇文章,是因为我在查看InternVL2的模型结构时有一点小疑问,需要梳理一遍网络的流向,所以我觉得这一点还是值得介绍一下 的。
关于多模态的组成简介
目前的多模态模型一般是由 视觉层(VIT)、语言层(LLM)、对齐层(MLP) 三个部分组成。视觉层负责从图像或视频输入中提取高维特征,主要是由CNN、Transformer等组件构成;语言层负责从文本输入中提取语义信息,或者生成与视觉输入相关的文本,主要由Transformer架构的语言模型构成;对齐层负责将视觉和语言信息结合在一起,使模型能够理解跨模态(从图像->文字)的关系。
多模态模型的结构一般有下面几种:
VIT—MLP—LLM
这是最典型的对齐层位置,对齐层的任务是将视觉特征和语言特征映射到同一个空间,并进行融合。描述流向的话大概如下: