THUDM / ChatGLM2-6B

ChatGLM2-6B: An Open Bilingual Chat LLM | 开源双语对话语言模型
Other
15.71k stars 1.85k forks source link

[Help] ChatGLM2在lora训练后,泛化性变得很差,只能回复固定的一些问题,稍加改动模型输出为空 #571

Closed cipolee closed 1 year ago

cipolee commented 1 year ago

Is there an existing issue for this?

Current Behavior

ChatGLM2在lora训练后,泛化性变得很差,只能回复固定的一些问题,稍加改动模型输出为空 例如我在航天领域内的数据上训练

  1. 当我问 "神舟飞船的发射时间?"(还包含其他我设置的一些prompt) 模型可以正常的生成response
  2. 当我问 "神舟飞船的发射时间是什么时候?"(还包含其他我设置的一些prompt) 模型输出为""

Expected Behavior

No response

Steps To Reproduce

训练集大小 15000 samples batch size 8 gradient_accumulation_steps 4 finetuning_type lora epoch 40 lr 5e-5 训练到大概12000步,模型出现不能生成new token的现象,输出为""

Environment

- OS: CentOS Linux release 7.8.2003 (Core)
- Python:3.10.10
- Transformers: 4.28.1
- PyTorch: 2.0.1
- CUDA True CUDA 11.8

Anything else?

No response

cipolee commented 1 year ago

在1000步的时候就开始出现遗忘,模型对大量的问题开始输出"" 指令微调里面存在多种任务 包括

  1. 根据标题续写【数量较少】
  2. 对话问题重写【数量较少】
  3. 单轮问题的一些指令【数量较多】
  4. 多轮对话问题的一些指令【数量较多】
cipolee commented 1 year ago

已解决,prompt在训练中引入一段指令,没有在评估引入 对于见过的问题,模型预测答案的概率是被提高了,所以看起来是正常的 对于没见过的问题,失去原有指令就开始不按照预期生成

sunyrain commented 1 year ago

已解决,prompt在训练中引入一段指令,没有在评估引入 对于见过的问题,模型预测答案的概率是被提高了,所以看起来是正常的 对于没见过的问题,失去原有指令就开始不按照预期生成

这是什么意思啊?比方说广告训练集是content、summary标签,训练好了以后提问也要说“content”、“summary”吗?

cipolee commented 1 year ago

是的