文章目录
- 前言
- 一、大语言模型loss计算
-
- 1、loss计算代码解读
- 2、构建模型输入内容与label标签
- 二、多模态大模型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是取了1:n的内容。如此,使用计算前面内容推理后面内容,假如你输出是5个可推理第6个token内容,如此类推就可以生成式的给出推理内容,这也是推理逐字生成方法,其代码如下图:
我们从代码中可已发现,大语言模型使用交叉熵来计算的,至于有关交叉熵相关原理,可自行参考其它博客内容。
2、构建模型输入内容与label标签
我给出大概loss计算标签,我们可以发现inpu