大语言模型与多模态大模型loss计算

文章目录

前言

如果看了我前面文章,想必你基本对整个代码有了更深认识。实际上,大多大模型都是使用huggingface搭建,而大多LORA训练也是调用PEFT库。然而,LLaVA代码却没有相关VIT模型训练内容,也没有不同组合训练。而我也是想探索单独使用vit的lora训练、单独使用llm的lora训练或全都使用会有什么效果呢?因此,本篇文章将探索LLaVA如何按需构建LORA训练,我会给出如何构建参数与修改源码,也会给出我实验结果。实验结果表明,视觉、语言、映射三着结合训练基本没有效果,视觉与语言训练也不会有效果,而其它基本会有转好效果。

一、大语言模型loss计算

1、loss计算代码解读

我以llama3的loss计算方法来说明,大语言模型的loss计算逻辑,我们可以发现输出logits是取前n-1个位置内容,而lables是取了1:n的内容。如此,使用计算前面内容推理后面内容,假如你输出是5个可推理第6个token内容,如此类推就可以生成式的给出推理内容,这也是推理逐字生成方法,其代码如下图:

我们从代码中可已发现,大语言模型使用交叉熵来计算的,至于有关交叉熵相关原理,可自行参考其它博客内容。

2、构建模型输入内容与label标签

我给出大概loss计算标签,我们可以发现input_ids输入与labels是对应的,只是和我上面所说训练是错位计算交叉熵。我也整理了一份表格供读者参考。当然,我这里有问题可留言指正。

3、input_ids与labels格式

这里我以语言模型为例,huggingface训练输入input_ids与labels对应的id是一样的,只是再计算loss时候,模型输出减少了最后一位,而labesl去掉开始一个位置,以此达到了错位计算loss的目的,具体可查看如下图示。

二、多模态大模型loss计算方法

1、多模态loss计算代码解读

多模态大模型都是依附大语言模型来获得输出内容。尽然如此,多模态大模型的loss计算方法和我上上面说的llama3的loss计算方法一致,都是使用交叉熵方法来求解loss,也是输出logits是取前n-1个位置内容,而lables是取了1:n的内容。如此,使用计算前面内容推理后面内容,假如你输出是5个可推理第6个token内容,如此类推就可以生成式的给出推理内容,这也是推理逐字生成方法,其代码如下图:

这里重点强调:-100位置不需要计算loss,我非常肯定!!

2、多模态输入内容

当然,多模态和大语言模型还是有区别,主要在于多了其它编码模块,如图像多模态就是多了图像编码器将输出内容作为大语言输入ids。再进入大语言模型输入之前模型的输入内容如下图:

从图上可知,有了图像占位内容,而labels不需要计算loss为-100.

2、大语言模型输入内容

我再之前以说过,多模态大模型是依附大语言模型输入。自然输入大语言模型内容格式需和大语言模型一样,然而图像需要经过图像编码encoder模块将图像转为embedding,在与文本进行cat,我这下面是个大致的示意表格,如下:

3、图像embending如何嵌入文本embeding

这里,我借助b站的up所说,可参考下图内容。b站参考连接这里

拼接位置:

拼接embeding:

注:embedding的拼接!

相关推荐
FserSuN4 分钟前
Prompt工程学习之思维树(TOT)
人工智能·学习·prompt
字节跳动_离青39 分钟前
智能的路径
人工智能
王上上1 小时前
【论文阅读28】-CNN-BiLSTM-Attention-(2024)
论文阅读·人工智能·cnn
Channing Lewis1 小时前
如果科技足够发达,是否还需要维持自然系统(例如生物多样性)中那种‘冗余’和‘多样性’,还是可以只保留最优解?
大数据·人工智能·科技
禺垣1 小时前
区块链技术概述
大数据·人工智能·分布式·物联网·去中心化·区块链
IT科技那点事儿1 小时前
引领AI安全新时代 Accelerate 2025北亚巡展·北京站成功举办
人工智能·安全
新智元1 小时前
美 IT 业裁员狂飙 35%,「硅谷梦」彻底崩塌!打工人怒喷 PIP
人工智能·openai
新智元1 小时前
乔布斯挚友去世!胰腺癌再夺硅谷天才,曾写下苹果「创世代码」
人工智能·openai
春末的南方城市1 小时前
中山大学&美团&港科大提出首个音频驱动多人对话视频生成MultiTalk,输入一个音频和提示,即可生成对应唇部、音频交互视频。
人工智能·python·深度学习·计算机视觉·transformer
春末的南方城市1 小时前
Ctrl-Crash 助力交通安全:可控生成逼真车祸视频,防患于未然
人工智能·计算机视觉·自然语言处理·aigc·音视频