From 8c2e95937c8d5f37ba51afa6af2eb1b5c1fcfbc9 Mon Sep 17 00:00:00 2001 From: 0YuanZhang0 <953963890@qq.com> Date: Tue, 22 Oct 2019 10:15:06 +0800 Subject: [PATCH] fix_dmtk_windows (#3692) (#3695) --- .../auto_dialogue_evaluation/README.md | 54 +++++++++++++++++-- .../ade/prepare_data_and_model.py | 1 + .../ade/utils/save_load_io.py | 2 +- .../auto_dialogue_evaluation/run.sh | 4 +- .../dialogue_general_understanding/README.md | 31 ++++++++++- .../dgu/prepare_data_and_model.py | 1 + .../dgu/utils/save_load_io.py | 4 +- 7 files changed, 86 insertions(+), 11 deletions(-) diff --git a/PaddleNLP/PaddleDialogue/auto_dialogue_evaluation/README.md b/PaddleNLP/PaddleDialogue/auto_dialogue_evaluation/README.md index 3e977d29..10847c89 100644 --- a/PaddleNLP/PaddleDialogue/auto_dialogue_evaluation/README.md +++ b/PaddleNLP/PaddleDialogue/auto_dialogue_evaluation/README.md @@ -79,15 +79,24 @@ label_data(第二阶段finetuning数据集) 4、seq2seq_naive:传统seq2seq model产出的标注对话数据; ``` -    数据集、相关模型下载: +    数据集、相关模型下载 +    linux环境下: ``` python ade/prepare_data_and_model.py ``` +    数据路径:data/input/data -    数据路径:data/input/data/ +    模型路径:data/saved_models/trained_models + +    windows环境下: +``` +python ade\prepare_data_and_model.py +``` +    数据路径:data\input\data + +    模型路径:data\saved_models\trained_models -    模型路径:data/saved_models/trained_models/     下载经过预处理的数据,运行该脚本之后,data目录下会存在unlabel_data(train.ids/val.ids/test.ids),lable_data: human、keywords、seq2seq_att、seq2seq_naive(四个任务数据train.ids/val.ids/test.ids),以及word2ids. @@ -130,6 +139,7 @@ encable_ce: 是否开启ce ### 单机训练 #### 1、第一阶段matching模型的训练: +#### linux环境下: ####     方式一: 推荐直接使用模块内脚本训练 @@ -206,7 +216,14 @@ python -u main.py \ 注意: 用户进行模型训练、预测、评估等, 可通过修改data/config/ade.yaml配置文件或者从命令行传入来进行参数配置, 优先推荐命令行参数传入; +#### windows环境下: +训练: +``` +python -u main.py --do_train=true --use_cuda=false --loss_type=CLS --max_seq_len=50 --save_model_path=data\saved_models\matching_pretrained --save_param=params --training_file=data\input\data\unlabel_data\train.ids --epoch=20 --print_step=1 --save_step=400 --batch_size=256 --hidden_size=256 --emb_size=256 --vocab_size=484016 --learning_rate=0.001 --sample_pro=0.1 +``` + #### 2、第二阶段finetuning模型的训练: +#### linux环境下: ####     方式一: 推荐直接使用模块内脚本训练 ``` @@ -271,9 +288,14 @@ python -u main.py \ --sample_pro=0.1 ``` +#### windows环境下: +``` +python -u main.py --do_train=true --use_cuda=false --loss_type=L2 --max_seq_len=50 --save_model_path=data\saved_models\human_finetuned --save_param=params --training_file=data\input\data\label_data\human\train.ids --epoch=50 --print_step=1 --save_step=400 --batch_size=256 --hidden_size=256 --emb_size=256 --vocab_size=484016 --learning_rate=0.001 --sample_pro=0.1 +``` + ### 模型预测 #### 1、第一阶段matching模型的预测: - +#### linux环境下: ####     方式一: 推荐直接使用模块内脚本预测 ``` @@ -329,8 +351,15 @@ python -u main.py \ 注:采用方式二时,模型预测过程可参考run.sh内具体任务的参数设置 +#### windows环境下: +预测: +``` +python -u main.py --do_predict=true --use_cuda=false --predict_file=data\input\data\unlabel_data\test.ids --init_from_params=data\saved_models\trained_models\matching_pretrained\params --loss_type=CLS --output_prediction_file=data\output\pretrain_matching_predict --max_seq_len=50 --batch_size=256 --hidden_size=256 --emb_size=256 --vocab_size=484016 +``` + #### 2、第二阶段finetuning模型的预测: +#### linux环境下: ####     方式一: 推荐直接使用模块内脚本预测 ``` @@ -375,6 +404,11 @@ python -u main.py \ --vocab_size=484016 ``` +#### windows环境下: +``` +python -u main.py --do_predict=true --use_cuda=false --predict_file=data\input\data\label_data\human\test.ids --init_from_params=data\saved_models\trained_models\human_finetuned\params --loss_type=L2 --output_prediction_file=data\output\finetuning_human_predict --max_seq_len=50 --batch_size=256 --hidden_size=256 --emb_size=256 --vocab_size=484016 +``` + ### 模型评估     模块中5个任务,各任务支持计算的评估指标内容如下: @@ -412,6 +446,7 @@ seq2seq_naive:使用spearman相关系数来衡量评估模型对系统的打 |--|:--:|--:|:--:|--:| |cor|0.474|0.477|0.443|0.378| +#### linux环境下: #### 1、第一阶段matching模型的评估: ####     方式一: 推荐直接使用模块内脚本评估 @@ -434,8 +469,14 @@ python -u main.py \ --output_prediction_file="data/output/pretrain_matching_predict" \ --loss_type="CLS" ``` +#### windows环境下: +评估: +``` +python -u main.py --do_eval=true --use_cuda=false --evaluation_file=data\input\data\unlabel_data\test.ids --output_prediction_file=data\output\pretrain_matching_predict --loss_type=CLS +``` #### 2、第二阶段finetuning模型的评估: +#### linux环境下: ####     方式一: 推荐直接使用模块内脚本评估 ``` @@ -461,6 +502,11 @@ python -u main.py \ --loss_type="L2" ``` +#### windows环境下: +``` +python -u main.py --do_eval=true --use_cuda=false --evaluation_file=data\input\data\label_data\human\test.ids --output_prediction_file=data\output\finetuning_human_predict --loss_type=L2 +``` + ### 模型推断 #### 1、第一阶段matching模型的推断: ####     方式一: 推荐直接使用模块内脚本保存inference model diff --git a/PaddleNLP/PaddleDialogue/auto_dialogue_evaluation/ade/prepare_data_and_model.py b/PaddleNLP/PaddleDialogue/auto_dialogue_evaluation/ade/prepare_data_and_model.py index eb27ed1c..bc1dce21 100644 --- a/PaddleNLP/PaddleDialogue/auto_dialogue_evaluation/ade/prepare_data_and_model.py +++ b/PaddleNLP/PaddleDialogue/auto_dialogue_evaluation/ade/prepare_data_and_model.py @@ -22,6 +22,7 @@ import os URLLIB=urllib if sys.version_info >= (3, 0): + import urllib.request URLLIB=urllib.request DATA_MODEL_PATH = {"DATA_PATH": "https://baidu-nlp.bj.bcebos.com/auto_dialogue_evaluation_dataset-1.0.0.tar.gz", diff --git a/PaddleNLP/PaddleDialogue/auto_dialogue_evaluation/ade/utils/save_load_io.py b/PaddleNLP/PaddleDialogue/auto_dialogue_evaluation/ade/utils/save_load_io.py index 6797426f..a992aec9 100644 --- a/PaddleNLP/PaddleDialogue/auto_dialogue_evaluation/ade/utils/save_load_io.py +++ b/PaddleNLP/PaddleDialogue/auto_dialogue_evaluation/ade/utils/save_load_io.py @@ -112,7 +112,7 @@ def save_param(args, exe, program, dirname): param_dir = os.path.join(args.save_model_path, args.save_param) if not os.path.exists(param_dir): - os.mkdir(param_dir) + os.makedirs(param_dir) fluid.io.save_params( exe, diff --git a/PaddleNLP/PaddleDialogue/auto_dialogue_evaluation/run.sh b/PaddleNLP/PaddleDialogue/auto_dialogue_evaluation/run.sh index 78f8da40..592fc6ce 100755 --- a/PaddleNLP/PaddleDialogue/auto_dialogue_evaluation/run.sh +++ b/PaddleNLP/PaddleDialogue/auto_dialogue_evaluation/run.sh @@ -77,7 +77,7 @@ function pretrain_train() --emb_size=256 \ --vocab_size=484016 \ --learning_rate=0.001 \ - --sample_pro 0.1 + --sample_pro=0.1 } function finetuning_train() @@ -111,7 +111,7 @@ function finetuning_train() --emb_size=256 \ --vocab_size=484016 \ --learning_rate=0.001 \ - --sample_pro 0.1 + --sample_pro=0.1 } #predict diff --git a/PaddleNLP/PaddleDialogue/dialogue_general_understanding/README.md b/PaddleNLP/PaddleDialogue/dialogue_general_understanding/README.md index 6d49fda6..7fb56069 100644 --- a/PaddleNLP/PaddleDialogue/dialogue_general_understanding/README.md +++ b/PaddleNLP/PaddleDialogue/dialogue_general_understanding/README.md @@ -61,7 +61,7 @@ SWDA:Switchboard Dialogue Act Corpus; ```     数据集、相关模型下载: - +    linux环境下: ``` python dgu/prepare_data_and_model.py ``` @@ -71,11 +71,19 @@ python dgu/prepare_data_and_model.py     已训练模型路径:data/saved_models/trained_models +    windows环境下: +``` +python dgu\prepare_data_and_model.py +```     下载的数据集中已提供了训练集,测试集和验证集,用户如果需要重新生成某任务数据集的训练数据,可执行: ``` -cd dgu/scripts && bash run_build_data.sh task_name +linux环境下: +cd dgu/scripts && python run_build_data.py task_name +windows环境下: +cd dgu\scripts && python run_build_data.py task_name + 参数说明: task_name: udc, swda, mrda, atis, dstc2, 选择5个数据集选项中用户需要生成的数据名 @@ -145,6 +153,7 @@ encable_ce: 是否开启ce ### 单机训练 +#### linux环境下 ####     方式一: 推荐直接使用模块内脚本训练 ``` @@ -226,7 +235,13 @@ python -u main.py \ 1) 采用方式二时,模型训练过程可参考run.sh内相关任务的参数设置 2) 用户进行模型训练、预测、评估等, 可通过修改data/config/dgu.yaml配置文件或者从命令行传入来进行参数配置, 优先推荐命令行参数传入; +#### windows环境下 +``` +python -u main.py --task_name=atis_intent --use_cuda=false --do_train=true --in_tokens=true --epoch=20 --batch_size=4096 --do_lower_case=true --data_dir=data\input\data\atis\atis_intent --bert_config_path=data\pretrain_model\uncased_L-12_H-768_A-12\bert_config.json --vocab_path=data\pretrain_model\uncased_L-12_H-768_A-12\vocab.txt --init_from_pretrain_model=data\pretrain_model\uncased_L-12_H-768_A-12\params --save_model_path=data\saved_models\atis_intent --save_param=params --save_steps=100 --learning_rate=2e-5 --weight_decay=0.01 --max_seq_len=128 --print_steps=10 +``` + ### 模型预测 +#### linux环境下 ####     方式一: 推荐直接使用模块内脚本预测 ``` @@ -291,6 +306,11 @@ python -u main.py \ 注:采用方式二时,模型预测过程可参考run.sh内具体任务的参数设置 +#### windows环境下 +``` +python -u main.py --task_name=atis_intent --use_cuda=false --do_predict=true --in_tokens=true --batch_size=4096 --do_lower_case=true --data_dir=data\input\data\atis\atis_intent --init_from_params=data\saved_models\trained_models\atis_intent\params --bert_config_path=data\pretrain_model\uncased_L-12_H-768_A-12\bert_config.json --vocab_path=data\pretrain_model\uncased_L-12_H-768_A-12\vocab.txt --output_prediction_file=data\output\pred_atis_intent --max_seq_len=128 +``` + ### 模型评估     模块中6个任务,各任务支持计算的评估指标内容如下: @@ -314,6 +334,8 @@ swda:使用acc指标来评估DA任务分类结果; | SOTA | 76.70% | 87.40% | 96.90% | 96.89% | 74.50% | 98.32% | 81.30% | 91.70% | | DGU | 82.03% | 90.59% | 97.73% | 97.14% | 91.23% | 97.76% | 80.37% | 91.53% | +#### linux环境下 + ####     方式一: 推荐直接使用模块内脚本评估 ``` @@ -340,6 +362,11 @@ python -u main.py \ --output_prediction_file="./data/output/pred_${TASK_NAME}" ``` +#### windows环境下 +``` +python -u main.py --task_name=atis_intent --use_cuda=false --do_eval=true --evaluation_file=data\input\data\atis\atis_intent\test.txt --output_prediction_file=data\output\pred_atis_intent +``` + ### 模型推断 ####     方式一: 推荐直接使用模块内脚本保存inference model diff --git a/PaddleNLP/PaddleDialogue/dialogue_general_understanding/dgu/prepare_data_and_model.py b/PaddleNLP/PaddleDialogue/dialogue_general_understanding/dgu/prepare_data_and_model.py index 641e56fa..d47f8c4b 100644 --- a/PaddleNLP/PaddleDialogue/dialogue_general_understanding/dgu/prepare_data_and_model.py +++ b/PaddleNLP/PaddleDialogue/dialogue_general_understanding/dgu/prepare_data_and_model.py @@ -23,6 +23,7 @@ import os URLLIB=urllib if sys.version_info >= (3, 0): + import urllib.request URLLIB=urllib.request DATA_MODEL_PATH = {"DATA_PATH": "https://baidu-nlp.bj.bcebos.com/dmtk_data_1.0.0.tar.gz", diff --git a/PaddleNLP/PaddleDialogue/dialogue_general_understanding/dgu/utils/save_load_io.py b/PaddleNLP/PaddleDialogue/dialogue_general_understanding/dgu/utils/save_load_io.py index 6797426f..7fb9adc6 100644 --- a/PaddleNLP/PaddleDialogue/dialogue_general_understanding/dgu/utils/save_load_io.py +++ b/PaddleNLP/PaddleDialogue/dialogue_general_understanding/dgu/utils/save_load_io.py @@ -112,8 +112,8 @@ def save_param(args, exe, program, dirname): param_dir = os.path.join(args.save_model_path, args.save_param) if not os.path.exists(param_dir): - os.mkdir(param_dir) - + os.makedirs(param_dir) + fluid.io.save_params( exe, os.path.join(param_dir, dirname), -- GitLab