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 451 forks source link

预训练后模型出现自问自答、输出未知序列、重复口吃现象 #351

Open Peter-of-Astora opened 3 months ago

Peter-of-Astora commented 3 months ago

4预测问题、重复问题、未知字符问题

这个问题是出在哪里了呢? 如果我的预训练数据不是很多,我是不是应该调整一下LoRA的参数,让模型参数调整变少一点,具体可以怎么调整呢?

shibing624 commented 3 months ago
  1. 你这是把escape special tokens 打开了,关闭就好了;
  2. 如果要调整lora参数,就调整r(要参数小就调小),rank是秩,也可以调小。
  3. 数据重复问题,加大惩罚系数,改为1.2
Peter-of-Astora commented 3 months ago

不好意思还想再问一下,escape special tokens是在哪里设置呀,configuration的文件里面吗 然后惩罚系数的话,具体是指哪个参数呀😂

Peter-of-Astora commented 3 months ago

是要把tokenizer文件里面的这个设置成True吗 image

Riapy commented 3 months ago

是要把tokenizer文件里面的这个设置成True吗 image

请问您解决了吗?我也遇到了这个问题

Peter-of-Astora commented 3 months ago

惩罚系数是在这里: https://github.com/THUDM/ChatGLM3/blob/main/basic_demo/web_demo_gradio.py#L139 在api的demo和gradio的demo里面都有这个参数,关于特殊字符的参数也在这里面。 我更改了参数后,发现依然存在以上问题。

最后解决的办法是,用少量(20K以下就行)的通用SFT数据进行训练,发现可以进行正常的交流: image

所以应该是需要在增量预训练后进行能力恢复,就可以了。

tszslovewanpu commented 2 months ago

@Peter-of-Astora 您好,请教您一下 i、请问你的解决办法是sft中只用20k条样例来训练吗? ii、您的增量预训练用的样例数可以问一下吗? 我也出现了模型自问自答,甚至胡言乱语的情况,很头疼。。。