mymusise / ChatGLM-Tuning

基于ChatGLM-6B + LoRA的Fintune方案
MIT License
3.73k stars 440 forks source link

Lora微调结束后如何实现多轮对话呢 #160

Open songsa1 opened 1 year ago

songsa1 commented 1 year ago

如题,微调结束后,应该如何实现多轮对话呢?历史的问答记录应该如何构造,放在哪儿呢? image

我看官方THUDM/ChatGLM-B中cli_demo中时使用的model.stream_chat,请问model.generate应该如何构造呢 image

songsa1 commented 1 year ago

我将历史的QA对拼接在新问题之前,这样我从结果上看到是可以进行多轮对话的,但是我发现了一个问题,不清楚原因,能否帮忙解答:

  1. 多轮对话中随着对话轮数增加,消耗的显存也一直在增加,我觉得最终可能会爆显存,这是什么原因呢?和每次问题的文本长度有关吗?
dongdongrj commented 1 year ago

同问

cristianohello commented 1 year ago

@songsa1 可以把history取history[-3:],防止爆显存。history长了,就爆显存了。还可以限制输入的长度,超过某个值后就删掉一部分历史信息。

问你两个问题 1:预测的时候你怎么拼接的多轮对话数据? 2:还有就是,多轮对话的时候,你的微调数据组织形式是怎样的?

yyyhz commented 1 year ago

我将历史的QA对拼接在新问题之前,这样我从结果上看到是可以进行多轮对话的,但是我发现了一个问题,不清楚原因,能否帮忙解答:

  1. 多轮对话中随着对话轮数增加,消耗的显存也一直在增加,我觉得最终可能会爆显存,这是什么原因呢?和每次问题的文本长度有关吗?

想问一下您具体是如何修改代码进行拼接的?