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

deepseek-vl 论文阅读笔记

目录

一、已有模型性能差距分析

二、创新点

数据集构建

模型架构

训练策略

实验与评估

三、细节

数据构建

内部SFT数据的分类体系

模型架构

训练流程包括三个阶段

系统包含三个模块

混合视觉编码器

视觉-语言适配器

语言模型

训练策略

阶段一:训练视觉-语言适配器

阶段二:联合视觉-语言预训练

联合语言-多模态训练

扩展视觉-语言预训练

阶段三:监督微调

四、效果


论文:https://arxiv.org/pdf/2403.05525

代码:https://github.com/deepseek-ai/DeepSeek-VL

近期在使用deepseek-vl,把论文原理记录一下~

一、已有模型性能差距分析

开源模型与专有模型在实际应用场景中的性能差距显著,主要原因包括以下几点:

  1. 计算资源分配: 许多开源解决方案将大量计算资源分配给指令微调阶段。然而,训练强大语言模型的经验表明,广泛的预训练在发展通用智能中至关重要。为了使多模态模型具备丰富的世界知识,应强调利用广泛的视觉-语言数据进行全面的预训练。

  2. 数据集整合: 在指令微调过程中,常见的做法是整合各种学术数据集。虽然这种方法可能在基准测试中表现良好,但往往无法提供真实的实际使用体验。

  3. 模型架构: 先前的工作大多将视觉Transformer(通常是文本对齐的)适配到预训练的语言模型。然而,这些模型大多在相对低分辨率(如336×336或448×448)下运行。复杂的实际应用场景(如光学字符识别或微小物体识别)需要高分辨率的处理能力。

  4. 语言技能保持: 虽然一些模型(如01-ai, 2024; Lin等,2023a; Sun等,2023; Wang等,2023b)已经开始利用预训练,但往往忽视了语言技能的保持。在长期的多模态训练后,语言能力常常会退化。由于我们旨在开发同时具备强大语言和视觉能力的通用模型,因此在发展新模态能力时,应该采用一种能够很好地保持语言能力的训练策略。

二、创新点

数据集构建

DeepSeek-VL的预训练数据集来源多样,包括但不限于Common Crawl、Web Code、电子书、教育材料和arXiv文章。该数据集全面覆盖了真实世界的场景,如网页截图、PDF、OCR、图表以及基于知识的内容(如专家知识、教科书),旨在实现广泛且实用的表示,同时保持可扩展性。

尽管我们的预训练数据涵盖了广泛的世界知识,我们的指令微调数据集则经过精心策划,以反映真实的使用场景。为此,我们手动从互联网上收集了GPT-4V和Gemini的真实测试用例,并系统地将这些用例组织成一个全面的分类体系。我们使用这个结构化的分类体系为每个测试图像选择提示,确保指令微调数据集的实用性和相关性。该分类体系还用于创建一个评估数据集,以有效评估模型在真实世界中的表现。

模型架构

视觉模块旨在优化高分辨率视觉输入的利用,同时在固定的token预算内有效管理推理成本。为此,我们采用了混合视觉编码器,其中包括一个用于粗略语义提取的文本对齐编码器(分辨率为384×384)和一个捕捉详细视觉信息的高分辨率编码器(分辨率为1024×1024)。通过融合这两个编码器,我们的混合方法能够将一个1024×1024分辨率的图像(在大多数使用场景中已足够)压缩为576个token。这个token数量在丰富的视觉表示和token经济之间找到了平衡,使其在文本-图像交互和多轮推理场景中都具有可行性。

训练策略

在多模态模型的预训练过程中,一个常见的挑战是当训练过程过于依赖视觉-语言数据时,语言能力可能会退化。我们的研究表明,保持大量的语言数据(具体来说,至少占比70%)对于维护模型内的语言知识完整性至关重要。这种平衡对于实现强大的多模态能力而不损害语言性能至关重要。此外,我们引入了一种新的“模态预热”策略。这种方法在训练过程中逐步调整模态比例,逐渐引入更多的视觉-语言数据。通过精细调整模态比例和预热策略,我们实现了两种模态的平衡性能。

实验与评估

在模型迭代过程中,我们先在小规模模型上进行实验,然后再扩展到更大的模型规模。然而,小规模模型(如1B模型)无法在基准测试中表现出合理的性能(Schaeffer等,2024),也不能忠实地反映模型的整体性能。为了解决这个问题,我们采用了两种方法。首先,我们将评估协议从多项选择修改为比较选项的困惑度。此外,为防止指令跟随能力成为瓶颈,我们在预训练阶段混入了一小部分指令微调数据。通过这种方式,我们能够在1B模型上实现合理的性能,并更准确地衡量每次迭代在实验中的影响。

通过对通用视觉和语言基准的广泛评估,DeepSeek-VL系列在真实世界应用中展示了卓越的用户体验,并在同等模型规模下在各种视觉-语言基准上实现了最先进或具有竞争力的性能,同时保持了强大的语言中心性能。为了促进创新并支持广泛的应用需求,我们公开了两个版本的模型,分别为1.3B和7B,以满足不同计算能力的需求。

三、细节

数据构建

首先致力于确保数据的多样性、可扩展性,并广泛覆盖真实世界的场景,包括网页截图、PDF、OCR、图表以及基于知识的内容(如专家知识、教科书),以实现对实际情境的全面代表。此外,我们从真实用户场景中创建了一个用例分类,并据此构建了一个指令微调数据集。使用该数据集进行微调显著提升了模型在实际应用中的用户体验。

内部SFT数据的分类体系

内部高质量多模态SFT数据所涵盖的类别在这个分类体系中得到了全面的表示。

主类别描述次类别三级类别
识别这部分用例主要考察大模型对图像内容的理解和描述能力,不需要模型具备高知识储备和推理能力,有些任务可以使用传统机器学习模型完成。全局描述主题描述、事件/行为描述、位置/场景描述、情感/情绪描述、风格识别、食物识别、其他
局部描述指点描述、位置描述、人物识别、对象属性描述、标志识别、计数、货币识别
OCR与转录印刷文本转录、手写文本转录、指定格式转录、指定语言转录
转换这种用例要求模型能够描述和识别图像内容,并使用特定知识(如代码知识、提示工程知识)将图像内容转换为另一种形式。图像转代码UI转代码、图表转代码、照片转SVG/p64编码、公式转代码、流程图转代码
图像转文本图像转提示、文本摘要、基于图像的创作、文本解释
分析这种用例要求模型使用特定知识和逻辑能力对图像内容进行合理的分析和理解,并根据指令描述图像。数据图表分析图形解释、表格解释
专业图表分析电路图、流程图、地图、乐谱、金融图表、平面图、其他
专业图像分析传感器图像、生物和医学图像、声纹图像、点云图像
百科知识分析艺术与文化知识、自然环境知识、食衣住行相关知识、娱乐相关知识、历史知识
常识推理这种用例主要测试模型对生活常识的理解和掌握,需要基于对图像内容的解释和分析结合常识进行推理。关系推理人际关系、空间关系、大小关系、物种关系
功能推理硬件功能推理、软件功能推理
环境推理环境状态分析、基于环境的行为推理、具身智能
异常推理图像异常识别、缺陷检测、事故判断
幽默推理
其他常识推理状态推理、原因推理、属性比较、视错觉、有趣游戏、意图解释、行为预测
逻辑推理这种用例要求模型结合对图像的理解,综合使用领域知识和逻辑推理能力完成相应任务。数学推理代数与运算、平面几何、立体几何
其他逻辑推理物理、化学、生物、代码、智商问题
评估这种用例要求模型根据特定标准评估图像内容。现实评估、相似性评估、美学评估、开放性评估、改进建议
多图分析这种用例考察模型分析和理解多张图像的能力。时间序列理解事件预测、图像排序、行为分析
多图比较属性比较、图文匹配、寻找关联、找不同、图像辨别
安全性这种用例考察模型在安全性方面的表现。暗示性提问、反事实提问、提示注入
模型架构

考虑到效率和大多数真实场景的需求,DeepSeek-VL采用了混合视觉编码器,能够在固定的token预算内高效处理高分辨率图像(1024 x 1024),同时保持相对较低的计算开销。这样的设计选择确保了模型在各种视觉任务中捕捉关键语义和细节信息的能力。

训练流程包括三个阶段
  1. 阶段一:在第一阶段,我们训练视觉-语言(VL)适配器,同时保持混合视觉编码器和语言模型不变。

  2. 阶段二:第二阶段是联合视觉和语言预训练的关键部分,在这一阶段,VL适配器和语言模型都是可训练的。

  3. 阶段三:第三阶段是监督微调阶段,在此期间,我们将训练低分辨率视觉编码器SigLIP-L、VL适配器和语言模型。

系统包含三个模块

我们的系统包含三个模块:混合视觉编码器、视觉适配器和语言模型。在本节中,我们介绍每个部分。

混合视觉编码器

采用SigLIP作为视觉编码器,从视觉输入中提取高级语义特征表示。然而,能观察到单一的SigLIP编码器难以全面解决所有现实世界的问题。CLIP系列的视觉编码器,包括SigLIP,主要设计用于语义视觉表示,但在处理模糊编码时存在挑战,导致视觉上不同的图像被编码为相似的,这被称为"CLIP盲对"(Tong等,2024)。同时,CLIP系列模型受限于其相对低分辨率的输入(如224 x 224、336 x 336、384 x 384、512 x 512),这限制了它们处理需要更多详细低级特征的任务,如密集的OCR和视觉定位任务。

为了应对这些限制,最近的研究(Lin等,2023b;Tong等,2024;Wei等,2023)倡导集成额外的仅视觉自监督编码器,以增强多模态模型的视觉定位能力。基于之前的动机,我们额外利用了一个基于SAM-B(Kirillov等,2023)和预训练的ViTDet(Li等,2022)图像编码器的仅视觉编码器来处理低级特征,该编码器接受高分辨率的1024 x 1024图像输入。除了SAM-B编码器,我们还保留了接受低分辨率384 x 384图像输入的SigLIP-L视觉编码器。因此,我们的混合视觉编码器结合了SAM-B和SigLIP-L编码器,有效地编码高分辨率1024 x 1024图像,同时保留语义和详细信息。具体来说,高分辨率的SAM-B视觉编码器首先将图像调整为1024 x 1024,并生成一个64 x 64 x 256的特征图。

对于由SAM-B生成的高分辨率64 x 64 x 256特征图,VL适配器首先将其插值为96 x 96 x 256。随后,它使用两个步幅为2的卷积层,生成一个24 x 24 x 1024的特征图,并将其重塑为576 x 1024。同时,由SigLIP-L生成的低分辨率576 x 1024特征图与高分辨率特征图连接,形成576个具有2048维度的视觉token。这些视觉token在增强高级语义视觉识别和低级视觉定位任务方面具有很大的潜力。然后,它们经过GeLU激活,并通过嵌入层与语言模型建立连接。

视觉-语言适配器

我们采用一个两层混合MLP来桥接视觉编码器和LLM。最初,使用单独的单层MLP分别处理高分辨率和低分辨率特征。随后,这些特征沿其维度连接,并通过另一层MLP转换为LLM的输入空间。

语言模型

我们的语言模型基于DeepSeek LLM(DeepSeek-AI,2024),其微设计大体遵循LLaMA(Touvron等,2023a,b)的设计,采用带有RMSNorm(Zhang和Sennrich,2019)函数的Pre-Norm结构,并使用SwiGLU(Shazeer,2020)作为前馈网络(FFN)的激活函数,中间层维度为8/3模型维度。我们的语言模型还结合了旋转嵌入(Su等,2024)技术用于位置编码,并使用与DeepSeek-LLM相同的分词器。我们引入了一系列DeepSeek-VL模型。鉴于我们进行多模态和语言联合预训练的目标,我们选择了DeepSeek预训练模型的一个中间检查点继续进行预训练。

具体来说,DeepSeek-VL-1B模型是基于DeepSeek-LLM-1B模型构建的,该模型使用约5000亿文本token进行训练。而DeepSeek-VL-7B模型则基于DeepSeek-LLM-7B模型开发,该模型使用约2万亿文本token进行训练。

训练策略

我们认为,一个高效的视觉-语言模型首先应具备强大的语言能力。为了在预训练过程中保持大型语言模型(LLM)的能力,我们探索了一种有效的视觉-语言预训练策略,从一开始就整合了LLM的训练,并仔细管理视觉和语言模态之间的竞争动态。我们从文本开始,逐步调整比例,以实现两种模态的平衡融合。

阶段一:训练视觉-语言适配器

这个阶段的主要目标是在嵌入空间内建立视觉和语言元素之间的概念链接,从而促进大语言模型(LLM)对图像中描绘实体的全面理解。与LLaVA(Liu等,2024b)和Instruct-BLIP(Dai等,2023)进行的先前研究一致,我们采用了类似的方法,在此阶段保持视觉编码器和LLM冻结,仅允许视觉-语言适配器中的可训练参数进行训练。我们利用了一个包含125万对来自ShareGPT4V的图文配对字幕和250万对文档OCR渲染对的数据集来训练VL适配器。

然而,与大语言模型(LLM)相比,视觉-语言适配器(例如,一个两层MLP)的参数容量显著较小。这种模型容量的限制限制了在此阶段可以学习的能力。一个自然的问题是:数据扩展的规律在此阶段是否有效?为了解决这个问题,我们在表8中进行了一个简单的实验。结果表明,在此阶段扩展数据规模并没有带来好处,甚至可能导致性能下降。因此,我们在第二阶段解冻大语言模型(LLM)并探索高效的视觉-语言预训练方法。

阶段二:联合视觉-语言预训练

在这个阶段,我们探索有效的预训练策略,可以视为一个额外的阶段,使大语言模型(LLM)能够理解多模态输入。我们保持视觉编码器冻结,并优化语言模型和VL适配器。

最初,我们尝试直接用多模态数据训练LLM。然而,我们发现尽管多模态性能指标逐渐改善,但语言指标却显著下降,如图4所示(多模态:语言=100%:0%)。这揭示了在LLM基础上直接进行多模态预训练的内在挑战,显示了增强多模态能力和保持语言熟练度之间的关键权衡。

我们假设观察到的现象源于两个主要因素:首先,大多数多模态语料库过于简单,与语言数据的复杂性和分布存在显著差异。其次,多模态和语言模态之间似乎存在竞争动态,导致LLM内语言能力的灾难性遗忘。

联合语言-多模态训练

为了解决这一挑战,我们设计了一种简单而有效的联合语言-多模态训练策略。在训练过程中,我们不仅进行多模态数据训练,还加入大量语言数据以平衡训练重点,缓解观察到的不利影响。我们在图4中对DeepSeek-VL 1B模型进行了实验,探索不同模态混合比例的影响。

图表分析得出几个关键结论:

  1. 整合语言数据显著缓解了语言能力的下降,显著改善了模型的语言性能。
  2. 加入语言数据不会导致多模态性能的显著损失,表明模型保留了其多模态处理能力。
  3. 不同模态的性能与其在训练数据集中的比例密切相关,证实了两种模态之间的竞争关系。

最终,我们选择了语言与多模态数据大约7:3的训练比例。这一比例使模型在保持语言能力的同时,实现了更好的多模态数据预训练,有效平衡了语言和多模态能力的发展。

扩展视觉-语言预训练

然而,模型的预训练阶段需要大量的计算成本,在7B模型上进行迭代需要极大的计算能力和时间。一个合适的策略是先在较小的模型(特别是1.3B模型)上进行实验,然后将其扩展到7B模型。幸运的是,我们观察到从1.3B模型获得的大部分结果可以通过使用SFT(例如编码器设计)有效转移到7B模型。然而,在阶段二训练阶段,我们遇到了1.3B模型生成指标的显著波动,使得有效监督训练过程变得具有挑战性。Schaeffer等(2024)讨论了这一点,“即使模型家族的每个token错误率随着规模的增加平稳、连续和可预测地变化,研究者选择的测量方法也可能导致尖锐和不可预测的变化。”

后续实验使我们确定了这一问题的根本原因:1.3B模型的容量有限以及训练数据集中缺乏SFT数据,这些都阻碍了模型准确执行指令的能力。即使模型具备正确选项的知识,它也难以精确生成这些选项。

为了解决这些挑战,我们采用了双管齐下的方法。首先,我们使用多选PPL(Perplexity)方法来监控模型的进展。这包括不仅将提示和图像输入网络,还将与问题相关的所有答案输入网络。随后,我们计算每个答案位置(如A、B、C、D)的PPL,并选择模型认为正确的选项作为最终答案。其次,我们在训练数据集中引入了少量的SFT数据,使模型能够获得一些遵循指令的能力。这两种方法的结合确保了1.3B模型训练指标的稳定性,并在第三阶段后带来了更好的性能。

阶段三:监督微调

在这个阶段,我们对预训练的DeepSeek-VL模型进行基于指令的微调,以增强其遵循指令和进行对话的能力,最终创建了交互式的DeepSeek-VL-Chat模型。我们使用视觉-语言SFT数据优化语言模型、VL适配器和混合视觉编码器,如表2所示,由于GPU内存的限制,SAM-B保持冻结状态。我们仅监督答案和特殊token,并屏蔽系统和用户提示。为了保证模型在对话中的全面能力,我们使用了多模态数据和DeepSeek-LLM中使用的纯文本对话数据的混合。这种方法确保了模型在各种对话场景中的多功能性。

四、效果

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • ubuntu在命令行输出里查找内容,dmesg
  • OSPF概述
  • 【cuda】在老服务器上配置CUDA+cmake开发环境
  • 内网渗透—内网穿透工具NgrokFRPNPSSPP
  • Linux进程——环境变量之二
  • 【计算机网络】WireShark和简单http抓包实验
  • 软考:软件设计师 — 5.计算机网络
  • Git 从入门到精通:全面掌握版本控制(IntelliJ IDEA 中 Git 的使用指南)
  • 【LeetCode 随笔】C++入门级,详细解答加注释,持续更新中。。。
  • 【ESP32 IDF 软件模拟SPI驱动 W25Q64存储与读取数组】
  • 二、【Python】入门 - 【PyCharm】安装教程
  • C语言程序设计(二)
  • 疫情居家办公OA系统
  • 富芮坤FR800X系列之按键检测模块设计
  • 正则表达式概述
  • $translatePartialLoader加载失败及解决方式
  • 【React系列】如何构建React应用程序
  • javascript 哈希表
  • JavaScript 一些 DOM 的知识点
  • JavaScript的使用你知道几种?(上)
  • LeetCode算法系列_0891_子序列宽度之和
  • SOFAMosn配置模型
  • SpiderData 2019年2月16日 DApp数据排行榜
  • Vue 动态创建 component
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 二维平面内的碰撞检测【一】
  • 精彩代码 vue.js
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 如何在 Tornado 中实现 Middleware
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 我看到的前端
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • 如何正确理解,内页权重高于首页?
  • #laravel部署安装报错loadFactoriesFrom是undefined method #
  • (2)Java 简介
  • (5)STL算法之复制
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (苍穹外卖)day03菜品管理
  • (待修改)PyG安装步骤
  • (第一天)包装对象、作用域、创建对象
  • (二)Eureka服务搭建,服务注册,服务发现
  • (接口封装)
  • (十) 初识 Docker file
  • (原)本想说脏话,奈何已放下
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .cn根服务器被攻击之后
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .NET Core IdentityServer4实战-开篇介绍与规划