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

有GLM在 CMRC上下游fine-tuned 之后的模型吗? #173

Closed
svjack opened this issue Dec 14, 2022 · 8 comments
Closed

有GLM在 CMRC上下游fine-tuned 之后的模型吗? #173

svjack opened this issue Dec 14, 2022 · 8 comments

Comments

@svjack
Copy link

svjack commented Dec 14, 2022

1、如题 有在阅读理解上调试后的模型吗?
2、而且 predictor 构造的模版分布于collect_fn中

        elif self.task_name in ["cmrc"]:
            mask_id = self.tokenizer.get_command_id('MASK')
            source_text = example.text_a
            target_text = example.meta["answer"].strip()
            question = example.meta["question"].strip()
            source_tokens = self.tokenizer.EncodeAsIds(source_text.rstrip())
            question_tokens = self.tokenizer.EncodeAsIds("问题:" + question +
                                                         "答案:")
            max_src_length = self.args.max_src_length - len(
                question_tokens) - 2
            if max_src_length <= 0:
                question_tokens = question_tokens[self.args.max_src_length //
                                                  4]
            source_tokens = [cls_id] + question_tokens + [
                mask_id
            ] + source_tokens[:max_src_length]

是否考虑将这部分做文档进行说明。

3、数据集的导入和预处理是依赖于具体数据集名称 而不依赖于更一般的任务格式和数据集格式 会增加用户模仿数据集输入格式的成本。

@BAAI-OpenPlatform
Copy link
Collaborator

您好,

  1. 目前暂时没有在阅读理解上调试好的模型
  2. 谢谢您的反馈,我们会为这部分补充说明
  3. 如果想模仿数据集输入格式的话,可以在./data下建一个同原数据集名称一样的文件夹,这样应该能够work

@svjack
Copy link
Author

svjack commented Dec 14, 2022

您好,

  1. 目前暂时没有在阅读理解上调试好的模型
  2. 谢谢您的反馈,我们会为这部分补充说明
  3. 如果想模仿数据集输入格式的话,可以在./data下建一个同原数据集名称一样的文件夹,这样应该能够work

作为生成器 解码段在长文本上会具有一定的优势,而在唯一短span抽取上对于抽取式未必有优势。
你们有调研过一些长答案阅读理解类的中文开源数据集吗?

@svjack
Copy link
Author

svjack commented Dec 14, 2022

您好,

  1. 目前暂时没有在阅读理解上调试好的模型
  2. 谢谢您的反馈,我们会为这部分补充说明
  3. 如果想模仿数据集输入格式的话,可以在./data下建一个同原数据集名称一样的文件夹,这样应该能够work

根据这段代码

source_tokens = [cls_id] + question_tokens + [
                mask_id
            ] + source_tokens[:max_src_length]

prompt中 “答案:" 后面直接跟 "MASK" 没有中括号 之后直接是context了是吗?
感觉有点别扭

@svjack
Copy link
Author

svjack commented Dec 14, 2022

并不像你在数据集预处理文档中描述的有 “背景信息:”的输入文本作为prompt构成。
https://github.com/FlagAI-Open/FlagAI/blob/master/docs/TUTORIAL_2_DATASET.md
但又很像,有什么原因吗?
能不能给出一个已经嵌入cmrc prompt 的predictor 的简单实现呢?

@BAAI-OpenPlatform
Copy link
Collaborator

https://github.com/FlagAI-Open/FlagAI/blob/master/docs/TUTORIAL_2_DATASET.md里的是提示学习的数据处理方式,
这里的seq2seq例子里,CMRC没有用到提示学习,先在flagai.data.dataset.seq2seq.dataset.CMRCProcessor里预处理,然后在collate_fn里组合出最终的tokens

@svjack
Copy link
Author

svjack commented Dec 15, 2022

https://github.com/FlagAI-Open/FlagAI/blob/master/docs/TUTORIAL_2_DATASET.md里的是提示学习的数据处理方式,
这里的seq2seq例子里,CMRC没有用到提示学习,先在flagai.data.dataset.seq2seq.dataset.CMRCProcessor里预处理,然后在collate_fn里组合出最终的tokens

没有用到提示学习 但在你的数据预处理函数中将数据用了

question_tokens = self.tokenizer.EncodeAsIds("问题:" + question +
                                                         "答案:")

source_tokens = [cls_id] + question_tokens + [
                mask_id
            ] + source_tokens[:max_src_length]

这种提示学习的编码方式,所以在估计的时候也要进行相同处理,但你没有给出 背景信息(或上下文)与前面的明确间隙(这里是MASK作为分隔),这种处理总感觉有些别扭。
不同的slot都应该有不同的提示词进行区分如:
问题:
答案:
背景信息:
区分开 好像才更整齐一些

@svjack
Copy link
Author

svjack commented Dec 15, 2022

实际在MRC任务上微调的过程,就是把blank filling QA换了一副固定模版 这个固定模版就是
问题:
答案:
背景信息:
求答案。而原来的blank filling QA不具有识别“背景信息:”作为参考的推理能力。(经过测试)
你来源于它,就应该尽量全方位“模仿”

@BAAI-OpenPlatform
Copy link
Collaborator

好的,感谢反馈,您是怎么测试的呢

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

2 participants