shibing624 / MedicalGPT

MedicalGPT: Training Your Own Medical GPT Model with ChatGPT Training Pipeline. 训练医疗大模型,实现了包括增量预训练(PT)、有监督微调(SFT)、RLHF、DPO、ORPO。
Apache License 2.0
2.94k stars 452 forks source link

合并多个模型后,合并模型处理请求会卡死 #311

Closed growmuye closed 5 months ago

growmuye commented 5 months ago

合并步骤: step1:lora_mode1 合并 base_model 输出 merge_model1 step2:lora_mode2 合并 merge_model1 输出 merge_model2 step3:lora_mode3 合并 merge_model2 输出 merge_model3

合并脚本(总计将7个模型合): CUDA_VISIBLE_DEVICES= nohup python merge_peft_adapter.py --model_type baichuan --base_model /temp/LLM/baichuan2-13b-chat --tokenizer_path /temp/LLM/baichuan2-13b-chat --lora_model /temp/merge_model/ --output_dir *** > ./logs/log-merge-v1.txt 2>&1 &

采用fastapi启动后(4张卡,每张30G左右内存),稳定的出现:

image

行标题:合并-{count},如count=7代表合并了lorad1~lorad7 列标题:多个基于baichuan2-13b-chat 完全独立训练的lorad_model模型 其中❌代表卡死,并且可稳定复现 PS:作者如果对这个问题感兴趣,可留言加好友,我这里可100%配合

shibing624 commented 5 months ago

合并后,清理显存了没

growmuye commented 5 months ago

合并后,清理显存了没

我当时以为是自己的环境问题,于是重新换了一个新环境,在新环境下测试合并后模型也是同样的问题; 我的问题描述不够清楚,补充如下:

每一个lora_model都是为一个业务单独微调的如:识别用户求职意图。现象是这样的:当我合并了lora_model1~6(合并-6)后,lora_model2的prompt总会导致卡死,几乎100%复现;并且✅的prompt总可以正常运行,非常奇怪。

growmuye commented 5 months ago

@shibing624 问题范围定位到了,以下是lora_mode2的测试数据集中prompt片段: """prompt片段开始 <功能清单>: 功能:... 功能:... 功能:... 功能:... 功能:... 功能:... 功能:... 功能:... 功能:... 功能:无法判断 功能说明:不属于上述描述的功能。 </功能清单> """prompt片段结束

其中:当移除”无法判断“功能项时,prompt可正常执行,添加该项后prompt执行卡死(多种排列组合,甚至将该项添加到其他业务的prompt中后也会卡死)。至于为什么会这样,目前还未弄明白。

shibing624 commented 5 months ago

收到,我也不清楚。

chloefresh commented 4 months ago

@growmuye 这个问题弄明白了吗?我也遇到了类似的问题

growmuye commented 4 months ago

@growmuye 这个问题弄明白了吗?我也遇到了类似的问题

抱歉,我也没定位到问题。不过我改变了方案,该问题也不存在了,不知道是否对你有用:

  1. 使用Qwen模型
  2. 将多个模型的数据合并一起训练一个lora,然后只merge一次
  3. 训练工具换成了Qwen自带的
chloefresh commented 4 months ago

@growmuye 感谢回复~很有用~