Closed yout0703 closed 1 year ago
关键问题在于 task_type 中,entity_extraction 与 relation_extraction 的区别,如果既要识别实体又要识别关系,是不是可以使用 relation_extraction ?
@yout0703 你好,感谢对UIE的关注
1.蒸馏过程中需要将 sample_index.json 放到 ./data 目录下,这个文档没有提到,这个 sample_index.json 是否就是老师模型训练时的训练数据分布?可以完善下文档 A: 是的,封闭域模型训练和验证集会通过sample_index.json来对齐老师模型的训练数据分布
2.「老师模型」的 scheme 是有实体也有关系的那种比如:schema = [ "年龄", "性别","人名","学校", {"所在学校": ["人名", "学校"]}],这种情况下蒸馏时应该使用什么 task_type (task_type 的取值含义没有在官方文档找到)? A:task_type选relation_extraction即可
3.是否选择了 entity_extraction , schema 中就不能有关系类型的项? A:同问题二,后续版本我们会去除这个参数,提供更简化易用的使用流程
4.是否蒸馏只能将实体抽取和关系抽取分开进行,能否达到类似老师模型的效果,既能输出实体也能输出关系? A:可以联合抽取,Taskflow输出数据格式同老师模型是一致的
5.看有 issue 表示蒸馏后速度也是比较慢,在官方的试验中,蒸馏以后的模型能否达到 CPU 部署的要求,响应时间在 20ms 之内 A:同样模型尺寸下前向的推理速度基本一致,区别主要在于老师模型需要跑多次前向推理,因此推理速度主要由schema的复杂度决定,学生模型则不受schema复杂度的影响;同时学生模型可以选择uie-micro、uie-nano这些层数较少的模型来进一步提升速度,uie-nano + fp16在GPU侧QPS可以达到100+
@linjieccc 非常感谢,解释下关于 task_type 的疑问来自我使用 relation_extraction 蒸馏模型时,对老师模型进行评估三个值都是 0,以为不能用,那我再去试试 relation_extraction 的蒸馏。
另:ernie-3.0-mini-zh + entity_extraction + 18个实体类型的 schema 蒸馏后,在 4核 CPU(阿里云)的机器上能达到 50ms 左右的 RT(待抽取文本在100字以内),效果还是可以的,供大家参考。
@linjieccc 换成 relation_extraction 以后无法训练学生模型,帮看下是什么问题。
This issue is stale because it has been open for 60 days with no activity. 当前issue 60天内无活动,被标记为stale。
This issue was closed because it has been inactive for 14 days since being marked as stale. 当前issue 被标记为stale已有14天,即将关闭。
请提出你的问题
Hello,首先必须要感谢 PaddlePaddle 团队提供的如此好用的 UIE。 我这边参照这个教程进行微调后的 uie 模型蒸馏,目的是加快速度,提供 CPU 部署的可能性。 期间遇到几个问题,希望得到解答:
期待得到答复,非常感谢。