Knover
Knover copied to clipboard
关于plato2的persona定制
您好,我看了issue #24,尝试在24L的plato-2上使用persona定制,修改代码如下:
https://github.com/PaddlePaddle/Knover/blob/9d0db786dca9c575b40eb5776c6620bbd6657070/knover/scripts/interact.py#L84 改成:
personas = ["your persona: i have three cats.", "your persona: i am 20 years old.", "your persona: i like eggs."]
example = Example(src=" [SEP] ".join(personas + data.decode("utf8")), data_id=0)
https://github.com/PaddlePaddle/Knover/blob/9d0db786dca9c575b40eb5776c6620bbd6657070/knover/scripts/interact.py#L127 改成:
personas = ["your persona: i have three cats.", "your persona: i am 20 years old.", "your persona: i like eggs."]
src = " [SEP] ".join(personas + context)
执行interact后结果混乱,如下:
能否帮忙看下,是哪里使用不对吗?
更新问题:试了下32L的model可以,看来采用BST微调是定制的关键。请问 1、这种定制能力是完全依靠数据集吗? 2、上面的代码在每次对话都append persona信息,使用是否正确?还是只要第一句话加入即可?
更新问题:试了下32L的model可以,看来采用BST微调是定制的关键。请问 1、这种定制能力是完全依靠数据集吗? 2、上面的代码在每次对话都append persona信息,使用是否正确?还是只要第一句话加入即可?
24L 开源的模型是没有经过 BST finetune 的
- 这种能力主要还是来自于 finetune,会生成下游数据集的格式的对话
- 只需要保证传进去的 src 里面最前面是 persona信息,这是当时我们的开源模型训练时使用的格式;你这里处理的方式没问题,因为 interact 脚本里只维护了对话历史,没有单独维护 persona,可以按照你这种方式处理的
另外分布式 interact 脚本改的有点问题哈,大致是需要改成(不过这里还有一些边界需要处理下)
personas = ["your persona: i have three cats.", "your persona: i am 20 years old.", "your persona: i like eggs."]
example = Example(src=" [SEP] ".join(personas) + " [SEP] " + data.decode("utf8"), data_id=0)
感谢回复,另外问下self-chat有脚本可以运行吗 代码里没找到
self chat的代码,我后面可以提供一个,大概月底有时间了吧
https://github.com/PaddlePaddle/Knover/pull/118
我这里提供了一个 self-chat 的脚本,和一个 demo 配置
./scripts/local/job.sh ./package/dialog_en/self_chat.conf
默认是以"hi"作为对话的开头,你可以在infer_args
里面加一个--in_file
来指定以什么为开头,进行self-chat
具体的可以参考 knover/scripts/self_chat.py
,里面的逻辑也不是很复杂,可以参考着改
self_chat 的配置可以参考./package/dialog_en/24L_infer.conf
改动解码策略