网站下拉箭头怎么做的,建网站语言,wordpress前台提交图片,西安百度推广开户文章目录 前言一、大语言模型loss计算1、loss计算代码解读2、构建模型输入内容与label标签3、input_ids与labels格式 二、多模态大模型loss计算方法1、多模态loss计算代码解读2、多模态输入内容2、大语言模型输入内容3、图像embending如何嵌入文本embeding 前言
如果看了我前面… 文章目录 前言一、大语言模型loss计算1、loss计算代码解读2、构建模型输入内容与label标签3、input_ids与labels格式 二、多模态大模型loss计算方法1、多模态loss计算代码解读2、多模态输入内容2、大语言模型输入内容3、图像embending如何嵌入文本embeding 前言
如果看了我前面文章想必你基本对整个代码有了更深认识。实际上大多大模型都是使用huggingface搭建而大多LORA训练也是调用PEFT库。然而LLaVA代码却没有相关VIT模型训练内容也没有不同组合训练。而我也是想探索单独使用vit的lora训练、单独使用llm的lora训练或全都使用会有什么效果呢因此本篇文章将探索LLaVA如何按需构建LORA训练我会给出如何构建参数与修改源码也会给出我实验结果。实验结果表明视觉、语言、映射三着结合训练基本没有效果视觉与语言训练也不会有效果而其它基本会有转好效果。
一、大语言模型loss计算
1、loss计算代码解读
我以llama3的loss计算方法来说明大语言模型的loss计算逻辑我们可以发现输出logits是取前n-1个位置内容而lables是取了1n的内容。如此使用计算前面内容推理后面内容假如你输出是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是取了1n的内容。如此使用计算前面内容推理后面内容假如你输出是5个可推理第6个token内容如此类推就可以生成式的给出推理内容这也是推理逐字生成方法其代码如下图 这里重点强调-100位置不需要计算loss我非常肯定
2、多模态输入内容
当然多模态和大语言模型还是有区别主要在于多了其它编码模块如图像多模态就是多了图像编码器将输出内容作为大语言输入ids。再进入大语言模型输入之前模型的输入内容如下图 从图上可知有了图像占位内容而labels不需要计算loss为-100.
2、大语言模型输入内容
我再之前以说过多模态大模型是依附大语言模型输入。自然输入大语言模型内容格式需和大语言模型一样然而图像需要经过图像编码encoder模块将图像转为embedding在与文本进行cat我这下面是个大致的示意表格如下
3、图像embending如何嵌入文本embeding
这里我借助b站的up所说可参考下图内容。b站参考连接这里 拼接位置
拼接embeding 注embedding的拼接