From 4748684edb0c7fe667e44ebf5693f3b9fdd25a6e Mon Sep 17 00:00:00 2001
From: 0YuanZhang0 <953963890@qq.com>
Date: Wed, 16 Oct 2019 11:35:01 +0800
Subject: [PATCH] update d-net (#3591)
* Remove KD scripts
* Add ERNIE2.0 service
* Update server
* Update MTL
* Update README.md
* Update README.md for MTL
* Update README.md
---
PaddleNLP/Research/MRQA2019-D-NET/README.md | 47 +-
.../MRQA2019-D-NET/images/D-NET_framework.png | Bin 218931 -> 393289 bytes
.../MRQA2019-D-NET/images/D-NET_server.png | Bin 0 -> 80320 bytes
.../knowledge_distillation/README.md | 61 ---
.../data/input/input.md | 1 -
.../data/output/output.md | 1 -
.../data/pretrain_model/pretrain_model.md | 1 -
.../data/saved_models/saved_models.md | 1 -
.../knowledge_distillation/model/bert.py | 227 --------
.../model/bert_model.py | 106 ----
.../knowledge_distillation/model/mlm_net.py | 95 ----
.../knowledge_distillation/model/mrqa_net.py | 122 -----
.../reader/joint_reader.py | 109 ----
.../reader/mlm_reader.py | 290 ----------
.../reader/mrqa_distill_reader.py | 105 ----
.../knowledge_distillation/run_distill.sh | 47 --
.../knowledge_distillation/run_evaluation.sh | 50 --
.../knowledge_distillation/train.py | 515 ------------------
.../wget_models_and_data.sh | 33 --
.../multi_task_learning/README.md | 98 ++--
.../multi_task_learning/run_build_palm.sh | 1 -
.../multi_task_learning/wget_models.sh | 7 -
.../wget_pretrained_model.sh | 4 +
.../Research/MRQA2019-D-NET/server/README.md | 54 +-
.../server/bert_server/bert_model.py | 93 ----
.../server/bert_server/model_wrapper.py | 2 -
.../server/bert_server/mrc_model.py | 70 ---
.../pdnlp/module/transformer_encoder.py.old | 351 ------------
.../server/bert_server/reader.py | 88 ---
.../server/bert_server/start.sh | 5 +-
.../server/bert_server/start_service.py | 6 +-
.../MRQA2019-D-NET/server/client/client.py | 43 ++
.../MRQA2019-D-NET/server/client/demo.txt | 10 +
.../server/ernie_server/model_wrapper.py | 136 +++++
.../server/ernie_server/mrc_service.py | 189 +++++++
.../ernie_server/pdnlp}/__init__.py | 0
.../server/ernie_server/pdnlp/__main__.py | 9 +
.../ernie_server/pdnlp/algorithm}/__init__.py | 0
.../ernie_server/pdnlp/algorithm/multitask.py | 119 ++++
.../pdnlp/algorithm}/optimization.py | 2 +-
.../ernie_server/pdnlp/extension}/__init__.py | 0
.../ernie_server/pdnlp/extension}/fp16.py | 0
.../ernie_server/pdnlp/module/__init__.py | 2 +
.../pdnlp/module}/transformer_encoder.py | 1 -
.../ernie_server/pdnlp/nets}/__init__.py | 0
.../pdnlp/nets}/bert.py | 0
.../ernie_server/pdnlp/toolkit/__init__.py | 2 +
.../ernie_server/pdnlp/toolkit}/configure.py | 17 +-
.../ernie_server/pdnlp/toolkit}/init.py | 0
.../pdnlp/toolkit}/placeholder.py | 20 +-
.../server/ernie_server/start.sh | 6 +
.../server/ernie_server/start_service.py | 40 ++
.../ernie_server/task_reader/__init__.py | 0
.../ernie_server/task_reader}/batching.py | 1 -
.../ernie_server/task_reader/mrqa_infer.py} | 302 +++-------
.../ernie_server/task_reader}/tokenization.py | 5 +-
.../MRQA2019-D-NET/server/main_server.py | 47 +-
.../Research/MRQA2019-D-NET/server/start.sh | 29 +-
.../server/wget_server_inference_model.sh | 5 +-
.../server/xlnet_server/serve.py | 6 +-
.../xlnet_server/{serve.sh => start.sh} | 5 +-
61 files changed, 835 insertions(+), 2751 deletions(-)
create mode 100644 PaddleNLP/Research/MRQA2019-D-NET/images/D-NET_server.png
delete mode 100644 PaddleNLP/Research/MRQA2019-D-NET/knowledge_distillation/README.md
delete mode 100644 PaddleNLP/Research/MRQA2019-D-NET/knowledge_distillation/data/input/input.md
delete mode 100644 PaddleNLP/Research/MRQA2019-D-NET/knowledge_distillation/data/output/output.md
delete mode 100644 PaddleNLP/Research/MRQA2019-D-NET/knowledge_distillation/data/pretrain_model/pretrain_model.md
delete mode 100644 PaddleNLP/Research/MRQA2019-D-NET/knowledge_distillation/data/saved_models/saved_models.md
delete mode 100644 PaddleNLP/Research/MRQA2019-D-NET/knowledge_distillation/model/bert.py
delete mode 100644 PaddleNLP/Research/MRQA2019-D-NET/knowledge_distillation/model/bert_model.py
delete mode 100644 PaddleNLP/Research/MRQA2019-D-NET/knowledge_distillation/model/mlm_net.py
delete mode 100644 PaddleNLP/Research/MRQA2019-D-NET/knowledge_distillation/model/mrqa_net.py
delete mode 100644 PaddleNLP/Research/MRQA2019-D-NET/knowledge_distillation/reader/joint_reader.py
delete mode 100644 PaddleNLP/Research/MRQA2019-D-NET/knowledge_distillation/reader/mlm_reader.py
delete mode 100644 PaddleNLP/Research/MRQA2019-D-NET/knowledge_distillation/reader/mrqa_distill_reader.py
delete mode 100755 PaddleNLP/Research/MRQA2019-D-NET/knowledge_distillation/run_distill.sh
delete mode 100755 PaddleNLP/Research/MRQA2019-D-NET/knowledge_distillation/run_evaluation.sh
delete mode 100755 PaddleNLP/Research/MRQA2019-D-NET/knowledge_distillation/train.py
delete mode 100755 PaddleNLP/Research/MRQA2019-D-NET/knowledge_distillation/wget_models_and_data.sh
delete mode 100755 PaddleNLP/Research/MRQA2019-D-NET/multi_task_learning/wget_models.sh
create mode 100755 PaddleNLP/Research/MRQA2019-D-NET/multi_task_learning/wget_pretrained_model.sh
delete mode 100644 PaddleNLP/Research/MRQA2019-D-NET/server/bert_server/bert_model.py
delete mode 100644 PaddleNLP/Research/MRQA2019-D-NET/server/bert_server/mrc_model.py
delete mode 100644 PaddleNLP/Research/MRQA2019-D-NET/server/bert_server/pdnlp/module/transformer_encoder.py.old
delete mode 100644 PaddleNLP/Research/MRQA2019-D-NET/server/bert_server/reader.py
create mode 100644 PaddleNLP/Research/MRQA2019-D-NET/server/client/client.py
create mode 100644 PaddleNLP/Research/MRQA2019-D-NET/server/client/demo.txt
create mode 100644 PaddleNLP/Research/MRQA2019-D-NET/server/ernie_server/model_wrapper.py
create mode 100644 PaddleNLP/Research/MRQA2019-D-NET/server/ernie_server/mrc_service.py
rename PaddleNLP/Research/MRQA2019-D-NET/{knowledge_distillation/model => server/ernie_server/pdnlp}/__init__.py (100%)
create mode 100644 PaddleNLP/Research/MRQA2019-D-NET/server/ernie_server/pdnlp/__main__.py
rename PaddleNLP/Research/MRQA2019-D-NET/{knowledge_distillation/optimizer => server/ernie_server/pdnlp/algorithm}/__init__.py (100%)
create mode 100644 PaddleNLP/Research/MRQA2019-D-NET/server/ernie_server/pdnlp/algorithm/multitask.py
rename PaddleNLP/Research/MRQA2019-D-NET/{knowledge_distillation/optimizer => server/ernie_server/pdnlp/algorithm}/optimization.py (98%)
rename PaddleNLP/Research/MRQA2019-D-NET/{knowledge_distillation/reader => server/ernie_server/pdnlp/extension}/__init__.py (100%)
rename PaddleNLP/Research/MRQA2019-D-NET/{knowledge_distillation/utils => server/ernie_server/pdnlp/extension}/fp16.py (100%)
create mode 100644 PaddleNLP/Research/MRQA2019-D-NET/server/ernie_server/pdnlp/module/__init__.py
rename PaddleNLP/Research/MRQA2019-D-NET/{knowledge_distillation/model => server/ernie_server/pdnlp/module}/transformer_encoder.py (99%)
rename PaddleNLP/Research/MRQA2019-D-NET/{knowledge_distillation/utils => server/ernie_server/pdnlp/nets}/__init__.py (100%)
rename PaddleNLP/Research/MRQA2019-D-NET/server/{bert_server => ernie_server/pdnlp/nets}/bert.py (100%)
create mode 100644 PaddleNLP/Research/MRQA2019-D-NET/server/ernie_server/pdnlp/toolkit/__init__.py
rename PaddleNLP/Research/MRQA2019-D-NET/{knowledge_distillation/utils => server/ernie_server/pdnlp/toolkit}/configure.py (89%)
rename PaddleNLP/Research/MRQA2019-D-NET/{knowledge_distillation/utils => server/ernie_server/pdnlp/toolkit}/init.py (100%)
rename PaddleNLP/Research/MRQA2019-D-NET/{knowledge_distillation/utils => server/ernie_server/pdnlp/toolkit}/placeholder.py (73%)
create mode 100755 PaddleNLP/Research/MRQA2019-D-NET/server/ernie_server/start.sh
create mode 100644 PaddleNLP/Research/MRQA2019-D-NET/server/ernie_server/start_service.py
create mode 100644 PaddleNLP/Research/MRQA2019-D-NET/server/ernie_server/task_reader/__init__.py
rename PaddleNLP/Research/MRQA2019-D-NET/{knowledge_distillation/utils => server/ernie_server/task_reader}/batching.py (99%)
rename PaddleNLP/Research/MRQA2019-D-NET/{knowledge_distillation/reader/mrqa_reader.py => server/ernie_server/task_reader/mrqa_infer.py} (76%)
rename PaddleNLP/Research/MRQA2019-D-NET/{knowledge_distillation/utils => server/ernie_server/task_reader}/tokenization.py (99%)
rename PaddleNLP/Research/MRQA2019-D-NET/server/xlnet_server/{serve.sh => start.sh} (59%)
diff --git a/PaddleNLP/Research/MRQA2019-D-NET/README.md b/PaddleNLP/Research/MRQA2019-D-NET/README.md
index 71ff25c8..97d6c147 100644
--- a/PaddleNLP/Research/MRQA2019-D-NET/README.md
+++ b/PaddleNLP/Research/MRQA2019-D-NET/README.md
@@ -1,24 +1,49 @@
# D-NET
## Introduction
-D-NET is the system Baidu submitted for MRQA (Machine Reading for Question Answering) 2019 Shared Task that focused on generalization of machine reading comprehension (MRC) models. Our system is built on a framework of pre-training and fine-tuning. The techniques of pre-trained language models, multi-task learning and knowledge distillation are employed to improve the generalization of MRC models and the experimental results show the effectiveness of these strategies. Our system is ranked at top 1 of all the participants in terms of averaged F1 score. Additionally, we won the first place for 10 of the 12 test sets and the second place for the other two in terms of F1 scores.
+D-NET is a simple pre-training and fine-tuning framework that Baidu used for the MRQA (Machine Reading for Question Answering) 2019 Shared Task, which focused on the generalization of machine reading comprehension (MRC) models. Our system is ranked at top 1 of all the participants in terms of the averaged F1 score. Additionally, we won the first place for 10 of the 12 test sets and the second place for the other two in terms of F1 scores.
+
+In this repository, we release the related code, data and model parametrs which have been used in the D-NET framework.
## Framework
+An overview of the D-NET framework is shown in the figure below. To improve the generalization capability of a MRC system, we use mainly two techniques, i.e. **multi-task learning (MTL)** and **ensemble of multiple pre-trained models**.
-### D-NET includes 3 parts:
-#### multi_task_learning
-We use PaddlePaddle PALM multi-task learning library [Link](https://github.com/PaddlePaddle/PALM) to train single model for MRQA 2019 Shared Task.
-
-#### knowledge_distillation
-Model ensemble can improve the generalization of MRC models, we leverage the technique of distillation to ensemble multiple models into a single model, and no loss of accuracy, distillation solves the problem of slow inference process and reduce the use of a huge amount of resource.
-
-#### server
-MRQA2019 submission environment with baidu bert inference model and xlnet inference model.
-
+#### Multi-task learning
+In addition to the MRC task, we further introduce several auxiliary tasks in the fine-tuning stage to learn more general language representations. Specifically, we have the following auxiliary tasks:
+
+ - Unsupervised Task: masked Language Model
+ - Supervised Tasks:
+ - natural language inference
+ - paragraph ranking
+
+We use the [PALM](https://github.com/PaddlePaddle/PALM) multi-task learning library based on [PaddlePaddle](https://www.paddlepaddle.org.cn/) in our experiments, which makes the implementation of new tasks and pre-trained models much easier than from scratch. To train the MRQA data sets with MTL, please refer to the instructions [here](multi_task_learning) (under `multi_task_learning/`).
+
+#### Ensemble of multiple pre-trained models
+In our experiments, we found that the ensemble system based on different pre-trained models shows better generalization capability than the system that based on the single ones. In this repository, we provide the parameters of 3 models that are fine-tuned on the MRQA in-domain data, based on ERNIE2.0, XL-NET and BERT, respectively. The ensemble of these models are implemented as servers. Please refer the instructions [here](server) (under `server/`) for more detials.
+
+## Directory structure
+```
+├── multi_task_learning/ # scripts for multi-task learning
+│ ├── configs/ # PALM config files
+│ ├── scripts/ # auxiliary scripts
+│ ├── wget_pretrained_model.sh # download pretrained model
+│ ├── wget_data.sh # download data for MTL
+│ ├── run_build_palm.sh # MLT preparation
+│ ├── run_evaluation.sh # evaluation
+│ ├── run_multi_task.sh # start MTL training
+├── server/ # scripts for the ensemble of multiple pretrained models
+│ ├── ernie_server/ # ERNIE mdoel server
+│ ├── xlnet_server/ # XL-NET mdoel server
+│ ├── bert_server/ # BERT mdoel server
+│ ├── main_server.py # main server scripts for ensemble
+│ ├── client/ # client scripts which read examples and make requests
+│ ├── wget_server_inference_model.sh # script for downlowding model parameters
+│ ├── start.sh # script for launching all the servers
+```
## Copyright and License
Copyright 2019 Baidu.com, Inc. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
diff --git a/PaddleNLP/Research/MRQA2019-D-NET/images/D-NET_framework.png b/PaddleNLP/Research/MRQA2019-D-NET/images/D-NET_framework.png
index b414224d708c5e0a258a7cba38db223496eec143..9965b5ee31202c69030362a8a164b7c6c6c5586b 100644
GIT binary patch
literal 393289
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