[EAI-026] DeepSeek-VL2 技术报告解读

Paper Card

论文标题:DeepSeek-VL2: Mixture-of-Experts Vision-Language Models for Advanced Multimodal Understanding
论文作者:Zhiyu Wu, Xiaokang Chen, Zizheng Pan, Xingchao Liu, Wen Liu, Damai Dai, Huazuo Gao, Yiyang Ma, Chengyue Wu, Bingxuan Wang, Zhenda Xie, Yu Wu, Kai Hu, Jiawei Wang, Yaofeng Sun, Yukun Li, Yishi Piao, Kang Guan, Aixin Liu, Xin Xie, Yuxiang You, Kai Dong, Xingkai Yu, Haowei Zhang, Liang Zhao, Yisong Wang, Chong Ruan
论文链接:https://arxiv.org/abs/2412.10302v1
论文出处:/
论文被引:/
项目主页:https://github.com/deepseek-ai/DeepSeek-VL2

Abstract

本文介绍了大型专家混合(MoE)视觉语言模型系列 DeepSeek-VL2,在 DeepSeek-VL 基础上做了两个主要升级。视觉组件结合了 Dynamic Tiling 视觉编码策略,旨在处理具有不同纵横比的高分辨率图像。语言组件利用具有多头潜在注意力机制的DeepSeekMoE模型,该机制将键值缓存压缩成潜在向量,以实现高效推理和高吞吐量。在改进的视觉语言数据集上进行训练,在各种任务中展示了优越的能力,包括 VQA、OCR、文档/表格/图表理解和视觉定位(Visual grounding)等。DeepSeek-VL2系列有三个模型:DeepSeek-VL2-Tiny、DeepSeek-VL2-Small和DeepSeek-VL2,分别具有10亿、28亿和45亿个激活参数。 与现有的开源密集型和基于MoE的模型相比,DeepSeek-VL2在激活参数相似或更少的情况下实现了具有竞争力或最先进的性能。

Summary

DeepSeek-VL2 对具身智能的影响?
从PaLM-E开始掀起了利用VLM构建具身场景VQA的模型,pi0引入了擅长做 VG 的PaliGemma作为VLA的骨干,而具身数据高度异构,已有研究从模型层面设计MoE架构的模型来实现跨本体的泛化,比如何恺明团队的HPT。DeepSeek-VL2利用原生MoE的LLM构建VLM,可能天然的适合异构数据学习场景,而无需单独针对policy head进行MoE设计,从而统一动作空间。
在这里插入图片描述

模型架构

在这里插入图片描述

整体上是decoder-only 的 LLaVA 风格架构,包括三个核心模块:(1) 视觉编码器;(2) 视觉语言适配器;(3) 专家混合语言模型。

两个改进:动态平铺(Dynamic Tilimg)策略,多头潜在注意力(Multi-head Latent Attention,MLA)的 DeepSeekMOE 语言模型。这些创新使得模型能够更高效地处理高分辨率视觉输入和文本数据。

Dynamic tiling

在这里插入图片描述

并不神秘, InternVL 系列和 Qwen-VL 系列已经使用。InternVL 系列技术报告中讲得更清楚。
为啥要用这玩意?原来的视觉编码器只能接受固定分辨率的图像输入,这在一些更高分辨率和极端纵横比的图像上需要缩放和padding之后再输入视觉编码器,会影响多模态模型的理解能力。因此,引入了动态分辨率策略。

DeepSeek-VL2的上一个版本DeepSeek-VL使用了混合视觉编码器:SigLip-384和SAM-B-1024,可以生成丰富的视觉表征,但是收到固定1024x1024分辨率的输入限制。应用动态分辨率之后,仅仅使用SigLip 视觉编码器就可以处理不同分辨率的图像输入。具体咋干的?首先,定义了一组候选分辨率 C R = { ( m ⋅ 384 , n ⋅ 384 ) ∣ m ∈ N , n ∈ N , 1 ≤ m , n , m n ≤ 9 } C_R = \{ (m \cdot 384, n \cdot 384) | m \in \mathbb{N}, n \in \mathbb{N}, 1 \le m,n,mn \le 9 \} CR={(m384,n384)mN,nN,1m,n,mn9},其中 m : n m:n m:n 表示纵横比。然后,对于输入高宽为 ( H , W ) (H, W) (H,W) 的图像,计算最匹配的高宽比,然后将图像划分为 m i × n i m_i \times n_i mi×ni 384 × 384 384 \times 384 384×384 像素的图像块,再加上一个原始图像的缩略图,最终有 m i × n i + 1 m_i \times n_i + 1 mi×ni+1 个图块,经过 SigLip-SO400M-384 处理后,产生了 27x27=729 个 1152 维的 vision embedding 向量。为了提高计算效率,当处理多张图像时,禁用了动态分辨率。

Vision-Language Adaptor
在这里插入图片描述
在视觉图块处理之后,应用 2×2 的 pixel shuffle,以将每个图块的视觉token从27×27压缩到14×14=196个token。然后,在处理 (1+mi×ni) 图块时引入三个特殊token。对于全局缩略图图块 (14×14),在每一行的末尾添加<tile_newline> token,总共得到 14×15=210 个token。对于 mi×ni 局部图块,它们排列在一个形状为
(mi⋅14, ni⋅14)的二维网格中,在最后一列的末尾添加 mi⋅14 个<tile_newline>token以指示所有局部图块一行的结束。此外,在全局缩略图图块和局部图块之间插入一个<view_separator>token。完整的视觉序列包含
210+1+mi⋅14×(ni⋅14+1) 个视觉token,这些token随后使用两层多层感知器 (MLP) 投影到语言模型的嵌入空间中。图3显示了动态平铺策略。

模型版本:DeepSeek-VL2 有三个变体,模型总计参数为 3B、16B、27B,模型激活参数分别为:1.0B、2.8B 和 4.5B。
在这里插入图片描述

数据构建

训练过程包括三个阶段:(1)视觉-语言对齐,(2)视觉-语言预训练,(3)监督微调 (SFT)

Stage1:视觉语言对齐数据

数据来源:ShareGPT4V
数据模态:图文对
数据类型:图像描述和问答
数据规模:120 万样本(~2B tokens)

Stage2:视觉语言预训练数据

数据来源:开源+改写
数据模态:70%图文对+30%纯文本
数据类型:图文交错、图像描述、OCR、VQA、视觉定位、GroundingQA
数据规模:(~796.5B tokens)

1-图文交错数据
  1. 开源数据抽取:WIT [79]、WikiHow [38] 和 OBELICS [41] 中的 30% 随机样本,30% 是通过 DeepSeek-VL2-Tiny 的预备实验确定的
  2. 开源数据翻译:为了增强多语言能力,从 Wanjuan [29] 中提取的中文内容补充了英文数据集
  3. 内部收集构建:扩展对世界知识的覆盖范围
2-图像描述数据
  1. 开源数据改写:最初使用了各种开源数据集 [50, 78, 73, 51, 48, 82, 40, 36, 39, 8, 80, 37, 25, 28],但是后边分析发现质量参差不齐的问题,因此自己开发了一个图像描述数据生成管线:它以 (1) OCR提示,(2) 元数据信息(例如,位置、相机设置)和 (3) 相关的原始描述作为提示。使用内部图像描述生成器,遵循类似于PixelProse 的提示策略重新为图像添加描述,使用不同的指令来指导VLM的图像描述生成。
  2. 改写数据清洗:基于 DeepSeek Chat 构建质检管线,对生成的图像描述进行打分,然后过滤掉低质量的图像描述。
3-OCR 数据
  1. 开源数据抽取:LaTeX OCR [7] 和12M RenderedText [93],目前仅仅包含中英文字体提取,未来会扩展到更多语种。
4-VQA 数据

通用视觉问答:来自 DeepSeek-VL 中的通用视觉问答。

表格、图标和文档理解:采用 PubTabNet [112]、FinTabNet [111] 和 Docmatix [42] 来增强文档理解能力。

网页to代码和图表to代码生成:

  • 开源数据抽取:利用 Websight [44] 实现网页到代码功能,使用公开的 Jupyter Notebook 中的 Python 绘图代码。
  • 合成数据生成:使用 DeepSeek V2.5 复制了 Websight 的一部分来增强此数据集。利用 DeepSeek V2.5 生成的 Python 绘图代码来减少图表to代码数据中的噪声。

带有视觉提示的数据:遵循 [9],将各种视觉提示(箭头、方框、圆圈和涂鸦)叠加到 [9, 89, 90] 中的图像上,来构建视觉提示理解数据。然后,创建关注这些视觉提示突出显示的对象的问答对。

5-视觉定位数据(Visual grounding data)

数据来源:[71, 75]
数据格式:不同的多模态模型格式可能不同,在使用这类数据训练自己的模型的时候要特别注意。尤其是¬
在这里插入图片描述
训练过程中,prompt 是从候选池中随机抽取的。还构建了object缺失的负样本,以增强模型的鲁棒性。

参数解释:

  • <|ref|>, <|/ref|>, <|det|>, <|/det|>:special tokens
  • <query>:a placeholder for either the category name (e.g., “car”) or description of the object (e.g., “the leftmost person”)
  • [[x1, y1, x2, y2], …]:a list of bounding boxes, where each bounding box corresponds to an object’s position. The coordinates x1, y1 and x2, y2 specify the top-left and bottom-right corners respectively, normalized to values between 0 and 999 according to the resolution of the image. 注意这里的图片尺寸是0-999,而不是归一化。
6-参考表达数据 (Grounded conversation data)

在这里插入图片描述
As in other visual grounding data, <|grounding|>, <|ref|>, <|/ref|>, <|det|>, <|/det|> are special tokens and x1, y1, x2, y2 is subject to the same normalization scheme.

Stage3:SFT 数据

数据来源:开源+内部构建的数据
数据模态:图文对+纯文本+代码
数据类型:GeneralVQA,OCR和文档理解,图标和表格理解,推理、逻辑和数学题,教材和学术问题,网页to代码、图标to代码生成,视觉定位,GroundingQA,纯文本数据
数据规模:(~19.5B tokens)

1-通用视觉问答数据

开源数据清洗:已有的开源数据[74, 10, 43, 9, 27, 31, 47]存在三个问题:(1)答案简短,(2)OCR 质量差,以及(3)内容虚构。通过联合考虑原始问题、图像和 OCR 信息来重新生成答案。 实验表明,这种方法能够产生更全面、更准确的结果。

内部自建数据1:开发了一个内部中文问答数据集,其中包含各种图像描述和单轮/多轮对话。 此数据集有助于减轻语言混合问题。

内部自建数据2:补充现实世界和文化视觉知识,包括动漫、表情包、美食和艺术。

2-OCR和文档理解数据

开源数据清洗:预训练阶段已经让模型具备很强的OCR能力,在SFT阶段没有进一步提高OCR性能,而是专注于清洗现有的开源数据集[43, 24, 92, 104, 66, 77, 31, 67],删除 OCR 质量差的样本。

内部自建数据:对于文档理解,从内部数据中整理了一个多样化的文档页面子集。然后,生成针对文档理解的、多轮对话问答对。

3-表格和图标理解数据

开源数据复用:Cauldron[43]数据集具有较高的质量,可以直接用

开源数据清洗:通过基于原始问题重新生成所有公共数据集[14, 49]的答案来增强基于表格的问答数据

4-推理、逻辑和数学数据

开源数据清洗:使用更详细的推理过程增强了公共推理数据集[76, 43, 61, 17, 102, 109],并标准化了响应格式,将最终答案放在响应的末尾。

5-教材和学术数据

内部自建数据:构建了一个内部数据集,重点关注文档集合中的教材。 此数据集主要强调跨多个学科的大学水平内容。

6-网页代码和Python绘图代码数据

开源数据清洗:通过重新生成答案来提高其质量

内部自建数据:扩展了内部用于网页代码和Python绘图代码的数据集,超出了预训练期间使用的数据集

7-视觉定位数据

开源数据翻译:使用来自[85, 64, 101, 2, 110, 23]的数据开发了VG数据集,为了提升模型能力,将查询短语翻译成中文,并创建额外的负样本。

合成数据生成:还添加了上下文视觉定位数据,其中任务涉及在给定参考图像中由矩形或椭圆突出显示的参考对象的情况下,跨多个图像定位同一类别中的对象。

在这里插入图片描述
参数解释:

  • <|grounding|>, <|ref|>, <|/ref|>, <|det|>, <|/det|> are special tokens
  • <object> placeholder represents phrases like “an object within the red bounding box” while is the model’s description of the detected object (e.g., “cat”)
8-视觉定位对话数据

使用[62, 72]构建基于视觉定位的对话数据,以进一步增强预训练阶段建立的模型能力。

9-纯文本数据

为了保持模型的语言能力,在SFT阶段还使用了纯文本指令调优数据集[98, 4, 18, 68, 91, 70, 84, 6, 19]。

训练策略

DeepSeek-VL2 通过三阶段流程进行训练:
1)初始阶段——视觉-语言对齐:建立视觉特征和语言特征之间的联系,使预训练语言模型能够有效地处理视觉输入;使用Stage1数据;冻结LLM,训练视觉编码器和视觉-语言适配器MLP

2)预训练阶段——视觉-语言预训练:增强模型的多模态理解能力,同时保持了其大部分语言能力;使用Stage2数据;解冻所有参数(包括视觉编码器、视觉-语言适配器和语言模型)训练

3)微调阶段——SFT:确保模型在各种视觉-语言任务中具有强大的性能;使用Stage3数据;解冻所有参数(包括视觉编码器、视觉-语言适配器和语言模型)训练

在所有阶段,都强调视觉理解能力,并仅针对文本token计算下一个token预测损失。
在这里插入图片描述

超参数如表2所示

基础设施:由16/33/42个节点组成的集群在7/10/14天内完成,每个节点配备8个NVIDIA A100 GPU。

模型评估

定量分析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

定性分析

GQA

在这里插入图片描述

多图对话

在这里插入图片描述

视觉定位

在这里插入图片描述

视觉定位对话

在这里插入图片描述

实验结论

在问介绍了DeepSeek-VL2,这是一个基于MoE的视觉语言模型的增强版本,共有3B、16B和27B参数规模,对应的激活参数分别为1.0B、2.8B和4.5B。 此配置有助于在训练和推理阶段有效地降低计算消耗,三个模型分别可以在具有10GB、40GB和80GB内存的单个GPU上部署。 采用动态平铺视觉编码策略来有效地处理具有各种纵横比的高分辨率图像。

局限性:

  • 目前,DeepSeek-VL2 的上下文窗口每次对话会话仅允许包含少量图像。计划在下一个版本中扩展上下文窗口,以实现更丰富的多图像交互。
  • 此外,与其他VLM一样,该模型偶尔会在模糊图像或未见过的物体时表现不好。
  • 最后,虽然 DeepSeek-VL2 在视觉感知和识别任务方面表现出色,但推理能力仍有待加强。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/962567.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

(动态规划路径基础 最小路径和)leetcode 64

视频教程 1.初始化dp数组&#xff0c;初始化边界 2、从[1行到n-1行][1列到m-1列]依次赋值 #include<vector> #include<algorithm> #include <iostream>using namespace std; int main() {vector<vector<int>> grid { {1,3,1},{1,5,1},{4,2,1}…

cf1000(div.2)

Minimal Coprime最小公倍数 输入&#xff1a; 6 1 2 1 10 49 49 69 420 1 1 9982 44353 输出&#xff1a; 1 9 0 351 1 34371 代码

【单细胞第二节:单细胞示例数据分析-GSE218208】

GSE218208 1.创建Seurat对象 #untar(“GSE218208_RAW.tar”) rm(list ls()) a data.table::fread("GSM6736629_10x-PBMC-1_ds0.1974_CountMatrix.tsv.gz",data.table F) a[1:4,1:4] library(tidyverse) a$alias:gene str_split(a$alias:gene,":",si…

事务04之死锁,锁底层和隔离机制原理

死锁和事务底层原理 文章目录 死锁和事务底层原理一&#xff1a;MySQL中的死锁现象1&#xff1a;何为死锁1.1&#xff1a;死锁的概念1.2&#xff1a;死锁产生的四个必要条件&#xff1a; 2&#xff1a;MySQL的死锁2.1&#xff1a;死锁的触发2.2&#xff1a;MySQL的死锁如何解决…

Maven的单元测试

1. 单元测试的基本概念 单元测试&#xff08;Unit Testing&#xff09; 是一种软件测试方法&#xff0c;专注于测试程序中的最小可测试单元——通常是单个类或方法。通过单元测试&#xff0c;可以确保每个模块按预期工作&#xff0c;从而提高代码的质量和可靠性。 2.安装和配…

VirtualBox:跨磁盘导入已存的vdi磁盘文件顺便测试冷迁移

目录 1.背景 2.目的 3.步骤 3.1 安装在移动硬盘上 3.2.接管现有主机磁盘上的虚拟机 3.3接管迁移到移动硬盘的虚拟机 4. 结论 1.背景 电脑重新做了系统&#xff0c;然后找不到virtualbox的启动程序了&#xff0c;另外电脑磁盘由于存储了其他文件已经爆红&#xff0c;无法…

二级C语言:二维数组每行最大值与首元素交换、删除结构体的重复项、取出单词首字母

目录 一、程序填空 --- 二维数组每行最大值与首元素交换 题目 分析 知识点 --- 交换语句 二、程序修改 --- 删除结构体的重复项 题目 分析 三、程序设计 --- 取出单词首字母 题目 分析 前言 本章讲解&#xff1a;二维数组每行最大值与首元素交换、删除结构体的重复项…

优盘恢复原始容量工具

买到一个优盘&#xff0c;显示32mb&#xff0c;我见过扩容盘&#xff0c;但是这次见到的是缩容盘&#xff0c;把2g的容量缩成32MB了&#xff0c;首次见到。。用芯片查询工具显示如下 ChipsBank(芯邦) CBM2199E 使用以下工具&#xff0c;恢复原始容量。。 其他CMB工具可能不行…

面对企业文件交换难题,镭速跨网文件交换系统是如何解决的?

在当今这个数字化快速发展的时代&#xff0c;企业越来越依赖于数据交换来维持其业务运作。无论是内部网络之间的沟通还是与外部合作伙伴的数据共享&#xff0c;高效且安全的跨网文件交换都显得尤为重要。然而&#xff0c;在实际操作中&#xff0c;许多企业面临着各种各样的挑战…

黑马点评 - 商铺类型缓存练习题(Redis List实现)

首先明确返回值是一个 List<ShopType> 类型那么我们修改此函数并在 TypeService 中声明 queryTypeList 方法&#xff0c;并在其实现类中实现此方法 GetMapping("list")public Result queryTypeList() {return typeService.queryTypeList();}实现此方法首先需要…

计算机毕业设计Python+CNN卷积神经网络高考推荐系统 高考分数线预测 高考爬虫 协同过滤推荐算法 Vue.js Django Hadoop 大数据毕设

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

知识库管理如何推动企业数字化转型与创新发展的深层次探索

内容概要 在当今数字化转型的大背景下&#xff0c;知识库管理日益显现出其作为企业创新发展的核心驱动力的潜力。这种管理方式不仅仅是对信息的存储与检索&#xff0c;更是一种赋能&#xff0c;以提升决策效率和员工创造力。企业能够通过系统地整合和管理各类知识资源&#xf…

【Leetcode】463. 岛屿的周长

一、题目描述 给定一个KaTeX parse error: Undefined control sequence: \x at position 4: row\̲x̲\col的二维网格地图 g r i d grid grid&#xff0c;其中&#xff1a; g r i d [ i ] [ j ] 1 grid[i][j]1 grid[i][j]1表示陆地&#xff0c; g r i d [ i ] [ j ] 0 grid[…

企业微信远程一直显示正在加载

企业微信远程一直显示正在加载 1.问题描述2.问题解决 系统&#xff1a;Win10 1.问题描述 某天使用企业微信给同事进行远程协助的时候&#xff0c;发现一直卡在正在加载的页面&#xff0c;如下图所示 2.问题解决 经过一番查找资料后&#xff0c;我发现可能是2个地方出了问题…

【Block总结】ODConv动态卷积,适用于CV任务|即插即用

一、论文信息 论文标题&#xff1a;Omni-Dimensional Dynamic Convolution作者&#xff1a;Chao Li, Aojun Zhou, Anbang Yao发表会议&#xff1a;ICLR 2022论文链接&#xff1a;https://arxiv.org/pdf/2209.07947GitHub链接&#xff1a;https://github.com/OSVAI/ODConv 二…

英语语法 第一天

I’m a student. 我是个学生 我是个新东方的学生 I’m a student of New Oriental School 我爱你 I love you 我在心中爱你 I love you in my heart. 这是一朵花 This is a flower 这是一朵在公园里的花 This is a flower in the park.(修饰部分在修饰词后面) 主干…

doris:高并发导入优化(Group Commit)

在高频小批量写入场景下&#xff0c;传统的导入方式存在以下问题&#xff1a; 每个导入都会创建一个独立的事务&#xff0c;都需要经过 FE 解析 SQL 和生成执行计划&#xff0c;影响整体性能每个导入都会生成一个新的版本&#xff0c;导致版本数快速增长&#xff0c;增加了后台…

智联出行公司布局中国市场,引领绿色出行新潮流

近日&#xff0c;智联共享科技有限公司&#xff08;智联出行ZSTL&#xff09;正式入驻中国香港市场&#xff0c;开启中国地区“合伙人”战略部署&#xff0c;其线上服务平台也于同日上线。 作为共享单车领域的先行者&#xff0c;智联出行公司此举标志着其全球化布局的重要进展&…

PythonFlask框架

文章目录 处理 Get 请求处理 POST 请求应用 app.route(/tpost, methods[POST]) def testp():json_data request.get_json()if json_data:username json_data.get(username)age json_data.get(age)return jsonify({username: username测试,age: age})从 flask 中导入了 Flask…

开源的瓷砖式图像板系统Pinry

简介 什么是 Pinry &#xff1f; Pinry 是一个开源的瓷砖式图像板系统&#xff0c;旨在帮助用户轻松保存、标记和分享图像、视频和网页。它提供了一种便于快速浏览的格式&#xff0c;适合喜欢整理和分享多种媒体内容的人。 主要特点 图像抓取和在线预览&#xff1a;支持从网页…