Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ChatGLM3-6b合并lora微调模型后,通过ChatGLM3-6b官方代码载入该合并后权重后对话内容和效果与没微调一样.. #1752

Closed
ghx2757 opened this issue Dec 6, 2023 · 21 comments
Labels
solved This problem has been already solved

Comments

@ghx2757
Copy link

ghx2757 commented Dec 6, 2023

1、合并权重log(感觉这里不太正常吖)
图片
2、导出权重后参考这个方法替换了对应文件
3、没合并前用web端的chat载入微调模型和原始权重模型有微调效果

这个问题是什么导致的啊?感谢感谢

@ghx2757 ghx2757 changed the title ChatGLM3-6b合并lora微调模型后,通过ChatGLM3-6b官方代码载入该合并后权重和没微调一样.. ChatGLM3-6b合并lora微调模型后,通过ChatGLM3-6b官方代码载入该合并后权重后对话内容和效果与没微调一样.. Dec 6, 2023
@hiyouga
Copy link
Owner

hiyouga commented Dec 8, 2023

#1307 (comment)

@hiyouga hiyouga added the solved This problem has been already solved label Dec 8, 2023
@hiyouga hiyouga closed this as completed Dec 8, 2023
@ghx2757
Copy link
Author

ghx2757 commented Dec 8, 2023

@hiyouga 非常感谢你的回复,#1307 (comment) 我的表述也许不是很清楚,以下是我的复现结果图:
模型已经经过微调了,和systerm-promot的写入影响不大吧,期待再次回复,谢谢!!
1702026875599
1702026995219

@yintju03
Copy link

我也碰到完全一样的问题

@dreammax2010
Copy link

和你情况一下,微调以后chat可以看到效果,导出模型以后加载进去,没有微调效果

@GitYohoo
Copy link

我也是同样的问题

@dreammax2010
Copy link

1、llamafactory lora微调我用的数据是 self_cognition.json,把里面的<>全部删掉,web chat 测试通过以后导出模型
2、导出的模型全部拷贝到 langchain chatchat 模型目录下
3、修改tokenization_chatglm.py ,其他都不改
#@Property
#def unk_token(self) -> str:
# return ""

#@property
#def pad_token(self) -> str:
#    return "<unk>"

#@property
#def eos_token(self) -> str:
#    return "</s>"

4、启动 langchain chatchat 指定模型名 --model-name 模型名

5、langchain chatchat 测试正常

@hiyouga 非常感谢你的回复,#1307 (comment) 我的表述也许不是很清楚,以下是我的复现结果图: 模型已经经过微调了,和systerm-promot的写入影响不大吧,期待再次回复,谢谢!! 1702026875599 1702026995219

@ghx2757
Copy link
Author

ghx2757 commented Dec 21, 2023

好的谢谢,llamafactory有api脚本,我在chatchat中使用目前是通过这个api,你提供的这个方法我试试,感谢感谢

@GitYohoo
Copy link

@dreammax2010 你好 我按照你的方法做了 为什么web chat 测试通过,但是langchan-chatchat还是无效
python startup.py -a --model-name chatglm3-6b

==============================Langchain-Chatchat Configuration==============================
操作系统:Linux-5.15.133.1-microsoft-standard-WSL2-x86_64-with-glibc2.35.
python版本:3.10.13 (main, Sep 11 2023, 13:44:35) [GCC 11.2.0]
项目版本:v0.2.8
langchain版本:0.0.344. fastchat版本:0.2.34

当前使用的分词器:ChineseRecursiveTextSplitter
当前启动的LLM模型:['chatglm3-6b'] @ cuda
{'device': 'cuda',
'host': '0.0.0.0',
'infer_turbo': False,
'model_path': '/home/llama/chatglm3-6b_lora',
'model_path_exists': True,
'port': 20002}
当前Embbedings模型: bge-large-zh @ cuda

image

而这个是webchat加载的模型,可以看到它确实是被微调过了
image

@GitYohoo
Copy link

@dreammax2010 chatglm2确实可以

@jingzl
Copy link

jingzl commented Dec 23, 2023

解决了吗?
用chatglm2-6b进行lora微调自我认知,导出模型后测试,没有问题。

用chatglm3-6b进行lora处理后,导出模型测试,出现同样的问题。按照楼上的几种方式修改后,web demo可以正常回答,但完全和微调前一样,微调没有效果。

@GitYohoo
Copy link

解决了吗? 用chatglm2-6b进行lora微调自我认知,导出模型后测试,没有问题。

用chatglm3-6b进行lora处理后,导出模型测试,出现同样的问题。按照楼上的几种方式修改后,web demo可以正常回答,但完全和微调前一样,微调没有效果。

chatchat-space/Langchain-Chatchat#2354 (comment)

@GhostMeng
Copy link

这个作者的意思是在原本调用的system prompt中必须加入“You are ChatGLM3, a large language model trained by Zhipu.AI.
Follow the user's instructions carefully. Respond using markdown.”,因为查看template.py后会发现,微调lora模型的时候模板中会带着这段句子。不需要考虑这个句子的具体含义是什么意思,只要system prompt带有这个句子,chatglm3的认知修改就可以成功了,而web chat使用chatglm3的模型的时候模板会默认把这个句子带进去。而chatglm2的模板中刚好没有该语句
想要实现不输入system prompt不带这个句子就能实现认知替换的话,就把template.py中register_template对应chatglm3的system中的内容删除。
我实现的效果如下
issues

@feb-cloud
Copy link

这个作者的意思是在原本调用的system prompt中必须加入“You are ChatGLM3, a large language model trained by Zhipu.AI.请仔细按照用户的说明进行操作。使用 markdown 进行响应。,因为查看 template.py 后会发现,微调lora模型的时候模板中会带着这段句子。不需要考虑这个句子的具体含义是什么意思,只要system prompt带有这个句子,chatglm3的认知修改就可以成功了,而web chat使用chatglm3的模型的时候模板会默认把这个句子带进去。而chatglm2的模板中刚好没有该语句 想要实现不输入system prompt不带这个句子就能实现认知替换的话,就把 template.py 中register_template对应chatglm3的system中的内容删除。 我实现的效果如下 issues

你这个解释最靠谱👍

@feb-cloud
Copy link

这个作者的意思是在原本调用的system prompt中必须加入“You are ChatGLM3, a large language model trained by Zhipu.AI. Follow the user's instructions carefully. Respond using markdown.”,因为查看template.py后会发现,微调lora模型的时候模板中会带着这段句子。不需要考虑这个句子的具体含义是什么意思,只要system prompt带有这个句子,chatglm3的认知修改就可以成功了,而web chat使用chatglm3的模型的时候模板会默认把这个句子带进去。而chatglm2的模板中刚好没有该语句 想要实现不输入system prompt不带这个句子就能实现认知替换的话,就把template.py中register_template对应chatglm3的system中的内容删除。 我实现的效果如下 issues

我刚刚采用这个方法,把template.py中的default_system="",导出后的效果还是没有效果,不知道哪里出现了问题。

@GhostMeng
Copy link

@BillowJiangCloud 格式应改为default_system=(“”),你看一下是否改正确了,新版本我测试了,这么修改使用没问题

@AIfengstudy
Copy link

请问你怎么使用(通过哪种方式?感谢回答!)

@BillowJiangCloud格式修改应改为default_system=(“”),你看一下是否改对了,新版本我测试了,这么用没问题

@bryant03
Copy link

bryant03 commented Mar 8, 2024

这个作者的意思是在原本调用的system prompt中必须加入“You are ChatGLM3, a large language model trained by Zhipu.AI. Follow the user's instructions carefully. Respond using markdown.”,因为查看template.py后会发现,微调lora模型的时候模板中会带着这段句子。不需要考虑这个句子的具体含义是什么意思,只要system prompt带有这个句子,chatglm3的认知修改就可以成功了,而web chat使用chatglm3的模型的时候模板会默认把这个句子带进去。而chatglm2的模板中刚好没有该语句 想要实现不输入system prompt不带这个句子就能实现认知替换的话,就把template.py中register_template对应chatglm3的system中的内容删除。 我实现的效果如下 issues

请问删除后要重新微调一遍模型么,期待您的回复。

@GhostMeng
Copy link

这个作者的意思是在原本调用的system prompt中必须加入“You are ChatGLM3, a large language model trained by Zhipu.AI. Follow the user's instructions carefully. Respond using markdown.”,因为查看template.py后会发现,微调lora模型的时候模板中会带着这段句子。不需要考虑这个句子的具体含义是什么意思,只要system prompt带有这个句子,chatglm3的认知修改就可以成功了,而web chat使用chatglm3的模型的时候模板会默认把这个句子带进去。而chatglm2的模板中刚好没有该语句 想要实现不输入system prompt不带这个句子就能实现认知替换的话,就把template.py中register_template对应chatglm3的system中的内容删除。 我实现的效果如下 issues

请问删除后要重新微调一遍模型么,期待您的回复。

是的,微调前删除,不然微调后的模型会带着这段话才能正常出效果

@hiyouga
Copy link
Owner

hiyouga commented Mar 8, 2024

@GhostMeng 现在我们更新了 template,默认的 chatglm3 template 不会携带系统提示词,而 chatglm3_system template 才会携带

Repository owner deleted a comment from dreammax2010 Mar 8, 2024
@LittleWhiteRushRushRush

好的谢谢,llamafactory有api脚本,我在chatchat中使用目前是通过这个api,你提供的这个方法我试试,感谢感谢

请问您解决这个问题了吗?就是微调导出模型后没有效果

@linjun0336
Copy link

我在使用LLaMA-Factory微调qwen2.5 7b的时候,也遇到了这样的问题,微调后,直接使用webui加载微调后的模型进行测试,微调是有效果的,但是用webui导出或者用指令导出后,都没有微调效果了,最后将学习率调大、学习次数变多了之后,再次微调导出之后,用qwen2.5官方的 python cli_demo.py 运行,就有微调效果了。参考一下呢

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
solved This problem has been already solved
Projects
None yet
Development

No branches or pull requests