0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

单张消费级显卡微调多模态大模型

深度学习自然语言处理 来源:Smarter 2023-06-30 10:43 次阅读

把大模型的训练门槛打下来!我们在单张消费级显卡上实现了多模态大模型(LaVIN-7B, LaVIN-13B)的适配和训练,这篇文章主要介绍一下用到的技术方案和技术细节,供有需要的人参考。这里用到的模型是LaVIN(语言模型是LLaMA,视觉模型是ViT-L)。LaVIN通过参数高效的训练能将LLaMA拓展到多模态来完成图文问答、对话以及文本对话等等任务。

目前的结果:7B的多模态大模型训练(LaVIN-7B)大约需要8~9G的显存,13B的多模态大模型训练(LaVIN-13B)大约需要13~14G显存。目前的模型在单张消费级显卡上已经完全能够完成训练了,性能相较于fp16略有下降,但是仍然极具竞争力!未来预计65B的模型也能在单张A100(40G)上完成训练,我们后续会公布结果。

技术方案

我们的技术方案结合了LaVIN和qlora,主要分为以下几点:

参数高效的多模态适配 (大概减少了一大半显存)

4bit量化训练 (大概减少了3~8G的固定显存)

梯度累计+gradient checkpointing (大概减少了一半多的显存)

Paged Optimizer (作用不是很明显)

参数高效的多模态适配。

bdc7c850-1692-11ee-962d-dac502259ad0.png

在此之前,我先简单介绍一下之前的工作《Cheap and Quick: Efficient Vision-Language Instruction Tuning for Large Language Models》。我们在这个工作中提出了一种参数高效的适配方法,能够在将整个LLM参数冻住的情况下实现:

参数高效的多模态大模型适配(仅花费3~6M额外参数)

端到端高效训练 (减少2/3的训练时间)

单模态和多模态的自动切换(兼容不同模态)

通过这种方式,我们在ScienceQA上达到了接近SOTA的性能,同时实现了文本模态和图文模态的同时适配。这种参数高效的训练方式,实际上节约了大部分的显存。以LLaVA为比较对象,在完全微调大模型的情况下,LLaVA-13B在A100(80G)上会爆显存。相比之下,LaVIN-13B仅仅需要大约55G的显存开销。考虑到LLaVA还使用了gradient checkpointing,LaVIN-13B至少节省了一半的显存开销(估计),同时训练速度会更快。相比于现有的参数高效的方法,我们的方案在性能和适配性上有显著优势,具体参考论文,这里不赘述了。但是由于deepspeed好像不支持参数高效的训练方式,所以实际中显存开销其实和加满优化的LLaVA差不多,甚至略多一点。

4bit量化训练

4bit量化训练主要参考了qlora。简单来说,qlora把LLM的权重量化成了4bit来存储,同时在训练过程中反量化成16bit来保证训练精度。通过这种方式,能够大大降低训练过程中的显存开销(训练速度应该区别不大)。这种方法非常适合和参数高效的方法进行结合。但是原文中针对的是单模态的LLM,同时代码已经封在了huggingface的库里。因此,我们把核心代码从huggingface的库里抽取出来,同时迁移到了LaVIN的代码里。主要原理就是将LLM中所有的线性层替换成4bit的量化层,感兴趣的可以去参考一下我们的写法,在quantization.py以及mm_adaptation.py中大概十来行代码。

4bit量化训练之后,显存在bs>1的时候下降的不是特别明显。LaVIN-7B大概下降了4~6G的样子,但是这部分的显存下降是固定的,其实非常有价值。到这里我也很好奇qlora怎么把模型塞到单卡里的,这个时候LaVIN-7B的显存开销大概还在36+G的水平。后面check了一下他们的代码发现了接下来的关键设置。

梯度累计+gradient checkpointing

这里的关键就在于时间换空间。通过batch size (bs)=1+梯度累计以及gradient checkpointing的方式能够大大降低显存开销。这也是qlora训练时的一大核心(其实光靠量化训练很难做到显存的极致压缩)。我们的实验结果大概是这样:LaVIN-7B在bs=4改成batch size (bs)=1+梯度累计之后显存降低到了25G左右。经过gradient checkpointing,显存降低到9~10G左右。到这里,显存从原来的上百G压缩到了10G左右,已经非常可观了。但是这一步的代价是训练速度明显变慢了,但其实和qlora原文中的速度下降比例差不多。相比于原来完全训不了的情况来说,这些额外的时间开销显得非常微不足道。

Paged Optimizer

Paged Optimizer的作用是在快爆显存的时候,会将optimizer中的一部分权重迁移到cpu上,从而保证训练的正常进行。实际使用中,没有感觉到太大的区别。我猜测是在显存开销和显卡显存非常接近的时候,这个设置能救下急。正常情况下,好像没有什么太大的帮助。感兴趣的可以试一下8 bit的optimizer,或许帮助更明显。

性能比较

ScienceQA(多模态科学问答数据集):在ScienceQA上,我们单卡的情况下完成了4bit训练并和16bit的方法进行了比较,结果如下:

bde233e8-1692-11ee-962d-dac502259ad0.jpg

可以看到LaVIN-lite性能仍然远超参数高效的方法LLaMA-Adapter,但是相比较16bit训练的LaVIN,性能出现了略微的下降。我们猜测原因是4bit训练的时候可能需要插入更多的adapter来进行适配,也欢迎大家基于这个基线来进行进一步探索和比较。

最后,在解决训练的问题之后,我们会持续推进模型能力的提升以及应用场景的创新。另外,多模态对话模型我们也在持续迭代中,未来也会以技术报告的形式来进行分享。





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 适配器
    +关注

    关注

    8

    文章

    1982

    浏览量

    68443

原文标题:LaVIN-lite:单张消费级显卡微调多模态大模型

文章出处:【微信号:zenRRan,微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    相关推荐

    【「基于大模型的RAG应用开发与优化」阅读体验】+大模型微调技术解读

    今天学习<基于大模型的RAG应用开发与优化>这本书。大模型微调是深度学习领域中的一项关键技术,它指的是在已经预训练好的大型深度学习模型基础上,使用新的、特定任务相关的数据
    发表于 01-14 16:51

    简单的模型进行流固耦合的模态分析

      本次分享,对一个简单的模型进行流固耦合的模态分析,有限元科技小编主要给大家演示如何使用Hypermesh与Nastran对流固耦合的结构进行模态分析,以及了解声腔对结构模态的影响。
    发表于 07-07 17:15

    VisCPM:迈向多语言模态模型时代

    随着 GPT-4 和 Stable Diffusion 等模型模态能力的突飞猛进,模态模型
    的头像 发表于 07-10 10:05 780次阅读
    VisCPM:迈向多语言<b class='flag-5'>多</b><b class='flag-5'>模态</b>大<b class='flag-5'>模型</b>时代

    更强更通用:智源「悟道3.0」Emu模态模型开源,在模态序列中「补全一切」

    当前学界和工业界都对模态模型研究热情高涨。去年,谷歌的 Deepmind 发布了模态视觉语言模型
    的头像 发表于 07-16 20:45 774次阅读
    更强更通用:智源「悟道3.0」Emu<b class='flag-5'>多</b><b class='flag-5'>模态</b>大<b class='flag-5'>模型</b>开源,在<b class='flag-5'>多</b><b class='flag-5'>模态</b>序列中「补全一切」

    中科大&amp;字节提出UniDoc:统一的面向文字场景的模态模型

    如上图所示,UniDoc基于预训练的视觉大模型及大语言模型,将文字的检测、识别、spotting(图中未画出)、模态理解等四个任务,通过多模态
    的头像 发表于 08-31 15:29 1666次阅读
    中科大&amp;字节提出UniDoc:统一的面向文字场景的<b class='flag-5'>多</b><b class='flag-5'>模态</b>大<b class='flag-5'>模型</b>

    模态模型企业,智子引擎全国总部落户南京江北

    智子引擎主要从事新一代人工智能低层引擎和模态模型的研究开发和商业化运营。本项目开发了应用水平模态chatgpt产品“元乘象ChatIm
    的头像 发表于 10-10 11:03 1160次阅读

    北大&amp;华为提出:模态基础大模型的高效微调

    深度学习的大模型时代已经来临,越来越多的大规模预训练模型在文本、视觉和模态领域展示出杰出的生成和推理能力。然而大模型巨大的参数量有两个明显
    的头像 发表于 11-08 16:20 1211次阅读
    北大&amp;华为提出:<b class='flag-5'>多</b><b class='flag-5'>模态</b>基础大<b class='flag-5'>模型</b>的高效<b class='flag-5'>微调</b>

    探究编辑模态大语言模型的可行性

    不同于单模态模型编辑,模态模型编辑需要考虑更多的模态信息。文章出发点依然从单
    发表于 11-09 14:53 589次阅读
    探究编辑<b class='flag-5'>多</b><b class='flag-5'>模态</b>大语言<b class='flag-5'>模型</b>的可行性

    模型+模态的3种实现方法

    我们知道,预训练LLM已经取得了诸多惊人的成就, 然而其明显的劣势是不支持其他模态(包括图像、语音、视频模态)的输入和输出,那么如何在预训练LLM的基础上引入跨模态的信息,让其变得更强大、更通用呢?本节将介绍“大
    的头像 发表于 12-13 13:55 2027次阅读
    大<b class='flag-5'>模型</b>+<b class='flag-5'>多</b><b class='flag-5'>模态</b>的3种实现方法

    从Google模态模型看后续大模型应该具备哪些能力

    前段时间Google推出Gemini模态模型,展示了不凡的对话能力和模态能力,其表现究竟如何呢?
    的头像 发表于 12-28 11:19 1420次阅读
    从Google<b class='flag-5'>多</b><b class='flag-5'>模态</b>大<b class='flag-5'>模型</b>看后续大<b class='flag-5'>模型</b>应该具备哪些能力

    机器人基于开源的模态语言视觉大模型

    ByteDance Research 基于开源的模态语言视觉大模型 OpenFlamingo 开发了开源、易用的 RoboFlamingo 机器人操作模型,只用单机就可以训练。
    发表于 01-19 11:43 469次阅读
    机器人基于开源的<b class='flag-5'>多</b><b class='flag-5'>模态</b>语言视觉大<b class='flag-5'>模型</b>

    利用OpenVINO部署Qwen2模态模型

    模态模型的核心思想是将不同媒体数据(如文本、图像、音频和视频等)进行融合,通过学习不同模态之间的关联,实现更加智能化的信息处理。简单来说,
    的头像 发表于 10-18 09:39 633次阅读

    一文理解模态大语言模型——下

    /understanding-multimodal-llms   《一文理解模态大语言模型 - 上》介绍了什么是模态大语言
    的头像 发表于 12-03 15:18 268次阅读
    一文理解<b class='flag-5'>多</b><b class='flag-5'>模态</b>大语言<b class='flag-5'>模型</b>——下

    商汤日日新模态模型权威评测第一

    刚刚,商汤科技日日新SenseNova模态模型,在权威综合评测权威平台OpenCompass的模态评测中取得榜单第一。
    的头像 发表于 12-20 10:39 411次阅读

    海康威视发布模态模型文搜存储系列产品

    模态模型为安防行业带来重大技术革新,基于观澜大模型技术体系,海康威视将大参数量、大样本量的图文模态
    的头像 发表于 02-18 10:33 172次阅读