5
5
- [ 问题生成] ( #问题生成 )
6
6
- [ 简介] ( #简介 )
7
7
<!-- - [基于预训练语言模型的问题生成](#基于预训练语言模型的问题生成) -->
8
- <!-- - [效果展示](#效果展示)
9
- - [开箱即用](#开箱即用) -->
8
+ <!-- - [效果展示](#效果展示) -->
9
+ - [ 开箱即用] ( #开箱即用 )
10
10
- [ 训练定制] ( #训练定制 )
11
11
- [ 环境依赖] ( #环境依赖 )
12
12
- [ 代码结构说明] ( #代码结构说明 )
@@ -27,6 +27,13 @@ Question Generation(QG),即问题生成,指的是给定一段上下文
27
27
28
28
问题生成技术在教育、咨询、搜索、推荐等多个领域均有着巨大的应用价值。具体来说,问题生成可广泛应用于问答系统语料库构建,事实性问题生成,教育行业题库生成,对话提问,聊天机器人意图理解,对话式搜索意图提问,闲聊机器人主动提问等等场景。
29
29
30
+ 本项目是基于预训练语言模型UNIMO-Text的问题生成,具有以下优势:
31
+
32
+ - 效果领先。基于百度自研中文预训练语言模型UNIMO-Text,并提供基于模版策略和大规模多领域问题生成数据集训练的通用问题生成预训练模型` unimo-text-1.0-question-generation ` 。
33
+ - 开箱即用。本项目提供TaskFlow接口,无需训练,仅需几行代码便可预测。
34
+ - 高性能推理。本项目基于FasterTransformer进行推理加速,能够提供更高性能的推理体验,优化后的推理模型在dureader_qg开发集的推理耗时缩短为优化前的1/5。
35
+ - 训练推理部署全流程打通。本项目提供了全面的定制训练流程,从数据准备、模型训练预测,到模型推理部署,一应俱全。
36
+
30
37
<!-- ### 基于预训练语言模型的问题生成
31
38
32
39
基于预训练语言模型(Pretrained Language Models, PLMs)范式的问题生成是目前最常用、效果最好(SOTA)的方式。
@@ -40,10 +47,34 @@ model_name = "ernie-1.0"
40
47
model = UNIMOLMHeadModel.from_pretrained(model_name)
41
48
tokenizer = UNIMOTokenizer.from_pretrained(model_name)
42
49
``` -->
43
- <!--
44
- ## 效果展示
45
50
46
- ## 开箱即用 -->
51
+ ## 开箱即用
52
+ PaddleNLP提供开箱即用的产业级NLP预置任务能力,无需训练,一键预测。
53
+ #### 支持单条、批量预测
54
+ ``` python
55
+ >> > from paddlenlp import Taskflow
56
+ # 默认模型为 unimo-text-1.0-dureader_qg
57
+ >> > question_generator = Taskflow(" question_generation" )
58
+ # 单条输入
59
+ >> > question_generator([
60
+ {" context" : " 奇峰黄山千米以上的山峰有77座,整座黄山就是一座花岗岩的峰林,自古有36大峰,36小峰,最高峰莲花峰、最险峰天都峰和观日出的最佳点光明顶构成黄山的三大主峰。" , " answer" : " 莲花峰" }
61
+ ])
62
+ '''
63
+ ['黄山最高峰是什么']
64
+ '''
65
+ # 多条输入
66
+ >> > question_generator([
67
+ {" context" : " 奇峰黄山千米以上的山峰有77座,整座黄山就是一座花岗岩的峰林,自古有36大峰,36小峰,最高峰莲花峰、最险峰天都峰和观日出的最佳点光明顶构成黄山的三大主峰。" , " answer" : " 莲花峰" },
68
+ {" context" : " 弗朗索瓦·韦达外文名:franciscusvieta国籍:法国出生地:普瓦图出生日期:1540年逝世日期:1603年12月13日职业:数学家主要成就:为近代数学的发展奠定了基础。" , " answer" : " 法国" }
69
+ ])
70
+ '''
71
+ ['黄山最高峰是什么', '弗朗索瓦是哪里人']
72
+ '''
73
+ ```
74
+ 关键配置参数说明:
75
+ * ` model ` :可选模型,默认为unimo-text-1.0-dureader_qg,支持的模型有[ "unimo-text-1.0", "unimo-text-1.0-dureader_qg", "unimo-text-1.0-question-generation", "unimo-text-1.0-question-generation-dureader_qg"] 。
76
+
77
+ 具体参数配置可参考[ Taskflow文档] ( ../../../docs/model_zoo/taskflow.md ) 。
47
78
48
79
## 训练定制
49
80
@@ -83,7 +114,7 @@ tokenizer = UNIMOTokenizer.from_pretrained(model_name)
83
114
84
115
2 . ** 模型训练**
85
116
86
- - 数据准备完成后,可以开始使用我们的数据集对预训练模型进行微调训练。我们可以根据任务需求,调整可配置参数,选择使用GPU或CPU进行模型训练,脚本默认保存在开发集最佳表现模型。中文任务默认使用" unimo-text-1.0" 模型,unimo-text-1.0还支持large模型,详见[ UNIMO模型汇总] ( https://paddlenlp.readthedocs.io/zh/latest/model_zoo/transformers/UNIMO/contents.html ) ,可以根据任务和设备需求进行选择 。
117
+ - 数据准备完成后,可以开始使用我们的数据集对预训练模型进行微调训练。我们可以根据任务需求,调整可配置参数,选择使用GPU或CPU进行模型训练,脚本默认保存在开发集最佳表现模型。中文任务默认使用` unimo-text-1.0 ` 模型,unimo-text-1.0还支持large模型。此外本项目还提供基于大规模多领域问题生成数据集训练的通用问题生成预训练模型 ` unimo-text-1.0-question-generation ` ,详见[ UNIMO模型汇总] ( https://paddlenlp.readthedocs.io/zh/latest/model_zoo/transformers/UNIMO/contents.html ) ,用户可以根据任务和设备需求进行选择 。
87
118
88
119
89
120
3 . ** 模型预测**
@@ -184,14 +215,15 @@ python -m paddle.distributed.launch --gpus "1,2" --log_dir ./unimo/finetune/log
184
215
185
216
关键参数释义如下:
186
217
- ` gpus ` 指示了训练所用的GPU,使用多卡训练可以指定多个GPU卡号,例如 --gpus "0,1"。
187
- - ` dataset_name ` 数据集名称,默认为` dureader_qg ` 。
218
+ - ` dataset_name ` 数据集名称,当 ` train_file ` 和 ` predict_file ` 为None时将加载 ` dataset_name ` 的训练集和开发集, 默认为` dureader_qg ` 。
188
219
- ` train_file ` 本地训练数据地址,数据格式必须与` dataset_name ` 所指数据集格式相同,默认为None。
189
220
- ` predict_file ` 本地测试数据地址,数据格式必须与` dataset_name ` 所指数据集格式相同,默认为None。
190
221
- ` model_name_or_path ` 指示了finetune使用的具体预训练模型,可以是PaddleNLP提供的预训练模型,或者是本地的预训练模型。如果使用本地的预训练模型,可以配置本地模型的目录地址,例如: ./checkpoints/model_xx/,目录中需包含paddle预训练模型model_state.pdparams。如果使用PaddleNLP提供的预训练模型,可以选择下面其中之一。
191
222
| 可选预训练模型 |
192
223
| ---------------------------------|
193
224
| unimo-text-1.0 |
194
225
| unimo-text-1.0-large |
226
+ | unimo-text-1.0-question-generation |
195
227
196
228
<!-- | T5-PEGASUS |
197
229
| ernie-1.0 |
@@ -233,11 +265,14 @@ python -m paddle.distributed.launch --gpus "1,2" --log_dir ./unimo/finetune/log
233
265
234
266
** NOTE:** 如需恢复模型训练,` model_name_or_path ` 配置本地模型的目录地址即可。
235
267
236
- 微调的baseline模型在dureader_qg验证集上有如下结果 (指标为BLEU-4):
268
+ 微调的模型在dureader_qg验证集上有如下结果 (指标为BLEU-4),其中 ` unimo-text-1.0-dureader_qg-w/o-template ` 表示不使用模版策略微调的结果, ` unimo-text-1.0-large-dureader_qg ` 表示使用large模型微调的结果, ` unimo-text-1.0-question-generation-dureader_qg ` 表示在通用问题生成预训练模型 ` unimo-text-1.0-question-generation ` 上微调的结果 :
237
269
238
270
| model_name | DuReaderQG |
239
271
| :-----------------------------: | :-----------: |
240
- | unimo-text-1.0-dureader_qg-template1 | 41.08 |
272
+ | unimo-text-1.0-dureader_qg-w/o-template | 39.61 |
273
+ | unimo-text-1.0-dureader_qg | 41.08 |
274
+ | unimo-text-1.0-large-dureader_qg | 41.51 |
275
+ | unimo-text-1.0-question-generation-dureader_qg | 44.02 |
241
276
242
277
### 模型预测
243
278
0 commit comments