shibing624 / MedicalGPT

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

大佬,使用自己数据进行增量预训练时,loss不降反增。 #280

Closed SevenMpp closed 1 month ago

SevenMpp commented 10 months ago

大佬,在增量预训练时,使用的是企业的一些简介和经营范围进行尝试训练(所有数据都是领域数据的文本)差不多使用了10W条数据,但是在训练时,发现loss一直在缓慢的增加,请问您遇到过这种问题吗? 启动命令: CUDA_VISIBLE_DEVICES=0 torchrun --nproc_per_node 1 pretraining.py --model_type chatglm --model_name_or_path ../chatglm3-6b-32k --train_file_dir ./data/pretrain --per_device_train_batch_size 8 --per_device_eval_batch_size 8 --do_train --do_eval --use_peft True --seed 42 --max_train_samples -1 --max_eval_samples -1 --num_train_epochs 3 --learning_rate 2e-4 --warmup_ratio 0.05 --weight_decay 0.01 --logging_strategy steps --logging_steps 10 --eval_steps 100 --evaluation_strategy steps --save_steps 1000 --save_strategy steps --save_total_limit 13 --gradient_accumulation_steps 1 --preprocessing_num_workers 10 --block_size 1024 --output_dir outputs-pt-cahtglm-v1 --overwrite_output_dir --ddp_timeout 30000 --logging_first_step True --target_modules all --lora_rank 8 --lora_alpha 16 --lora_dropout 0.05 --torch_dtype float16 --device_map cuda --report_to tensorboard --ddp_find_unused_parameters False --gradient_checkpointing True --cache_dir ./cache

tensorboard 显示loss 信息: 微信图片_20231205114138

由于loss趋势看着比较不靠谱,因此我试了一下,使用merge_peft_adapter.py将模型合并,使用python gradio_demo.py --model_type chatglm --base_model outputs-merged/,输入问题预测结果为:

[gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK][gMASK]

shibing624 commented 10 months ago

那你的数据需要清洗,或者用测试数据看下。

SevenMpp commented 10 months ago

好的,那我清洗尝试 下,非常感谢您的回复。

SevenMpp commented 10 months ago

您好,非常抱歉,再次请教:

我清洗了数据 或使用您工程里面带的数据,发现在跑的时候都会出现,loss先降在升的情况,其中的修改是将 --per_device_train_batch_size 4 --per_device_eval_batch_size 4 两个参数由8变4这个应该没有影响,也将--block_size 1024 又512改成1024,使用的是chatglm2-6b-32k 请问是模型的原因??? 企业微信截图_1701831151444 并且使用 python gradio_demo.py --model_type chatglm --base_model ../chatglm2-6b-32k/ --lora_model outputs-pt-cahtglm-v1 --template_name chatglm2 其中 outputs-pt-cahtglm-v1 的内容为: 图片 使用web-ui进行预测,返回的内容都存在问题,

企业微信截图_17018324434210

gctian commented 10 months ago

@SevenMpp loss先降后升的问题解决了吗?我也碰到了一样的问题

SevenMpp commented 10 months ago

@SevenMpp loss先降后升的问题解决了吗?我也碰到了一样的问题

暂时还没有解决该问题?正在解决中

shibing624 commented 10 months ago

用loss最低的checkpoint

SevenMpp commented 9 months ago

用loss最低的checkpoint

好的,感谢,嗯 最低的checkpoint 只训练了0.02个epoch,另外我看了下chatglm3,好像是不支持增量预训练的?不知道是不是这个原因,导致预训练只是文本进入,而不是微调的数据格式导致的这种现象的出现。不知道我的理解是否正确?

SevenMpp commented 9 months ago

用loss最低的checkpoint

好的,感谢,嗯 最低的checkpoint 只训练了0.02个epoch,另外我看了下chatglm3,好像是不支持增量预训练的?不知道是不是这个原因,导致预训练只是文本进入,而不是微调的数据格式导致的这种现象的出现。不知道我的理解是否正确?因为我试了baichuan2 看着loss就相对比较正常。

qinyuenlp commented 8 months ago

用loss最低的checkpoint

好的,感谢,嗯 最低的checkpoint 只训练了0.02个epoch,另外我看了下chatglm3,好像是不支持增量预训练的?不知道是不是这个原因,导致预训练只是文本进入,而不是微调的数据格式导致的这种现象的出现。不知道我的理解是否正确?

@SevenMpp 请问是哪里发现chatglm3不支持增量预训练的呢?

sevenandseven commented 6 months ago

用loss最低的checkpoint

好的,感谢,嗯 最低的checkpoint 只训练了0.02个epoch,另外我看了下chatglm3,好像是不支持增量预训练的?不知道是不是这个原因,导致预训练只是文本进入,而不是微调的数据格式导致的这种现象的出现。不知道我的理解是否正确?

@SevenMpp 请问是哪里发现chatglm3不支持增量预训练的呢?

你好,我最近也在做增量预训练,是在chatglm3-base模型的基础上预训练,但是训练完成后发现测试结果会不断重复回答,并且输出特殊字符,一直在不断地输出,请问有什么好的方法解决吗。

qinyuenlp commented 6 months ago

用loss最低的checkpoint

好的,感谢,嗯 最低的checkpoint 只训练了0.02个epoch,另外我看了下chatglm3,好像是不支持增量预训练的?不知道是不是这个原因,导致预训练只是文本进入,而不是微调的数据格式导致的这种现象的出现。不知道我的理解是否正确?

@SevenMpp 请问是哪里发现chatglm3不支持增量预训练的呢?

你好,我最近也在做增量预训练,是在chatglm3-base模型的基础上预训练,但是训练完成后发现测试结果会不断重复回答,并且输出特殊字符,一直在不断地输出,请问有什么好的方法解决吗。

repetition_penalty参数设置一个大于1的值,如1.1或1.5

sevenandseven commented 6 months ago

好的,感谢您的回复,我尝试一下。  

慈西 @.***

 

------------------ 原始邮件 ------------------ 发件人: "覃悦(Yue @.>; 发送时间: 2024年3月21日(星期四) 上午8:50 收件人: @.>; 抄送: @.>; @.>; 主题: Re: [shibing624/MedicalGPT] 大佬,使用自己数据进行增量预训练时,loss不降反增。 (Issue #280)

用loss最低的checkpoint

好的,感谢,嗯 最低的checkpoint 只训练了0.02个epoch,另外我看了下chatglm3,好像是不支持增量预训练的?不知道是不是这个原因,导致预训练只是文本进入,而不是微调的数据格式导致的这种现象的出现。不知道我的理解是否正确?

@SevenMpp 请问是哪里发现chatglm3不支持增量预训练的呢?

你好,我最近也在做增量预训练,是在chatglm3-base模型的基础上预训练,但是训练完成后发现测试结果会不断重复回答,并且输出特殊字符,一直在不断地输出,请问有什么好的方法解决吗。

repetition_penalty参数设置一个大于1的值,如1.1或1.5

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>