文章目录
- 前言
- 一、基于llava源码构建新的参数
- 1、添加lora_vit参数
- 2、训练命令脚本设置
- 二、修改源码,构建lora训练
- 1、修改源码-lora训练
- 2、LLM模型lora加载
- 3、VIT模型加载
- 4、权重冻结操作
- 5、结果显示
- 三、实验结果
前言
如果看了我前面文章,想必你基本对整个代码有了更深认识。实际上,大多大模型都是使用huggingface搭建,而大多LORA训练也是调用PEFT库。然而,LLaVA代码却没有相关VIT模型训练内容,也没有不同组合训练。而我也是想探索单独使用vit的lora训练、单独使用llm的lora训练或全都使用会有什么效果呢?因此,本篇文章将探索LLaVA如何按需构建LORA训练,我会给出如何构建参数与修改源码,也会给出我实验结果。实验结果表明,视觉、语言、映射三着结合训练基本没有效果,视觉与语言训练也不会有效果,而其它基本会有转好效果。
一、基于llava源码构建新的参数
1、添加lora_vit参数
我想使用一个参数来决定是否对视觉vit模型进行lora训练,而llm与映射训练已有相关参数可控制。为此,我们在TrainingArguments的参数中添加lora_vit变量,用此来控制是否视觉使用vit训练。其如图所示:
2、训练命令脚本设置
于是,我们可以使用训练命令脚本,我们只需设置lora_vit的bool,即可实现视觉部分训练。当然,我也修改了源码,使用lora_enable控制LLM模型是否训练,tune_mm_mlp_adapter控制映射层是否训练。最终,我们可以自由组合决定训练哪些模块。