THUDM / VisualGLM-6B

Chinese and English multimodal conversational language model | 多模态中英双语对话语言模型
Apache License 2.0
4.08k stars 415 forks source link

使用LoRa对Qformer进行微调,Qformer微调参数为rank:10 layer_range只调整了第0层,最终训练下来,输出为乱码,如图所示 #212

Open WeiXuanLi-1024 opened 1 year ago

WeiXuanLi-1024 commented 1 year ago

5f7fb8d294af2642a5609882c2d99af

WeiXuanLi-1024 commented 1 year ago

qformer 尝试用了别的参数,训练图像4000张左右,输出都是这样。难道是qformer不能lora微调吗?

1049451037 commented 1 year ago

给的信息太少,我也无法判断你的代码有bug还是其他问题

WeiXuanLi-1024 commented 1 year ago

qformer 添加微调位置如图所示: bcff0e2bfb7cb46fc796836f86a9607 其他参数 train-iters 2000 ChatGLM Lora参数默认 lora_rank 10 layer_range 0 14

1049451037 commented 1 year ago

请更新sat到最新版代码,已经没有head_first后面这些参数了。(并且qformer不应该使用head_first=True)

git clone https://github.com/THUDM/SwissArmyTransformer
cd SwissArmyTransformer
pip install .

相应的,visualglm-6b的checkpoint也要重新下载。(visualglm的代码也要保持和github一致)

WeiXuanLi-1024 commented 1 year ago

升级sat版本至0.4.3 同时更新代码 6af2399f4b9020b4b2abe378eefeb2a 使用web_demo.py 进行测试,发现不管提问问题是什么,输出都是不变的, 然后做了一次实验,微调轮数设置设置200次,还是这个问题。

1049451037 commented 1 year ago

你用微调之前的visualglm-6b进行推理,输出是正常的吗?使用cli_demo.py

WeiXuanLi-1024 commented 1 year ago

测是图像是泰坦尼克号,微调前: f7e4d9e03cd470ac03c2e61094dd7b6 是正常的

1049451037 commented 1 year ago

那用cli_demo.py试一下微调以后的模型呢?可能是web_demo.py有bug

WeiXuanLi-1024 commented 1 year ago

昨天用cli_demo.py 试了下微调后模型,qformer 部分rank:10 layer 0(如第一张图所示) 语言微调参数部分默认,训练图像4000张左右,训练1000次,分别测试了600&400次保存权重测试,输出都是一样的。我想请问下,这个qformer 是必须要很多数据才能调吗?还是哪里设置的不对?之前只微调了语言部分不加qformer,对一些小目标识别不是很好。 fed98968a91776f6fb89eda463b98a6

a6758cd7f29ebc12060a7882f19ceb6

1049451037 commented 1 year ago

代码部分没有问题,如何设计训练得你自己研究了。

1049451037 commented 1 year ago

可以试试把layer_range=[0]改成layer_range=[-1],训练qformer的最后一层而不是第0层。

paulxu1314 commented 1 year ago

遇到同样问题

PangziZhang523 commented 1 year ago

qformer在微调的时候不是默认一起训练的嘛?

1049451037 commented 1 year ago

默认不训练qformer,如果你想训练其他参数可以修改这里:https://github.com/THUDM/VisualGLM-6B/blob/main/finetune_visualglm.py#L34