From 8e05d54c7f351fd638e3cfbb7319471410e4c53f Mon Sep 17 00:00:00 2001 From: WenmuZhou <572459439@qq.com> Date: Mon, 20 Dec 2021 09:02:40 +0000 Subject: [PATCH 1/3] fix win train bug --- ppstructure/vqa/eval_ser.py | 2 +- ppstructure/vqa/train_ser.py | 4 ++-- ppstructure/vqa/xfun.py | 44 +++++++++++++++++++++++++++--------- 3 files changed, 36 insertions(+), 14 deletions(-) diff --git a/ppstructure/vqa/eval_ser.py b/ppstructure/vqa/eval_ser.py index e061221950..c9de25fb56 100644 --- a/ppstructure/vqa/eval_ser.py +++ b/ppstructure/vqa/eval_ser.py @@ -61,7 +61,7 @@ def eval(args): eval_dataloader = paddle.io.DataLoader( eval_dataset, batch_size=args.per_gpu_eval_batch_size, - num_workers=0, + num_workers=8, use_shared_memory=True, collate_fn=None, ) diff --git a/ppstructure/vqa/train_ser.py b/ppstructure/vqa/train_ser.py index d6c297c499..58eb09918c 100644 --- a/ppstructure/vqa/train_ser.py +++ b/ppstructure/vqa/train_ser.py @@ -94,14 +94,14 @@ def train(args): train_dataloader = paddle.io.DataLoader( train_dataset, batch_sampler=train_sampler, - num_workers=0, + num_workers=8, use_shared_memory=True, collate_fn=None, ) eval_dataloader = paddle.io.DataLoader( eval_dataset, batch_size=args.per_gpu_eval_batch_size, - num_workers=0, + num_workers=8, use_shared_memory=True, collate_fn=None, ) diff --git a/ppstructure/vqa/xfun.py b/ppstructure/vqa/xfun.py index eb9750dd20..f5dbe507e8 100644 --- a/ppstructure/vqa/xfun.py +++ b/ppstructure/vqa/xfun.py @@ -79,14 +79,36 @@ class XFUNDataset(Dataset): self.entities_labels = {'HEADER': 0, 'QUESTION': 1, 'ANSWER': 2} self.return_keys = { - 'bbox': 'np', - 'input_ids': 'np', - 'labels': 'np', - 'attention_mask': 'np', - 'image': 'np', - 'token_type_ids': 'np', - 'entities': 'dict', - 'relations': 'dict', + 'bbox': { + 'type': 'np', + 'dtype': 'int64' + }, + 'input_ids': { + 'type': 'np', + 'dtype': 'int64' + }, + 'labels': { + 'type': 'np', + 'dtype': 'int64' + }, + 'attention_mask': { + 'type': 'np', + 'dtype': 'int64' + }, + 'image': { + 'type': 'np', + 'dtype': 'float32' + }, + 'token_type_ids': { + 'type': 'np', + 'dtype': 'int64' + }, + 'entities': { + 'type': 'dict' + }, + 'relations': { + 'type': 'dict' + } } if load_mode == "all": @@ -103,7 +125,7 @@ class XFUNDataset(Dataset): return_special_tokens_mask=False): # Padding needs_to_be_padded = pad_to_max_seq_len and \ - max_seq_len and len(encoded_inputs["input_ids"]) < max_seq_len + max_seq_len and len(encoded_inputs["input_ids"]) < max_seq_len if needs_to_be_padded: difference = max_seq_len - len(encoded_inputs["input_ids"]) @@ -412,8 +434,8 @@ class XFUNDataset(Dataset): return_data = {} for k, v in data.items(): if k in self.return_keys: - if self.return_keys[k] == 'np': - v = np.array(v) + if self.return_keys[k]['type'] == 'np': + v = np.array(v, dtype=self.return_keys[k]['dtype']) return_data[k] = v return return_data From 2059a5a281c743425951a8c24435896fde01fe13 Mon Sep 17 00:00:00 2001 From: WenmuZhou <572459439@qq.com> Date: Mon, 20 Dec 2021 09:14:27 +0000 Subject: [PATCH 2/3] add num_workers to args --- ppstructure/vqa/README.md | 5 +++++ ppstructure/vqa/eval_re.py | 2 +- ppstructure/vqa/eval_ser.py | 2 +- ppstructure/vqa/train_re.py | 4 ++-- ppstructure/vqa/train_ser.py | 4 ++-- ppstructure/vqa/utils.py | 1 + 6 files changed, 12 insertions(+), 6 deletions(-) diff --git a/ppstructure/vqa/README.md b/ppstructure/vqa/README.md index 744cdc74a2..2216950e58 100644 --- a/ppstructure/vqa/README.md +++ b/ppstructure/vqa/README.md @@ -165,6 +165,7 @@ python3.7 train_ser.py \ --learning_rate 5e-5 \ --warmup_steps 50 \ --evaluate_during_training \ + --num_workers 8 \ --seed 2048 \ --resume ``` @@ -177,6 +178,7 @@ python3 eval_ser.py \ --eval_data_dir "XFUND/zh_val/image" \ --eval_label_path "XFUND/zh_val/xfun_normalize_val.json" \ --per_gpu_eval_batch_size 8 \ + --num_workers 8 \ --output_dir "output/ser/" \ --seed 2048 ``` @@ -234,6 +236,7 @@ python3 train_re.py \ --warmup_steps 50 \ --per_gpu_train_batch_size 8 \ --per_gpu_eval_batch_size 8 \ + --num_workers 8 \ --evaluate_during_training \ --seed 2048 @@ -257,6 +260,7 @@ python3 train_re.py \ --warmup_steps 50 \ --per_gpu_train_batch_size 8 \ --per_gpu_eval_batch_size 8 \ + --num_workers 8 \ --evaluate_during_training \ --seed 2048 \ --resume @@ -276,6 +280,7 @@ python3 eval_re.py \ --label_map_path 'labels/labels_ser.txt' \ --output_dir "output/re_test/" \ --per_gpu_eval_batch_size 8 \ + --num_workers 8 \ --seed 2048 ``` 最终会打印出`precision`, `recall`, `f1`等指标 diff --git a/ppstructure/vqa/eval_re.py b/ppstructure/vqa/eval_re.py index 45c2366047..12bb9cabdb 100644 --- a/ppstructure/vqa/eval_re.py +++ b/ppstructure/vqa/eval_re.py @@ -112,7 +112,7 @@ def eval(args): eval_dataloader = paddle.io.DataLoader( eval_dataset, batch_size=args.per_gpu_eval_batch_size, - num_workers=8, + num_workers=args.num_workers, shuffle=False, collate_fn=DataCollator()) diff --git a/ppstructure/vqa/eval_ser.py b/ppstructure/vqa/eval_ser.py index c9de25fb56..acf37452a4 100644 --- a/ppstructure/vqa/eval_ser.py +++ b/ppstructure/vqa/eval_ser.py @@ -61,7 +61,7 @@ def eval(args): eval_dataloader = paddle.io.DataLoader( eval_dataset, batch_size=args.per_gpu_eval_batch_size, - num_workers=8, + num_workers=args.num_workers, use_shared_memory=True, collate_fn=None, ) diff --git a/ppstructure/vqa/train_re.py b/ppstructure/vqa/train_re.py index c7e701c8d2..47d6946780 100644 --- a/ppstructure/vqa/train_re.py +++ b/ppstructure/vqa/train_re.py @@ -97,14 +97,14 @@ def train(args): train_dataloader = paddle.io.DataLoader( train_dataset, batch_sampler=train_sampler, - num_workers=8, + num_workers=args.num_workers, use_shared_memory=True, collate_fn=DataCollator()) eval_dataloader = paddle.io.DataLoader( eval_dataset, batch_size=args.per_gpu_eval_batch_size, - num_workers=8, + num_workers=args.num_workers, shuffle=False, collate_fn=DataCollator()) diff --git a/ppstructure/vqa/train_ser.py b/ppstructure/vqa/train_ser.py index 58eb09918c..6791cea89a 100644 --- a/ppstructure/vqa/train_ser.py +++ b/ppstructure/vqa/train_ser.py @@ -94,14 +94,14 @@ def train(args): train_dataloader = paddle.io.DataLoader( train_dataset, batch_sampler=train_sampler, - num_workers=8, + num_workers=args.num_workers, use_shared_memory=True, collate_fn=None, ) eval_dataloader = paddle.io.DataLoader( eval_dataset, batch_size=args.per_gpu_eval_batch_size, - num_workers=8, + num_workers=args.num_workers, use_shared_memory=True, collate_fn=None, ) diff --git a/ppstructure/vqa/utils.py b/ppstructure/vqa/utils.py index 44a6298080..9f6eebb662 100644 --- a/ppstructure/vqa/utils.py +++ b/ppstructure/vqa/utils.py @@ -363,6 +363,7 @@ def parse_args(): parser.add_argument("--output_dir", default=None, type=str, required=True,) parser.add_argument("--max_seq_length", default=512, type=int,) parser.add_argument("--evaluate_during_training", action="store_true",) + parser.add_argument("--num_workers", efault=8, type=int,) parser.add_argument("--per_gpu_train_batch_size", default=8, type=int, help="Batch size per GPU/CPU for training.",) parser.add_argument("--per_gpu_eval_batch_size", default=8, From a0a0a363a2bbe9f6ebcd7f2dd603b3283d197223 Mon Sep 17 00:00:00 2001 From: WenmuZhou <572459439@qq.com> Date: Mon, 20 Dec 2021 10:07:57 +0000 Subject: [PATCH 3/3] fix args error --- ppstructure/vqa/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ppstructure/vqa/utils.py b/ppstructure/vqa/utils.py index 9f6eebb662..414317c0d1 100644 --- a/ppstructure/vqa/utils.py +++ b/ppstructure/vqa/utils.py @@ -363,7 +363,7 @@ def parse_args(): parser.add_argument("--output_dir", default=None, type=str, required=True,) parser.add_argument("--max_seq_length", default=512, type=int,) parser.add_argument("--evaluate_during_training", action="store_true",) - parser.add_argument("--num_workers", efault=8, type=int,) + parser.add_argument("--num_workers", default=8, type=int,) parser.add_argument("--per_gpu_train_batch_size", default=8, type=int, help="Batch size per GPU/CPU for training.",) parser.add_argument("--per_gpu_eval_batch_size", default=8,