Qwen icon indicating copy to clipboard operation
Qwen copied to clipboard

使用qwen1.8b微调相关性模型,效果奇差,怀疑是预训练数据质量太低

Open mechigonft opened this issue 1 year ago • 17 comments

是否已有关于该错误的issue或讨论? | Is there an existing issue / discussion for this?

  • [X] 我已经搜索过已有的issues和讨论 | I have searched the existing issues / discussions

该问题是否在FAQ中有解答? | Is there an existing answer for this in FAQ?

  • [X] 我已经搜索过FAQ | I have searched FAQ

当前行为 | Current Behavior

使用qwen1.8b微调相关性模型,训练格式如下:关键信息已经打码 [{ "id": "0", "conversations": [{ "from": "user", "value": "请判断下面的【A】和【B】是否相关,如果相关请输出“相关”,不相关请输出“不相关”,无法确定请输出“不相关”\n\n【A】:A\n【B】:B" }, { "from": "assistant", "value": "不相关/相关" }] }] 微调数据1W,单卡lora训练 微调结果效果奇差,首先没有按照不相关/相关给我回复,其次回复的内容没有语言逻辑,截取3个回复,如: 1、【欢迎关注“李斯舟源为你作答”。 哈哈好好格杠……洪生 咱们可以创造氛围先 答案仅来自文本绝…… 非要做请开口……

“上述知识点是固定背完的一样】 2、【选自课本 抽剑熔铸瑞柯王哥阿强盘 【根源再现 道明西坝 卡也西校】 3、【这个导,真人 彼得皮层有关的地方长相,第一重新生香泰德 圣女果根据照片的感觉 【法里舞街的生活!小伙伴们和我里面 吵过那些事儿 这都难过的,其实是这样的 中文这么小,布鲁托_ 人类各种有特色的地方铁证童男的概率岛 粗铁里,劈水那种男生 加一个奶

女人出手砰 当改成尸体撞别人然后做真相之类的但是那些那个灌上, 今天想被人去做了一个什么意思干爹镇渣宝能有新意思 黑色公寓的特种厨师斑枯人般的电影 裤怎么回事 祖一波的战队积分游戏磨洗雪精呢我觉得是法一下宝然后美哦肖出什么事情了 小葫芦的功能试管一声咽音那个贝文小哥肉宝宝 估计周围哪儿出了动物的快递口。游戏 的行李库圈我是心的学校北期锦巴巴的方式北线寄内胸死 整人小狗丢一波人,靠谱洪 锦游泳的能力一起看到了新的真相这样的作用】

期望行为 | Expected Behavior

使用qwen1.8b微调相关性模型,训练格式如下:关键信息已经打码 [{ "id": "0", "conversations": [{ "from": "user", "value": "请判断下面的【A】和【B】是否相关,如果相关请输出“相关”,不相关请输出“不相关”,无法确定请输出“不相关”\n\n【A】:A\n【B】:B" }, { "from": "assistant", "value": "不相关/相关" }] }] 微调数据1W,单卡lora训练 微调结果效果奇差,首先没有按照不相关/相关给我回复,其次回复的内容没有语言逻辑,截取3个回复,如: 1、【欢迎关注“李斯舟源为你作答”。 哈哈好好格杠……洪生 咱们可以创造氛围先 答案仅来自文本绝…… 非要做请开口……

“上述知识点是固定背完的一样】 2、【选自课本 抽剑熔铸瑞柯王哥阿强盘 【根源再现 道明西坝 卡也西校】 3、【这个导,真人 彼得皮层有关的地方长相,第一重新生香泰德 圣女果根据照片的感觉 【法里舞街的生活!小伙伴们和我里面 吵过那些事儿 这都难过的,其实是这样的 中文这么小,布鲁托_ 人类各种有特色的地方铁证童男的概率岛 粗铁里,劈水那种男生 加一个奶

女人出手砰 当改成尸体撞别人然后做真相之类的但是那些那个灌上, 今天想被人去做了一个什么意思干爹镇渣宝能有新意思 黑色公寓的特种厨师斑枯人般的电影 裤怎么回事 祖一波的战队积分游戏磨洗雪精呢我觉得是法一下宝然后美哦肖出什么事情了 小葫芦的功能试管一声咽音那个贝文小哥肉宝宝 估计周围哪儿出了动物的快递口。游戏 的行李库圈我是心的学校北期锦巴巴的方式北线寄内胸死 整人小狗丢一波人,靠谱洪 锦游泳的能力一起看到了新的真相这样的作用】

复现方法 | Steps To Reproduce

使用qwen1.8b微调相关性模型,训练格式如下:关键信息已经打码 [{ "id": "0", "conversations": [{ "from": "user", "value": "请判断下面的【A】和【B】是否相关,如果相关请输出“相关”,不相关请输出“不相关”,无法确定请输出“不相关”\n\n【A】:A\n【B】:B" }, { "from": "assistant", "value": "不相关/相关" }] }] 微调数据1W,单卡lora训练 微调结果效果奇差,首先没有按照不相关/相关给我回复,其次回复的内容没有语言逻辑,截取3个回复,如: 1、【欢迎关注“李斯舟源为你作答”。 哈哈好好格杠……洪生 咱们可以创造氛围先 答案仅来自文本绝…… 非要做请开口……

“上述知识点是固定背完的一样】 2、【选自课本 抽剑熔铸瑞柯王哥阿强盘 【根源再现 道明西坝 卡也西校】 3、【这个导,真人 彼得皮层有关的地方长相,第一重新生香泰德 圣女果根据照片的感觉 【法里舞街的生活!小伙伴们和我里面 吵过那些事儿 这都难过的,其实是这样的 中文这么小,布鲁托_ 人类各种有特色的地方铁证童男的概率岛 粗铁里,劈水那种男生 加一个奶

女人出手砰 当改成尸体撞别人然后做真相之类的但是那些那个灌上, 今天想被人去做了一个什么意思干爹镇渣宝能有新意思 黑色公寓的特种厨师斑枯人般的电影 裤怎么回事 祖一波的战队积分游戏磨洗雪精呢我觉得是法一下宝然后美哦肖出什么事情了 小葫芦的功能试管一声咽音那个贝文小哥肉宝宝 估计周围哪儿出了动物的快递口。游戏 的行李库圈我是心的学校北期锦巴巴的方式北线寄内胸死 整人小狗丢一波人,靠谱洪 锦游泳的能力一起看到了新的真相这样的作用】

运行环境 | Environment

- OS:
- Python:
- Transformers:
- PyTorch:
- CUDA (`python -c 'import torch; print(torch.version.cuda)'`):

备注 | Anything else?

No response

mechigonft avatar Dec 08 '23 02:12 mechigonft

1、没有基本的指令遵循能力,需要返回不相关/相关 2、返回内容无语言逻辑

mechigonft avatar Dec 08 '23 02:12 mechigonft

感觉没有正常被微调,可以看看能否背出来你训练集的结果

liudayiheng avatar Dec 08 '23 04:12 liudayiheng

确实背不出来,怎么回事呢,微调数据1W条也不少了,用的lora,单卡(A100)微调,微调数据格式也是按照json格式的要求

mechigonft avatar Dec 08 '23 05:12 mechigonft

我用的AutoPeftModelForCausalLM调用的微调后的模型,脚本如下: from peft import AutoPeftModelForCausalLM from transformers.generation import GenerationConfig from transformers import AutoModelForCausalLM, AutoTokenizer

path_to_adapter = 'out_file' model = AutoPeftModelForCausalLM.from_pretrained( path_to_adapter, # path to the output directory device_map="auto", trust_remote_code=True ).eval()

tokenizer = AutoTokenizer.from_pretrained(path_to_adapter, trust_remote_code=True)

prompt = 'xxx'

inputs = tokenizer(prompt, return_tensors='pt') inputs = inputs.to(model.device) pred = model.generate(**inputs) print(tokenizer.decode(pred.cpu()[0], skip_special_tokens=True))

mechigonft avatar Dec 08 '23 05:12 mechigonft

首先:我的微调后的模型没有合并,而是用的AutoPeftModelForCausalLM调用, 其次,我只有一张A100,所以用的lora单卡微调方式 我不确定是不是因为这些原因导致效果不行

mechigonft avatar Dec 08 '23 05:12 mechigonft

我准备用全参数方式重新微调一下,我的基座模型是1.8b,全参数是可以在单卡跑通的

mechigonft avatar Dec 08 '23 05:12 mechigonft

目前我正在使用单卡(A100)以全参数微调的方式微调Qwen1.8B,之前被官方误导了,他们说全参数方式不提供单卡训练脚本,实际上1.8B是可以在单卡上全参数微调的,这样就不需要考虑lora模型合并的事情了

mechigonft avatar Dec 08 '23 06:12 mechigonft

类似的问题,微调了一下翻译的数据,生成的结果是乱的。

SefaZeng avatar Dec 08 '23 11:12 SefaZeng

类似的问题,微调了一下翻译的数据,生成的结果是乱的。

this

SefaZeng avatar Dec 08 '23 11:12 SefaZeng

我也遇到了,训练集完全按照官方要求的格式,之前我用qlora微调Qwen-14B,效果还不错,但是同一份训练集,现在用LoRA多卡微调Qwen-1.8B,效果奇差,模型全在乱答,但是训练过程中并未发现异常,loss一直稳定下降到0.01左右,不知道哪里出现了问题

zhouenxian avatar Dec 12 '23 05:12 zhouenxian

@zhouenxian 我用1.8b的chat版本微调了,最起来没有乱答现象,是按照我的指令输出内容的,最好用chat版本吧,chat版本应该是通过指令遵循微调后的版本

mechigonft avatar Dec 12 '23 06:12 mechigonft

@mechigonft 是的,我用的就是chat版本进行LoRA微调的

zhouenxian avatar Dec 12 '23 06:12 zhouenxian

@zhouenxian 有可能是lora的问题,你既然有多卡,就直接用全参数微调吧,我之前lora+1.8b效果不好,现在换成全参数+1.8bchat效果提升(仅限在指令遵循上效果好了,起码没有胡说八道)

mechigonft avatar Dec 12 '23 06:12 mechigonft

@mechigonft 好的,谢谢指点。想问一下,效果比起没微调之前提升大吗?我这里的情况是,在没微调之前测试过qwen-1.8B-chat在我这个垂域做指定任务的能力,发现没微调之前,效果不算特别特别差,但是以lora微调1.8B-chat之后(数据1w+),发现微调之后的模型几乎不能产生正常输出,全在乱答。

zhouenxian avatar Dec 12 '23 07:12 zhouenxian

感觉没有正常被微调,可以看看能否背出来你训练集的结果

官方能不能提供一个 base model 的 finetune 脚本示例?

SefaZeng avatar Dec 12 '23 07:12 SefaZeng

@zhouenxian 我感觉微调前后效果都不行,可能是我的任务太难了

mechigonft avatar Dec 12 '23 07:12 mechigonft

我又以单卡qlora微调了qwen-1.8B-chat-INT4模型,还是在那份1w+的数据集上微调的,微调之后有效果了,大概率应该是lora微调有Bug

zhouenxian avatar Dec 12 '23 09:12 zhouenxian

  1. 请不要用LoRA微调量化模型,量化模型需要用QLoRA。
  2. QLoRA达到较好效果需要多调参。
  3. 请不要用QLoRA微调非量化模型,非量化模型请用LoRA。
  4. 从base模型微调,需要微调embedding/output layer,README中有说明,脚本都是支持的(自动识别),但不要改模型路径名。
  5. 从base模型微调需要更多的数据才能学会对话格式。

jklj077 avatar Jan 02 '24 12:01 jklj077

你有测过Qwen1.8B的基础模型能否复现论文精度么?

duany049 avatar Mar 05 '24 02:03 duany049