Skip to content

Commit 45506b4

Browse files
authored
Merge branch 'develop' into PET
2 parents fa60078 + 0bc5fd4 commit 45506b4

25 files changed

+3189
-2485
lines changed

examples/information_extraction/waybill_ie/data/dev.txt

Lines changed: 0 additions & 201 deletions
This file was deleted.

examples/information_extraction/waybill_ie/data/test.txt

Lines changed: 0 additions & 201 deletions
This file was deleted.

examples/information_extraction/waybill_ie/data/train.txt

Lines changed: 0 additions & 1601 deletions
This file was deleted.

examples/information_extraction/waybill_ie/run_bigru_crf.py

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15+
import argparse
16+
import os
1517
from functools import partial
1618

1719
import paddle
@@ -26,6 +28,18 @@
2628
from data import load_dict, load_dataset, parse_decodes
2729
from model import BiGRUWithCRF
2830

31+
parser = argparse.ArgumentParser()
32+
33+
# yapf: disable
34+
parser.add_argument("--save_dir", default='./bigru_crf_ckpt', type=str, help="The output directory where the model checkpoints will be written.")
35+
parser.add_argument("--epochs", default=10, type=int, help="Total number of training epochs to perform.")
36+
parser.add_argument("--batch_size", default=200, type=int, help="Batch size per GPU/CPU for training.")
37+
parser.add_argument("--device", default="gpu", type=str, choices=["cpu", "gpu"] ,help="The device to select to train the model, is must be cpu/gpu.")
38+
parser.add_argument("--data_dir", default='./waybill_ie/data', type=str, help="The folder where the dataset is located.")
39+
40+
args = parser.parse_args()
41+
# yapf: enable
42+
2943

3044
def convert_tokens_to_ids(tokens, vocab, oov_token=None):
3145
token_ids = []
@@ -71,14 +85,16 @@ def predict(model, data_loader, ds, label_vocab):
7185

7286

7387
if __name__ == '__main__':
74-
paddle.set_device('gpu')
88+
paddle.set_device(args.device)
7589

7690
# Create dataset, tokenizer and dataloader.
77-
train_ds, dev_ds, test_ds = load_dataset(datafiles=(
78-
'./data/train.txt', './data/dev.txt', './data/test.txt'))
91+
train_ds, dev_ds, test_ds = load_dataset(
92+
datafiles=(os.path.join(args.data_dir, 'train.txt'),
93+
os.path.join(args.data_dir, 'dev.txt'),
94+
os.path.join(args.data_dir, 'test.txt')))
7995

80-
label_vocab = load_dict('./data/tag.dic')
81-
word_vocab = load_dict('./data/word.dic')
96+
label_vocab = load_dict(os.path.join(args.data_dir, 'tag.dic'))
97+
word_vocab = load_dict(os.path.join(args.data_dir, 'word.dic'))
8298

8399
trans_func = partial(
84100
convert_to_features, word_vocab=word_vocab, label_vocab=label_vocab)
@@ -94,22 +110,22 @@ def predict(model, data_loader, ds, label_vocab):
94110

95111
train_loader = paddle.io.DataLoader(
96112
dataset=train_ds,
97-
batch_size=200,
113+
batch_size=args.batch_size,
98114
shuffle=True,
99115
drop_last=True,
100116
return_list=True,
101117
collate_fn=batchify_fn)
102118

103119
dev_loader = paddle.io.DataLoader(
104120
dataset=dev_ds,
105-
batch_size=200,
121+
batch_size=args.batch_size,
106122
drop_last=True,
107123
return_list=True,
108124
collate_fn=batchify_fn)
109125

110126
test_loader = paddle.io.DataLoader(
111127
dataset=test_ds,
112-
batch_size=200,
128+
batch_size=args.batch_size,
113129
drop_last=True,
114130
return_list=True,
115131
collate_fn=batchify_fn)
@@ -122,7 +138,7 @@ def predict(model, data_loader, ds, label_vocab):
122138
metric = ChunkEvaluator(label_list=label_vocab.keys(), suffix=True)
123139

124140
step = 0
125-
for epoch in range(10):
141+
for epoch in range(args.epochs):
126142
for token_ids, lengths, label_ids in train_loader:
127143
loss = model(token_ids, lengths, label_ids)
128144
loss = loss.mean()
@@ -132,10 +148,11 @@ def predict(model, data_loader, ds, label_vocab):
132148
step += 1
133149
print("[TRAIN] Epoch:%d - Step:%d - Loss: %f" % (epoch, step, loss))
134150
evaluate(model, metric, dev_loader)
135-
paddle.save(model.state_dict(), './ernie_ckpt/model_%d.pdparams' % step)
151+
paddle.save(model.state_dict(),
152+
os.path.join(args.save_dir, 'model_%d' % step))
136153

137154
preds = predict(model, test_loader, test_ds, label_vocab)
138-
file_path = "ernie_results.txt"
155+
file_path = "bigru_crf_results.txt"
139156
with open(file_path, "w", encoding="utf8") as fout:
140157
fout.write("\n".join(preds))
141158
# Print some examples

examples/information_extraction/waybill_ie/run_ernie_crf.py

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15+
import argparse
16+
import os
1517
from functools import partial
1618

1719
import paddle
@@ -22,6 +24,18 @@
2224
from model import ErnieCrfForTokenClassification
2325
from data import load_dict, load_dataset, parse_decodes
2426

27+
parser = argparse.ArgumentParser()
28+
29+
# yapf: disable
30+
parser.add_argument("--save_dir", default='./ernie_crf_ckpt', type=str, help="The output directory where the model checkpoints will be written.")
31+
parser.add_argument("--epochs", default=10, type=int, help="Total number of training epochs to perform.")
32+
parser.add_argument("--batch_size", default=200, type=int, help="Batch size per GPU/CPU for training.")
33+
parser.add_argument("--device", default="gpu", type=str, choices=["cpu", "gpu"] ,help="The device to select to train the model, is must be cpu/gpu.")
34+
parser.add_argument("--data_dir", default='./waybill_ie/data', type=str, help="The folder where the dataset is located.")
35+
36+
args = parser.parse_args()
37+
# yapf: enable
38+
2539

2640
def convert_to_features(example, tokenizer, label_vocab):
2741
tokens, labels = example
@@ -64,13 +78,15 @@ def predict(model, data_loader, ds, label_vocab):
6478

6579

6680
if __name__ == '__main__':
67-
paddle.set_device('gpu')
81+
paddle.set_device(args.device)
6882

6983
# Create dataset, tokenizer and dataloader.
70-
train_ds, dev_ds, test_ds = load_dataset(datafiles=(
71-
'./data/train.txt', './data/dev.txt', './data/test.txt'))
84+
train_ds, dev_ds, test_ds = load_dataset(
85+
datafiles=(os.path.join(args.data_dir, 'train.txt'),
86+
os.path.join(args.data_dir, 'dev.txt'),
87+
os.path.join(args.data_dir, 'test.txt')))
7288

73-
label_vocab = load_dict('./data/tag.dic')
89+
label_vocab = load_dict(os.path.join(args.data_dir, 'tag.dic'))
7490
tokenizer = ErnieTokenizer.from_pretrained('ernie-1.0')
7591

7692
trans_func = partial(
@@ -89,17 +105,17 @@ def predict(model, data_loader, ds, label_vocab):
89105

90106
train_loader = paddle.io.DataLoader(
91107
dataset=train_ds,
92-
batch_size=200,
108+
batch_size=args.batch_size,
93109
return_list=True,
94110
collate_fn=batchify_fn)
95111
dev_loader = paddle.io.DataLoader(
96112
dataset=dev_ds,
97-
batch_size=200,
113+
batch_size=args.batch_size,
98114
return_list=True,
99115
collate_fn=batchify_fn)
100116
test_loader = paddle.io.DataLoader(
101117
dataset=test_ds,
102-
batch_size=200,
118+
batch_size=args.batch_size,
103119
return_list=True,
104120
collate_fn=batchify_fn)
105121

@@ -113,7 +129,7 @@ def predict(model, data_loader, ds, label_vocab):
113129
learning_rate=2e-5, parameters=model.parameters())
114130

115131
step = 0
116-
for epoch in range(10):
132+
for epoch in range(args.epochs):
117133
for input_ids, token_type_ids, lengths, labels in train_loader:
118134
loss = model(
119135
input_ids, token_type_ids, lengths=lengths, labels=labels)
@@ -127,7 +143,7 @@ def predict(model, data_loader, ds, label_vocab):
127143
evaluate(model, metric, dev_loader)
128144

129145
paddle.save(model.state_dict(),
130-
'./ernie_crf_ckpt/model_%d.pdparams' % step)
146+
os.path.join(args.save_dir, 'model_%d' % step))
131147

132148
preds = predict(model, test_loader, test_ds, label_vocab)
133149
file_path = "ernie_crf_results.txt"

paddlenlp/ops/CMakeLists.txt

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ option(WITH_GPU "Compile with GPU/CPU, default use CPU."
2525
option(USE_TENSORRT "Compile with TensorRT." OFF)
2626
option(WITH_TRANSFORMER "Compile with Transformer" ON)
2727
option(WITH_GPT "Compile with GPT" OFF)
28+
option(WITH_UNIFIED "Compile with Unified Transformer" ON)
2829

2930
if(NOT WITH_GPU)
3031
message(FATAL_ERROR "Faster transformer custom op doesn't support CPU. Please add the flag -DWITH_GPU=ON to use GPU. ")
@@ -38,6 +39,10 @@ if(WITH_GPT)
3839
list(APPEND decoding_op_files fusion_gpt_op.cc fusion_gpt_op.cu)
3940
endif()
4041

42+
if(WITH_UNIFIED)
43+
list(APPEND decoding_op_files fusion_unified_decoding_op.cc fusion_unified_decoding_op.cu)
44+
endif()
45+
4146
if(NOT WITH_TRANSFORMER AND NOT WITH_GPT)
4247
message(FATAL_ERROR "-DWITH_TRANSFORMER=ON or/and -DWITH_GPT=ON must be set to use FasterTransformer. ")
4348
endif()
@@ -124,15 +129,38 @@ file(TO_NATIVE_PATH ${OPS_SOURCE_DIR}/patches/FasterTransformer/cuda/topk_kernel
124129
file(TO_NATIVE_PATH ${CMAKE_BINARY_DIR}/${THIRD_PATH}/source/${THIRD_PARTY_NAME}/fastertransformer/cuda/topk_kernels.cu topk_kernels_dst)
125130

126131
file(TO_NATIVE_PATH ${CMAKE_BINARY_DIR}/${THIRD_PATH}/source/${THIRD_PARTY_NAME}/fastertransformer/cuda/open_decoder.cu open_decoder_cu_dst)
127-
file(TO_NATIVE_PATH ${CMAKE_BINARY_DIR}/${THIRD_PATH}/source/${THIRD_PARTY_NAME}/fastertransformer/open_decoder.h open_decoder_header_dst)
132+
file(TO_NATIVE_PATH ${CMAKE_BINARY_DIR}/${THIRD_PATH}/source/${THIRD_PARTY_NAME}/fastertransformer/open_decoder.h open_decoder_h_dst)
133+
134+
file(TO_NATIVE_PATH ${CMAKE_BINARY_DIR}/${THIRD_PATH}/source/${THIRD_PARTY_NAME}/fastertransformer/cuda/cuda_kernels.h cuda_kernels_h_dst)
135+
file(TO_NATIVE_PATH ${CMAKE_BINARY_DIR}/${THIRD_PATH}/source/${THIRD_PARTY_NAME}/fastertransformer/cuda/decoding_kernels.cu decoding_kernels_cu_dst)
128136

129137
file(TO_NATIVE_PATH ${OPS_SOURCE_DIR}/patches/FasterTransformer/cuda/transformer_decoder.cu trans_decoder_cu_src)
130-
file(TO_NATIVE_PATH ${OPS_SOURCE_DIR}/patches/FasterTransformer/transformer_decoder.h trans_decoder_header_src)
138+
file(TO_NATIVE_PATH ${OPS_SOURCE_DIR}/patches/FasterTransformer/transformer_decoder.h trans_decoder_h_src)
139+
140+
file(TO_NATIVE_PATH ${OPS_SOURCE_DIR}/patches/FasterTransformer/cuda/transformer_cuda_kernels.h cuda_kernels_h_src)
141+
file(TO_NATIVE_PATH ${OPS_SOURCE_DIR}/patches/FasterTransformer/cuda/transformer_decoding_kernels.cu decoding_kernels_cu_src)
142+
143+
file(TO_NATIVE_PATH ${OPS_SOURCE_DIR}/patches/FasterTransformer/transformer_beamsearch.h beamsearch_h_src)
144+
file(TO_NATIVE_PATH ${OPS_SOURCE_DIR}/patches/FasterTransformer/transformer_sampling.h sampling_h_src)
145+
file(TO_NATIVE_PATH ${OPS_SOURCE_DIR}/patches/FasterTransformer/arguments.h arguments_h_src)
131146
set(trans_dst ${CMAKE_BINARY_DIR}/${THIRD_PATH}/source/${THIRD_PARTY_NAME}/fastertransformer/)
132147

133148
# TODO(guosheng): `find` seems meeting errors missing argument to `-exec', fix it
134149
set(MUTE_COMMAND grep -rl "printf(\"\\[WARNING\\]" ${CMAKE_BINARY_DIR}/${THIRD_PATH}/source/${THIRD_PARTY_NAME}/ | xargs -i{} sed -i "s/printf(\"\\WWARNING\\W decoding[^)]\\{1,\\})/ /" {})
135-
set(FT_PATCH_COMMAND cp ${allocator_src} ${allocator_dst} && cp ${common_src} ${common_dst} && cp ${cmakelists_src} ${cmakelists_dst} && cp ${topk_kernels_src} ${topk_kernels_dst} && cat ${trans_decoder_cu_src} >> ${open_decoder_cu_dst} && cat ${trans_decoder_header_src} >> ${open_decoder_header_dst} && ${MUTE_COMMAND})
150+
set(FT_PATCH_COMMAND
151+
cp ${allocator_src} ${allocator_dst}
152+
&& cp ${common_src} ${common_dst}
153+
&& cp ${cmakelists_src} ${cmakelists_dst}
154+
&& cp ${topk_kernels_src} ${topk_kernels_dst}
155+
&& cp ${beamsearch_h_src} ${trans_dst}
156+
&& cp ${sampling_h_src} ${trans_dst}
157+
&& cp ${arguments_h_src} ${trans_dst}
158+
&& cat ${trans_decoder_cu_src} >> ${open_decoder_cu_dst}
159+
&& cat ${trans_decoder_h_src} >> ${open_decoder_h_dst}
160+
&& cat ${cuda_kernels_h_src} >> ${cuda_kernels_h_dst}
161+
&& cat ${decoding_kernels_cu_src} >> ${decoding_kernels_cu_dst}
162+
&& ${MUTE_COMMAND}
163+
)
136164

137165
######################################################################################
138166
# A function for automatic detection of GPUs installed (if autodetection is enabled)

paddlenlp/ops/faster_transformer/src/demo/gpt.cc

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,6 @@ bool get_result_tensor(const std::unique_ptr<paddle_infer::Tensor>& seq_ids,
8484

8585
for (int i = 0; i < tmp_result_q.length(); ++i) {
8686
char32_t tmp = tmp_result_q[i];
87-
// std::cout << tmp << std::endl;
8887
if (byte_decoder.find(tmp) != byte_decoder.end()) {
8988
dataresultvec[bsz].result_q = dataresultvec[bsz].result_q +
9089
static_cast<wchar_t>(byte_decoder[tmp]);
@@ -126,13 +125,6 @@ std::unordered_map<char32_t, int> convert_unicode() {
126125
}
127126
}
128127

129-
// std::wstring_convert<std::codecvt_utf8<char32_t>, char32_t> conv32;
130-
// for (int i=0; i<256; ++i) {
131-
// std::cout << "=====" << std::endl;
132-
// std::cout << conv32.to_bytes(cs[i]) << std::endl;
133-
// std::cout << bs[i] << std::endl;
134-
// }
135-
136128
return ret;
137129
}
138130

0 commit comments

Comments
 (0)