yangjianxin1 / Firefly

Firefly: 大模型训练工具,支持训练Qwen2、Yi1.5、Phi-3、Llama3、Gemma、MiniCPM、Yi、Deepseek、Orion、Xverse、Mixtral-8x7B、Zephyr、Mistral、Baichuan2、Llma2、Llama、Qwen、Baichuan、ChatGLM2、InternLM、Ziya2、Vicuna、Bloom等大模型
5.6k stars 505 forks source link

qlora微调后的模型性能 #210

Open ZHANGJINKUI opened 7 months ago

ZHANGJINKUI commented 7 months ago

qlora微调模型输出正确结果后仍然会输出一些不相干的内容,例如: image 我使用的断句功能,但是他在断完句子后仍然会输出一些无关紧要的内容,我一开始以为是训练集的大小太小,于是我将训练集的大小从2k换到了2w,epoch从30换到了 1,但是模型的效果还是这样,会在输出正确内容后,继续输出一些无关紧要的乱码内容,有时候是符号有时候是句子,还有时候会输出外语,这是什么原因呢?是我模型有问题了吗,还是说我使用的有问题呢,希望各位大佬们能指点一下,谢谢谢谢谢!

yangjianxin1 commented 7 months ago

在FAQ中描述了你提到的这个问题,本质是模型无法正常生成<|im_end|>这个token,导致模型无法正常结束。

  1. 如果训练时model_name_or_path=Qwen/Qwen-7B-Chat,template_name=qwen,训练完后模型可以正常结束。
  2. 如果训练时model_name_or_path=Qwen/Qwen-7B,template_name=qwen,训练完后模型可以无法结束,会出现你展示的问题。

当model_name_or_path=Qwen/Qwen-7B时,template_name=default可解决无法生成停止问题。

yangjianxin1 commented 7 months ago

需要先确认一下训练时你的model_name_or_path是chat模型还是base模型

ZHANGJINKUI commented 7 months ago

需要先确认一下训练时你的model_name_or_path是chat模型还是base模型

您好,我使用的是model_name_or_path=Qwen/Qwen-7B-Chat的模型,且template_name=qwen但是仍然会出现这样的问题,会在生成正确答案后输出一些乱码的信息,我也不能很清楚的知道是为什么,您能再给出一点建议吗,谢谢!

yangjianxin1 commented 7 months ago

Qwen1.5刚出来,可以尝试一下model_name_or_path=Qwen/Qwen1.5-7B-Chat,看是否会有问题

aiXia121 commented 5 months ago

一般 qlora loss 到达多少可以收敛好了?loss 可以降到很低。模型在sft的时候可以引入acc作为判断标准吗?也就是在配置文件里面加一个eval_file. @yangjianxin1 感谢

{'loss': 3.2572, 'learning_rate': 0.0002, 'epoch': 0.09} {'loss': 2.003, 'learning_rate': 0.0002, 'epoch': 0.18} {'loss': 1.7128, 'learning_rate': 0.0002, 'epoch': 0.28} {'loss': 1.5041, 'learning_rate': 0.0002, 'epoch': 0.37} {'loss': 1.4552, 'learning_rate': 0.0002, 'epoch': 0.46} {'loss': 1.3101, 'learning_rate': 0.0002, 'epoch': 0.55} 21%|███████████████████████████████▉ | 699/3258 [1:24:27<5:09:49, 21%|██████████████████████████████ | 700/3258 [1:24:34<5:05:45, 7.17s/it]{'loss': 1.2576, 'learning_rate': 0.0002, 'epoch': 0.64} 24%|██████████████████████████████████▏ | 796/3258 [1:36:44<4:50:1 24%|███████████████████████████████ | 797/3258 [1:36:52<4:51:10, 7.10s/it]{'loss': 1.1868, 'learning_rate': 0.0002, 'epoch': 0.74} {'loss': 1.1151, 'learning_rate': 0.0002, 'epoch': 0.83} {'loss': 1.1083, 'learning_rate': 0.0002, 'epoch': 0.92} {'loss': 1.0145, 'learning_rate': 0.0002, 'epoch': 1.01} {'loss': 0.854, 'learning_rate': 0.0002, 'epoch': 1.1} {'loss': 0.8483, 'learning_rate': 0.0002, 'epoch': 1.2} {'loss': 0.8138, 'learning_rate': 0.0002, 'epoch': 1.29} {'loss': 0.8054, 'learning_rate': 0.0002, 'epoch': 1.38} {'loss': 0.7645, 'learning_rate': 0.0002, 'epoch': 1.47} 51%|██████████████████████████████████████████████████████████████████████████████▎ | 1657/3258 [3:22:56<3: 51%|█████████████████████████████████████████████████████████████████████▋ | 1658/3258 [3:23:04<3:20:01, 7.50s/it] 51%|███████████████████████████████████ 51%|████████████████████████████████████████████████████████████████████████████████▋ 51%|█████████████████████████████████████████████████{'loss': 0.729, 'learning_rate': 0.0002, 'epoch': 1.56} {'loss': 0.7243, 'learning_rate': 0.0002, 'epoch': 1.66} {'loss': 0.7277, 'learning_rate': 0.0002, 'epoch': 1.75} {'loss': 0.71, 'learning_rate': 0.0002, 'epoch': 1.84} 61%|█████████████████████████████████████████████████████████████████████████████████████████████████▊ | 2003/3258 [4:07:59<3:32:09, 10. 62%|█████████████████████████████████████████████████████████████████████████████████████████████▍ | 2004/3258 [4:08:06<3:12:39, 9.22s/it] 62%|██████████████████████████████████████████████████████████████████████████████████████████████▍ 62%|██████████████████████████████████████████████████████████████████████████████▎ | 2024/3258 [4:10:27<2:23:56, 7.00s/it] 63% 64%{'loss': 0.6947, 'learning_rate': 0.0002, 'epoch': 1.93} {'loss': 0.632, 'learning_rate': 0.0002, 'epoch': 2.02} 70%|████████████████████████████████████████████████████████████████████████████████████████████████████ | 2265/3258 [4:41:45<1:56:09, 7.0 70%|███████████████████████████████████████████████████████████████████████████████████████████████▉ | 2266/3258 [4:41:52<1:55:12, 6.97s/it]{'loss': 0.4938, 'learning_rate': 0.0002, 'epoch': 2.12} {'loss': 0.5083, 'learning_rate': 0.0002, 'epoch': 2.21} {'loss': 0.5106, 'learning_rate': 0.0002, 'epoch': 2.3} {'loss': 0.4914, 'learning_rate': 0.0002, 'epoch': 2.39} {'loss': 0.4937, 'learning_rate': 0.0002, 'epoch': 2.49} {'loss': 0.4826, 'learning_rate': 0.0002, 'epoch': 2.58} {'loss': 0.5047, 'learning_rate': 0.0002, 'epoch': 2.67} 90%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 2936/3258 [6:05:12<38:26, 90%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 2937/3258 [6:05:20<39:36, 7.40s/it]{'loss': 0.4728, 'learning_rate': 0.0002, 'epoch': 2.76} {'loss': 0.4871, 'learning_rate': 0.0002, 'epoch': 2.85} {'loss': 0.4915, 'learning_rate': 0.0002, 'epoch': 2.95} {'train_runtime': 24477.3073, 'train_samples_per_second': 2.131, 'train_steps_per_second': 0.133, 'train_loss': 0.934481665281667, 'epoch': 3.0} 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 3258/3258 [6:47:57<00:00, 7.51s/it] train metrics epoch = 3.0 train_loss = 0.9345 train_runtime = 6:47:57.30 train_samples_per_second = 2.131 train_steps_per_second = 0.133