未验证 提交 6307a025 编写于 作者: 0 0YuanZhang0 提交者: GitHub

fix_dmtk_windows (#3692)

上级 24674132
...@@ -79,15 +79,24 @@ label_data(第二阶段finetuning数据集) ...@@ -79,15 +79,24 @@ label_data(第二阶段finetuning数据集)
4、seq2seq_naive:传统seq2seq model产出的标注对话数据; 4、seq2seq_naive:传统seq2seq model产出的标注对话数据;
``` ```
    数据集、相关模型下载:     数据集、相关模型下载
    linux环境下:
``` ```
python ade/prepare_data_and_model.py 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.     下载经过预处理的数据,运行该脚本之后,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 ...@@ -130,6 +139,7 @@ encable_ce: 是否开启ce
### 单机训练 ### 单机训练
#### 1、第一阶段matching模型的训练: #### 1、第一阶段matching模型的训练:
#### linux环境下:
####     方式一: 推荐直接使用模块内脚本训练 ####     方式一: 推荐直接使用模块内脚本训练
...@@ -206,7 +216,14 @@ python -u main.py \ ...@@ -206,7 +216,14 @@ python -u main.py \
注意: 用户进行模型训练、预测、评估等, 可通过修改data/config/ade.yaml配置文件或者从命令行传入来进行参数配置, 优先推荐命令行参数传入; 注意: 用户进行模型训练、预测、评估等, 可通过修改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模型的训练: #### 2、第二阶段finetuning模型的训练:
#### linux环境下:
####     方式一: 推荐直接使用模块内脚本训练 ####     方式一: 推荐直接使用模块内脚本训练
``` ```
...@@ -271,9 +288,14 @@ python -u main.py \ ...@@ -271,9 +288,14 @@ python -u main.py \
--sample_pro=0.1 --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模型的预测: #### 1、第一阶段matching模型的预测:
#### linux环境下:
####     方式一: 推荐直接使用模块内脚本预测 ####     方式一: 推荐直接使用模块内脚本预测
``` ```
...@@ -329,8 +351,15 @@ python -u main.py \ ...@@ -329,8 +351,15 @@ python -u main.py \
注:采用方式二时,模型预测过程可参考run.sh内具体任务的参数设置 注:采用方式二时,模型预测过程可参考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模型的预测: #### 2、第二阶段finetuning模型的预测:
#### linux环境下:
####     方式一: 推荐直接使用模块内脚本预测 ####     方式一: 推荐直接使用模块内脚本预测
``` ```
...@@ -375,6 +404,11 @@ python -u main.py \ ...@@ -375,6 +404,11 @@ python -u main.py \
--vocab_size=484016 --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个任务,各任务支持计算的评估指标内容如下:     模块中5个任务,各任务支持计算的评估指标内容如下:
...@@ -412,6 +446,7 @@ seq2seq_naive:使用spearman相关系数来衡量评估模型对系统的打 ...@@ -412,6 +446,7 @@ seq2seq_naive:使用spearman相关系数来衡量评估模型对系统的打
|--|:--:|--:|:--:|--:| |--|:--:|--:|:--:|--:|
|cor|0.474|0.477|0.443|0.378| |cor|0.474|0.477|0.443|0.378|
#### linux环境下:
#### 1、第一阶段matching模型的评估: #### 1、第一阶段matching模型的评估:
####     方式一: 推荐直接使用模块内脚本评估 ####     方式一: 推荐直接使用模块内脚本评估
...@@ -434,8 +469,14 @@ python -u main.py \ ...@@ -434,8 +469,14 @@ python -u main.py \
--output_prediction_file="data/output/pretrain_matching_predict" \ --output_prediction_file="data/output/pretrain_matching_predict" \
--loss_type="CLS" --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模型的评估: #### 2、第二阶段finetuning模型的评估:
#### linux环境下:
####     方式一: 推荐直接使用模块内脚本评估 ####     方式一: 推荐直接使用模块内脚本评估
``` ```
...@@ -461,6 +502,11 @@ python -u main.py \ ...@@ -461,6 +502,11 @@ python -u main.py \
--loss_type="L2" --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模型的推断: #### 1、第一阶段matching模型的推断:
####     方式一: 推荐直接使用模块内脚本保存inference model ####     方式一: 推荐直接使用模块内脚本保存inference model
......
...@@ -22,6 +22,7 @@ import os ...@@ -22,6 +22,7 @@ import os
URLLIB=urllib URLLIB=urllib
if sys.version_info >= (3, 0): if sys.version_info >= (3, 0):
import urllib.request
URLLIB=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", DATA_MODEL_PATH = {"DATA_PATH": "https://baidu-nlp.bj.bcebos.com/auto_dialogue_evaluation_dataset-1.0.0.tar.gz",
......
...@@ -112,7 +112,7 @@ def save_param(args, exe, program, dirname): ...@@ -112,7 +112,7 @@ def save_param(args, exe, program, dirname):
param_dir = os.path.join(args.save_model_path, args.save_param) param_dir = os.path.join(args.save_model_path, args.save_param)
if not os.path.exists(param_dir): if not os.path.exists(param_dir):
os.mkdir(param_dir) os.makedirs(param_dir)
fluid.io.save_params( fluid.io.save_params(
exe, exe,
......
...@@ -77,7 +77,7 @@ function pretrain_train() ...@@ -77,7 +77,7 @@ function pretrain_train()
--emb_size=256 \ --emb_size=256 \
--vocab_size=484016 \ --vocab_size=484016 \
--learning_rate=0.001 \ --learning_rate=0.001 \
--sample_pro 0.1 --sample_pro=0.1
} }
function finetuning_train() function finetuning_train()
...@@ -111,7 +111,7 @@ function finetuning_train() ...@@ -111,7 +111,7 @@ function finetuning_train()
--emb_size=256 \ --emb_size=256 \
--vocab_size=484016 \ --vocab_size=484016 \
--learning_rate=0.001 \ --learning_rate=0.001 \
--sample_pro 0.1 --sample_pro=0.1
} }
#predict #predict
......
...@@ -61,7 +61,7 @@ SWDA:Switchboard Dialogue Act Corpus; ...@@ -61,7 +61,7 @@ SWDA:Switchboard Dialogue Act Corpus;
``` ```
    数据集、相关模型下载:     数据集、相关模型下载:
    linux环境下:
``` ```
python dgu/prepare_data_and_model.py python dgu/prepare_data_and_model.py
``` ```
...@@ -71,11 +71,19 @@ python dgu/prepare_data_and_model.py ...@@ -71,11 +71,19 @@ python dgu/prepare_data_and_model.py
    已训练模型路径:data/saved_models/trained_models     已训练模型路径: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个数据集选项中用户需要生成的数据名 task_name: udc, swda, mrda, atis, dstc2, 选择5个数据集选项中用户需要生成的数据名
...@@ -145,6 +153,7 @@ encable_ce: 是否开启ce ...@@ -145,6 +153,7 @@ encable_ce: 是否开启ce
### 单机训练 ### 单机训练
#### linux环境下
####     方式一: 推荐直接使用模块内脚本训练 ####     方式一: 推荐直接使用模块内脚本训练
``` ```
...@@ -226,7 +235,13 @@ python -u main.py \ ...@@ -226,7 +235,13 @@ python -u main.py \
1) 采用方式二时,模型训练过程可参考run.sh内相关任务的参数设置 1) 采用方式二时,模型训练过程可参考run.sh内相关任务的参数设置
2) 用户进行模型训练、预测、评估等, 可通过修改data/config/dgu.yaml配置文件或者从命令行传入来进行参数配置, 优先推荐命令行参数传入; 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 \ ...@@ -291,6 +306,11 @@ python -u main.py \
注:采用方式二时,模型预测过程可参考run.sh内具体任务的参数设置 注:采用方式二时,模型预测过程可参考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个任务,各任务支持计算的评估指标内容如下:     模块中6个任务,各任务支持计算的评估指标内容如下:
...@@ -314,6 +334,8 @@ swda:使用acc指标来评估DA任务分类结果; ...@@ -314,6 +334,8 @@ swda:使用acc指标来评估DA任务分类结果;
| SOTA | 76.70% | 87.40% | 96.90% | 96.89% | 74.50% | 98.32% | 81.30% | 91.70% | | 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% | | 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 \ ...@@ -340,6 +362,11 @@ python -u main.py \
--output_prediction_file="./data/output/pred_${TASK_NAME}" --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 ####     方式一: 推荐直接使用模块内脚本保存inference model
......
...@@ -23,6 +23,7 @@ import os ...@@ -23,6 +23,7 @@ import os
URLLIB=urllib URLLIB=urllib
if sys.version_info >= (3, 0): if sys.version_info >= (3, 0):
import urllib.request
URLLIB=urllib.request URLLIB=urllib.request
DATA_MODEL_PATH = {"DATA_PATH": "https://baidu-nlp.bj.bcebos.com/dmtk_data_1.0.0.tar.gz", DATA_MODEL_PATH = {"DATA_PATH": "https://baidu-nlp.bj.bcebos.com/dmtk_data_1.0.0.tar.gz",
......
...@@ -112,8 +112,8 @@ def save_param(args, exe, program, dirname): ...@@ -112,8 +112,8 @@ def save_param(args, exe, program, dirname):
param_dir = os.path.join(args.save_model_path, args.save_param) param_dir = os.path.join(args.save_model_path, args.save_param)
if not os.path.exists(param_dir): if not os.path.exists(param_dir):
os.mkdir(param_dir) os.makedirs(param_dir)
fluid.io.save_params( fluid.io.save_params(
exe, exe,
os.path.join(param_dir, dirname), os.path.join(param_dir, dirname),
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册