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

关于语料 #30

Closed
ZenXir opened this issue Apr 3, 2023 · 7 comments
Closed

关于语料 #30

ZenXir opened this issue Apr 3, 2023 · 7 comments

Comments

@ZenXir
Copy link

ZenXir commented Apr 3, 2023

[BELLE](https://huggingface.co/datasets/BelleGroup/multiturn_chat_0.8M)
这里公开了 8M的 80W条 多轮对话的语料

格式是这样:

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

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

@Evilran
Copy link

Evilran commented Apr 3, 2023

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

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

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

@ZenXir
Copy link
Author

ZenXir commented Apr 3, 2023

好的

@ZenXir ZenXir closed this as completed Apr 3, 2023
@Facico
Copy link
Owner

Facico commented Apr 3, 2023

可以参考这里,#11 (comment)

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,现在对话语料多了,可以考虑如下方式可能能提升对话效果:

  • 1、在dataset的instruction中直接插入:“The following is a conversation between an AI assistant called Assistant and a human user called User.”,相当于各种任务还是有一个全局指令,只不过对话多套了一层
  • 2、在finetune中根据不同的语料使用不同的全局instruction,相当于对话和其他任务使用不同的全局指令。

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

@Evilran
Copy link

Evilran commented Apr 3, 2023

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

@Facico
Copy link
Owner

Facico commented Apr 3, 2023

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

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

@Facico
Copy link
Owner

Facico commented Apr 3, 2023

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

@Evilran
Copy link

Evilran commented Apr 3, 2023

@Facico 😂 好的,感谢大佬

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants