教你如何训练多模态理解模型

news2024/11/14 14:44:02

出发点:最近因为工作的需要,在研究多模态理解模型,看了最近一两年比较火的一些论文,感觉Nvidia的VILA工作可以作为比较好的多模态理解模型训练教程,也在这里介绍给大家。

多模态理解模型:也叫Large Vision-Language Model

VILA: On Pre-training for Visual Language Models VILA: On Pre-training for Visual Language Models

背景

多模态理解模型的基本定义:最近几年,随着LLM的兴起,学术界和工业界提出了一些结合LLM进行多模态理解的方法,其基本形态为:

  • 输入模态:文本、图片、视频等多模态数据。
  • 输出模态:根据多模态输入的文本理解结果。
  • 基本模型结构:输入的文本和LLM的输入文本类似,都是转换为文本token再输入到LLM中。但输入的图片和视频数据需要经过对应的多模态encoder得到embedding信息,然后经过connector将多模态embedding转换为LLM的token输入到LLM中。LLM对输入的文本token、图片和视频token进行理解,然后输出理解的文本结果。

基本的模型结构如下图所示:

图片VILA中的多模态模型结构:图片经过ViT的encoder得到embedding,然后经过projector获得对应visual token,和textual token一起输入到LLM中进行理解,最终获得文本理解结果。

为什么说VILA是一个比较好的多模态理解训练教程? 从最近两年的多模态理解模型论文中可以看到,虽然很多论文都描述了数据构成、模型结构、训练方法和训练资源,但缺少对各种训练可能性的严谨对比。例如是否需要用多模态数据对LLM进行训练,对LLM训练的方法应该是什么方法,不同方法之间效果的区别如何?对于这些问题,VILA进行了相对全面的对比和阐述。

以下开始基于VILA介绍如何训练一个多模态理解模型。

模型结构选型:

基本的多模态理解模型包括三个部分:

  • Visual Encoder:将输入的图片、视频数据转换为visual embedding。
  • Connector:将Visual Encoder输出的visual embedding转换为visual token,进一步输入到LLM中。
  • LLM:输入textual token和visual token进行理解,输出理解的文本结果。

多模态理解的模型结构选项涉及三个部分的选型。以下分别基本VILA介绍三个部分的选型。

1. Visual Encoder

Visual Encoder的选型一般选择基于开源的visual encoder,主要涉及两个方面:具体的image encoder,以及对应的输入图片分辨率和特征等操作方法。

在VILA以及之前的一系列多模态理解论文中,Visual Encoder大都选择了ViT结构的预训练CLIP模型。

对于输入图片分辨率,VILA进行了进一步的探索和对比。两种可能性:

  • • 一般基于ViT的visual encoder采用了224 * 224的图片分辨率,在patch14的设定下,一个224 * 224对应(224/14) * (224/14) = 256个visual tokens。
  • • 另一种选择是基于更高分辨率,例如336 * 336,在patch14的情况下,对应 (336/14) * (336/14) = 576个visual tokens。

更高的分辨率可以带来更好的图片细节,帮助模型更好的理解输入图片,但也会带来更长的token序列,进而增加建模难度。

对于更长token序列的问题,VILA提出了拼接相邻的4个token,然后用一个linear layer来fuse这4个token,即拼接+linear layer映射将4个token合并成1个token,因此336 * 336的token个数从576降为了144,比原始的224 * 224的256 tokens还要少。

VILA对比了不同配置的效果:

图片对于分辨率比较敏感的TextVQA任务上,224224分辨率对应41.6%的准确率,提高分辨率到336336可以直接获得49.8%的准确率,但token个数会增加一倍以上。采用拼接+映射的下采样方法,可以将token个数大幅度降低,同时也在一定程度上保持了准确率效果(45.6%)。

对于分辨率敏感的TextVQA任务,提高图片分辨率可以带来显著的准确率提升;但对于更依赖语义信息的OKVQA和COCO等任务上,提高图片分辨率并不能带来准确率的显著变化。

2. Connector

Connector的选型一般有3种可能:Linear layer、MLP以及Qformer等比较复杂的模型结构。

从最近的多模态理解论文趋势来看,Connector有越来越简单的趋势,即逐渐向着Linear layer和MLP收敛。

在VILA中,对比了Linear layer和transformer的效果,如下图的©和(d)所示:

图片对比©和(d),Connector(即表中的Projector)采用Linear时的效果略好于采用Transformer。

在VILA中,对于Linear的效果好于Transformer的解释为:采用简单的Linear映射,会迫使LLM在训练过程中更好的理解Visual Encoder的输出。

但跳出来看Connector的选型,这里其实遗留了一些问题:

  • • Linear VS. MLP
  • • 同样配置下Linear VS. Qformer等不同结果,以及Qformer中不同个数的query效果。

3. LLM

LLM一般采用开源的LLM,但LLM的选型对应着3个问题:

  • • 选择哪一种开源的LLM可以获得更好的效果?
  • • 当前的多模态理解模型结构,对不同的LLM是否都能获得足够好的效果?
  • • 不同大小的LLM对多模态理解模型而言意味着什么?

在VILA中,可能是因为资源的限制,并没有对问题1中的不同LLM进行充分的横向对比。但对于问题2和问题3都做了一定的探索和对比。

图片基于LLaMA2 7B和Vicuna 7B的多模态理解效果

对于问题2,如上图所示的LLaMA2 7B和Vicuna 7B,通过VILA的多模态训练方法,都可以获得一定的多模态理解效果。

对于问题3,除了更大的LLM可以带来更好的理解能力外,VILA还对比了在text only情况下的LLM能力下降问题。在一般的多模态理解模型中,核心目的是为了获得多模态理解能力,所以一般不会对比在text only情况下的理解能力下降问题,即LLM能力下降问题。在VILA中,发现了采用多模态数据训练LLM时,会直接导致LLM在text only情况下的能力下降(下文会具体介绍,以及保持理解能力的训练方法),但是越小的LLM能力下降越严重,越大的LLM受到的影响越小。如下图所示:

图片在MMLU等text only的LLM任务上,经过多模态数据训练后:7B VILA比7B LLaMA2 + SFT效果略差,而13B VILA超过了其他13 B的LLM模型。

训练方法

VILA展示了基本的多模态模型训练方法:如下图所示

图片

  • • Connector初始化,一般是固定visual encoder和LLM,来训练connector参数。
  • • Visual language预训练,采用多模态数据来训练多模态模型参数,和LLM预训练类似。
  • • Visual instruction tuning,采用多模态的instruction数据,来finetune多模态模型参数。

涉及两个需要回答的问题:是否需要训练visual encoder和LLM参数,以及LoRA等微调方法是否足够,是否需要全参数的训练?

对于是否需要训练visual encoder,VILA中并没有进行具体的对比。但对于是否需要训练LLM以及LLM的具体训练方法,VILA都进行了严谨的对比,如下面两个图所示:

图片对比(a)和(b),在SFT阶段训练LLM,比固定LLM可以获得显著的提升。对比(b)和©,在预训练阶段训练LLM,0-shot不会显示出明显提升,但是4-shot情况下会有明显提升。

图片对比LLM全参数训练和LoRA训练,全参数训练的效果可以获得全面的提升。

因此,预训练和instruction tuning阶段都需要训练LLM参数,而且应该是全参数训练LLM训练,这样才能获得最好的效果。

数据构造

一般的多模态理解论文中只提到了大致的多模态理解数据来源,以及数据量信息。但对于不同多模态理解数据对于最终效果的影响,缺少深入的对比。在VILA中,对比了不同image-text数据对多模态理解效果的影响,也考虑了一定的补偿措施。

图片图文交替数据示例

image-text pair数据 VS. image text交替数据

图片COYO为image-text pair数据的多模态理解效果,MMC4为image text交替数据的多模态理解效果,MMC4-pairs为基于image text交替数据构造的image-text pair数据对应的多模态理解效果。VLM acc为多模态理解任务上的准确率,MMLU acc为LLM理解任务上的准确率。

对比上图的LLaMA2和COYO,经过image-text pair训练后,在LLM的MMLU任务上准确率下降明显。但是采用了MMC4的图文交替数据训练,一方面可以获得更好的多模态理解效果(VLM acc),另一方面在MMLU任务上下降的程度降低了很多(17.2% --> 5.3%)。为了区分是因为MMC4本身的数据造成的效果,还是因为图文交替数据造成的,VILA还基于MMC4构造了MMC4-pair数据,即将图文交替数据构造成image-text pair数据(图中的MMC4-pairs),在MMLU任务上还是有一定的下降。

多模态数据+text only数据进行SFT

图片上半部分为基于多模态数据进行instrucition tuning的效果,下半部分为基于多模态数据和text only数据进行instruction tuning的效果。

为了规避或者缓解多模态数据训练过程中对LLM的text only任务的影响,VILA结合了LLM的instruction finetune方式,在instruction tuning阶段结合了text only的instruciton tuning数据,显著缓解了在只有多模态数据进行instruction tuning时对MMLU任务的影响,同时也提高了在VLM多模态任务上的表现。

训练资源

VILA采用了8 A100 GPUs * 16 nodes = 128 A100 GPUs,7B模型训练总共用了5.1k GPU hours。

如果只有8个A100,那么就需要26.5天,在一定资源的情况也是可行的。

效果评估

图片

从VILA自己展示的效果图中,相对于LLaVA-1.5、Qwen-VL-Chat以及InstructBLIP等较好的多模态理解模型都获得了比较明显的提升。

如何学习大模型

现在社会上大模型越来越普及了,已经有很多人都想往这里面扎,但是却找不到适合的方法去学习。

作为一名资深码农,初入大模型时也吃了很多亏,踩了无数坑。现在我想把我的经验和知识分享给你们,帮助你们学习AI大模型,能够解决你们学习中的困难。

我已将重要的AI大模型资料包括市面上AI大模型各大白皮书、AGI大模型系统学习路线、AI大模型视频教程、实战学习,等录播视频免费分享出来,需要的小伙伴可以扫取。

一、AGI大模型系统学习路线

很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,我下面分享的这个学习路线希望能够帮助到你们学习AI大模型。

在这里插入图片描述

二、AI大模型视频教程

在这里插入图片描述

三、AI大模型各大学习书籍

在这里插入图片描述

四、AI大模型各大场景实战案例

在这里插入图片描述

五、结束语

学习AI大模型是当前科技发展的趋势,它不仅能够为我们提供更多的机会和挑战,还能够让我们更好地理解和应用人工智能技术。通过学习AI大模型,我们可以深入了解深度学习、神经网络等核心概念,并将其应用于自然语言处理、计算机视觉、语音识别等领域。同时,掌握AI大模型还能够为我们的职业发展增添竞争力,成为未来技术领域的领导者。

再者,学习AI大模型也能为我们自己创造更多的价值,提供更多的岗位以及副业创收,让自己的生活更上一层楼。

因此,学习AI大模型是一项有前景且值得投入的时间和精力的重要选择。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

玩游戏的时候怎么录屏?三种实用技巧

在数字化娱乐时代,录制游戏视频已成为玩家分享游戏体验的重要方式。录屏不仅能够记录精彩的游戏瞬间,还能用于制作教程、分析游戏策略或进行游戏直播。那么,玩游戏的时候怎么录屏呢?本文将介绍三种实用的录屏方法,帮助玩家们在畅…

WPF篇(20)- Menu菜单+ContextMenu上下文菜单+StatusBar状态栏

Menu菜单 Menu控件继承于MenuBase,而MenuBase继承于ItemsControl。所以学习Menu之前,要先了解一下MenuBase基类。它是一个抽象类,拥有一个ItemContainerTemplateSelector模板选择器,并重写了一些关于键盘和鼠标的方法。 Menu的子…

react的pdf转图片格式上传到后端

这个东西做的我真的是头昏脑涨 主要需求是,upload上传pdf,pdf转图片格式展示,以图片格式上传到后端 封装了组件代码,父组件直接放就可以了 使用的插件pdfjs-dist,版本是 "pdfjs-dist": "2.5.207",node:14.13.0/18.17.0/16.14.2都可以你们要注意n…

c语言学习,malloc()函数分析

1:malloc() 函数说明: 申请配置size大小内存空间 2:函数原型: void *malloc(size_t size) 3:函数参数: 参数size,为申请内存大小 4:返回值: 配置成功则返回指针&#…

吃透前端文件上传与文件相关操作 多文件上传 大文件切片上传 拖拽上传 后续还会更新 断点续传等等

最近在学文件上传的操作,所以想把学习到东西写成一文章 这片文章是我以小白视角 慢慢学习并熟悉前端文件相关操作的流程总结出来的 前端文件上传 我首先想到是 <input type"file">**选择文件**</input>如果我们想限制上传文件的格式,大小或进行裁剪分片…

产品经理-如何判断一个产品的好与坏(36)

当面试官问到,如何判断一个产品的好与坏时,该怎么回答,这个问题非常综合地考查了你对产品的理解&#xff0c;但是题目本身非常大且难有标准答案 即使是面试官也不敢说能答好这道题。求职者在遇到这种很开放的题目时&#xff0c;如果不假思索就开答&#xff0c;往往是很危险的。…

在亚马逊云科技上搭建云原生生成式AI教育学习平台

项目简介&#xff1a; 小李哥将继续每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿AI技术解决方案&#xff0c;帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS AI最佳实践&#xff0c;并应用到自己的日常工作里。 本次介绍的是如何利用亚马逊云科技大模型托…

【python】Python中subprocess模块的参数解读以及应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

如何用AI技术运营漫画推文,实现轻松变现

最近&#xff0c;漫画推文在各大平台上特别火&#xff0c;加上AI技术的加持&#xff0c;现在大家都有机会分一杯羹。今天我就来详细聊聊&#xff0c;如何利用AI技术来运营漫画推文&#xff0c;实现轻松变现。 项目介绍 咱们先来了解一下这个项目到底是啥。漫画推文&#xff0c;…

流量池是什么?萤石物联网卡流量池使用指南

要将4G设备通过萤石开放平台上云&#xff0c;有单卡模式/流量池两种使用模式&#xff0c;以下介绍流量池功能的使用方法 一、账号注册和登录 打开 萤石开放平台官网登录您的账号。若您还没有账号&#xff0c;请注册 二、申请物联网卡 登录后进入物联网卡申请页面没有卡的情况下…

【FreeRTOS】队列实验-多设备玩游戏(红外改造)

目录 0 前言1. 队列实验_多设备玩游戏2 回顾程序3 程序改进3.1 创建队列3.1.1 方法3.1.2 实践 3.2 读队列3.2.1 方法3.2.2 实践 3.3 写队列3.3.1 方法3.3.2 实践 0 前言 学习视频&#xff1a; 【FreeRTOS入门与工程实践 --由浅入深带你学习FreeRTOS&#xff08;FreeRTOS教程 基…

WPS真题题库导入刷题小程序:百思考个人使用经验分享

这篇文章的诞生&#xff0c;是因为我即将踏上一场超级有趣的挑战——备考全国计算机等级二级WPS Office高级应用与设计的冒险之旅&#xff01; WPS的分值&#xff1a; 单项选择题20分(含公共基础知识部分10分)。 WPS处理文字文档操作题30分。 WPS处理电子表格操作题30分。 …

Taro+Vue 创建微信小程序

TaroVue 创建微信小程序 一、全局安装 tarojs/cli二、项目初始化三、现在去启动项目吧 一、全局安装 tarojs/cli npm install -g tarojs/cli //安装 npm info tarojs/cli //查看安装信息 如果正常显示版本说明成功了&#xff0c;就直接跳到第二步吧官网说&#xff1a;…

如何快速自学开源项目?试试我的诀窍

大家好&#xff0c;我是程序员鱼皮。上周二晚上我直播带大家学习了一个 GitHub 上不错的开源聊天室项目 MallChat &#xff0c;大家表示学到了很多&#xff0c;所以我专门剪出了一期项目导学视频&#xff0c;分享给大家&#xff1a; https://www.bilibili.com/video/BV1Q142147…

Redis 高可用性如何实现?

Redis 高可用性如何实现&#xff1f; 1、主备切换2、哨兵集群 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; Redis&#xff0c;作为广泛使用的内存数据结构存储系统&#xff0c;通过一系列机制和策略&#xff0c;如主备切换、哨兵&#xf…

vue脚手架配置代理(解决跨域问题)

vue配置代理 一.介绍二.方法一三.方法二 一.介绍 跨域问题是指协议&#xff0c;主机&#xff0c;端口有一个以上不同 解决方法&#xff1a; 1&#xff0c;cors(最标准&#xff09; 2&#xff0c;jsonp&#xff08;script src&#xff09;&#xff08;比较巧妙&#xff09; 3&a…

使用MongoDB构建AI:Story Tools Studio将生成式AI引入Myth Maker AI游戏

Story Tools Studio利用先进的生成式AI技术&#xff0c;打造沉浸式、个性化、无穷尽的情景体验。 Story Tools Studio创始人兼首席执行官Roy Altman表示&#xff1a;“我们的旗舰游戏Myth Maker AI采用的是我们自主研发的、以AI为驱动的专家指导型故事生成器MUSE&#xff0c;它…

跨境电商新手必知:轻松解决商品详情图一键翻译难题!

在做跨境电商&#xff0c;商品详情图的翻译是至关重要的一环。 对于刚刚踏上跨境电商之旅的个人创业者来说&#xff0c;如何实现一键翻译商品详情图&#xff0c;可能是一个令人头疼的问题。 别担心&#xff0c;现在有许多实用的工具和方法可以帮助您轻松应对。 比如&#xff…

使用Windows11搭建代理服务器

一、问题引入二、下载并安装apache服务器三、配置Apache服务四、安装服务并测试五、文中提到的下载文件集合一、问题引入 使用ccproxy总是有很多限制,而且总是中断,因此就想自己用windows搭建一个。 二、下载并安装apache服务器 进入apache官网https://httpd.apache.org/do…

C/C++实现蓝屏2.0

&#x1f680;欢迎互三&#x1f449;&#xff1a;程序猿方梓燚 &#x1f48e;&#x1f48e; &#x1f680;关注博主&#xff0c;后期持续更新系列文章 &#x1f680;如果有错误感谢请大家批评指出&#xff0c;及时修改 &#x1f680;感谢大家点赞&#x1f44d;收藏⭐评论✍ 前…