Facico / Chinese-Vicuna

Chinese-Vicuna: A Chinese Instruction-following LLaMA-based Model —— 一个中文低资源的llama+lora方案,结构参考alpaca
https://github.com/Facico/Chinese-Vicuna
Apache License 2.0
4.14k stars 425 forks source link

关于语料 #30

Closed ZenXir closed 1 year ago

ZenXir commented 1 year ago

[BELLE](https://github.com/LianjiaTech/BELLE) 这里公开了 8M的 80W条 多轮对话的语料

格式是这样:

instruction: 指令(这里是Human/Assistant,多轮对话上下文)
input: 输入(均为空)
output: 输出

这个语料可以直接用来finetune吗?还是需要把instruction里的多轮对话的上下文整理出来? 如果想让finetune的效果对多轮对话有较好支持 是不是保留现在格式 直接finetune比较好?

Evilran commented 1 year ago

@ZenXir 在 merge.json 的内容里好像也有多轮对话的语料:

{'instruction': 'User:担任に質問したいんだけど、言葉が出てこないんだ。 Assistant:担任に質問をしたいときには、自分の心地が良いように質問する環境を作ってから質問する必要があります。 User:どうしたらいい? Assistant:まずは、自然と話す環境を作ること。場の明るさ、周囲の雰囲気、お茶を淹れて友達とゆっくりおしゃべりすることなど、担任への質問に余裕を持った質問をしていくために心地よく環境を保つことが大切です。', 'input': 'User:担任に質問をするときの環境を整えるにはどうすればいいですか?', 'output': '担任に質問をするときの環境を整えるには、自己紹介をするなど友好的なサインを示すことが重要です。また、落ち着いた場所で話をしたり、担任の質問に応じて余裕を持って話すことも役立つでしょう。あるいは、担任が喜んでいるような気持ちの良い空間を作ることも重要な要素です。'}

应该可以保留现有的格式继续 finetune

ZenXir commented 1 year ago

好的

Facico commented 1 year ago

可以参考这里,https://github.com/Facico/Chinese-Vicuna/issues/11#issuecomment-1492189725

guanaco数据集中的多轮对话后面没有拼接Assistant:,belle对话后面有拼接Assistant:,可以注意一下(因为我们的prompt中有response这个字段所以理论不用拼接Assistant:,可以将belle后面的assistant处理掉)。

还需要注意的一点是,目前我们finetune中使用的全局instruction是通用形式的(如:Below is an instruction that describes a task, paired with an input that provides further context. Write a response that appropriately completes the request.),是没有带多轮对话指令的(像chat.py或interaction.py中的指令,如:“The following is a conversation between an AI assistant called Assistant and a human user called User.”),虽然在推理的时候它还是能一定地理解它,但终究是和finetune的时候有一层gap,现在对话语料多了,可以考虑如下方式可能能提升对话效果:

如果要一起训练的话,目前推荐使用上面第一种,处理简单一点,也多占用不了多少token

Evilran commented 1 year ago

@Facico 大佬您好,我还有一个关于语料的问题。我看 merge.json 文件里的数据是没有去重的,重复的数据会对训练造成影响吗?

Facico commented 1 year ago

@Evilran 非常感谢你提到这点问题。merge.json 我们是直接用belle(0.5M)和guanaco上一个版本(chat和nonchat)的数据合并的,当时没有仔细关注是否有重复的问题,我大概看了一下,一个是belle和guanaco里的一些指令的重复,另外一个是他们自己收集的问题。

统计了一下,指令+答案重复的大概有700条数据是存在重复,重复两次以上的是46条。不过在merge.json的数据规模下影响不会很大,毕竟在经过3个epoch的前提下,每条数据都会重复去finetune,不过可能会对里面某几个问题拟合程度可能会高一点。当然你也可以将重复的数据给去除掉,不过估计对模型整体效果影响不大。

Facico commented 1 year ago

这个belle数据挺好的,你们要训别用guanaco的那个chat数据了,里面全是猫娘。。。

Evilran commented 1 year ago

@Facico :joy: 好的,感谢大佬