阅读理解-AoA Reader

## 1. 模型说明 模型为复现论文[Attention-over-Attention Neural Networks for Reading Comprehension](https://arxiv.org/abs/1607.04423)中的模型AoA Reader。 复现采取数据集CBTest CN, 复现效果达到在 Valid数据集上accuracy为72.15%,在Test数据集上accuracy为70.08%。 模型训练仅支持在GPU环境上进行,且不会采用多GPU训练,在多GPU环境下默认会选择第一块进行训练,可以设置 2.1 中提到的device参数来选择GPU。 ## 2. 训练 ### 2.1 算法基本信息 - 任务类型:英文阅读理解(完型填空类型) - 算法输入:CBTest CN数据集 train数据 - 算法输出:用于Pytorch推理的pth模型 - 代码结构: ```bash src │ dictionary.pickle #字典文件 │ preprocess.py #用于对数据进行处理的函数 │ train.py #训练入口 │ ├─models #模型文件 │ model.py │ __init__.py │ ├─pe-trained_weights ├─trained_model │ └─model │ │ best_model.pth │ │ config.json │ │ customize_service.py │ │ dictionary.pickle │ │ preprocess.py │ │ │ ├─models │ │ │ model.py │ │ └─ __init__.py │ │ │ └─utils │ │ dataloader.py │ │ dict.py │ └─ __init__.py │ └─utils #训练模型需要的文件 dataloader.py dict.py __init__.py ``` ### 2.2 训练参数说明 | 名称 | 默认值 | 类型 | 是否必填 | 是否可修改 | 描述 | | -------------- | ------ | ---------- | -------- | ---------- | ------------------------------------------------------------ | | batch_size | 32 | Integer | True | True | 训练每次输入进模型的样本个数 | | embbeding_size | 384 | Integer | True | True | embbeding层单元个数 | | gru_size | 256 | Integer | True | True | gru隐藏层单元个数 | | epoch | 5 | Integer | True | True | 训练轮数 | | lr | 0.001 | Continuous | True | True | 初始学习率 | | l2 | 0.0001 | Continuous | True | True | 对embbeding层加的L2正则系数 | | dropout | 0.1 | Continuous | True | True | 对embbeding层的dropout概率 | | lr_step_size | 3 | Integer | True | True | 用于更新lr,每过lr_step_size个epoch,lr更新为lr*lr_gamma | | lr_gamma | 0.1 | Continuous | True | True | 用于更新lr的系数 | | load_weight | | String | False | True | 导入已训练好的模型的参数文件名。需要将模型文件放在obs桶内,和数据集文件放在同一文件夹下,利用train_url导入 | | eval | False | String | True | True | 是否开启评估模式,若为True,必须要输入load_weight,会输出导入模型在验证集和测试集上的accuracy | | log_interval | 1000 | Integer | True | True | 每训练log_interval后打印当前轮数在训练集上的loss和accuracy | | device | 0 | Integer | True | True | 表示使用的gpu的编号 | > load_weight参数有以下两种取值: (1)固定的默认路径,默认加载本算法源码目录中的trained_model/model/best_model_epoch3_acc_72.15.pth继续训练,加载成功会打印日志; (2)可变的OBS路径(需要以obs或s3开头的string),用户可指定OBS上的一个模型文件路径,然后本算法会加载该模型继续训练,加载成功会打印日志。 > eval参数有以下两种取值: (1)False,本算法执行模型训练过程; (2)True,本算法加载load_weight参数指定的模型,然后执行模型评估过程。 模型评估需要支持以下输入情况: 创建训练作业时指定的数据存储位置data_url目录下,其中cbtest_CN_valid_2000ex.txt,cbtest_CN_test_2500ex.txt为验证集和测试集。 评估模式输出两个文件pred_results.txt和eval_result.txt。前者为验证集和测试集上的预测结果,形式为`valid:... [\n][\n] test:...`(1-2001行为valid结果,2005-4504为test上结果),后者为验证集和测试集上的预测准确率。 ### 2.3 训练输出文件 训练会输出每个epoch生成的模型参数文件,会导入到所填写的输出的obs桶内。 同时,会将模型的部署相关文件保存至设置的obs桶路径 trained_model/model 文件夹下,在模型部署时,需要手动在obs桶内选择精度最高的模型参数文件将其复制到 trained_model/model 文件夹下。 ## 3. 案例指导 本算法的详细使用方法,请参考 [《ModelArts AI Gallery算法阅读理解-AoA Reader使用指导》](https://marketplace.huaweicloud.com/markets/aihub/article/detail/?content_id=42f62f7f-2294-4923-8d37-233877f4ccb6)
1. 模型说明
模型为复现论文Attention-over-Attention Neural Networks for Reading Comprehension中的模型AoA Reader。
复现采取数据集CBTest CN, 复现效果达到在 Valid数据集上accuracy为72.15%,在Test数据集上accuracy为70.08%。
模型训练仅支持在GPU环境上进行,且不会采用多GPU训练,在多GPU环境下默认会选择第一块进行训练,可以设置 2.1 中提到的device参数来选择GPU。
2. 训练
2.1 算法基本信息
-
任务类型:英文阅读理解(完型填空类型)
-
算法输入:CBTest CN数据集 train数据
-
算法输出:用于Pytorch推理的pth模型
-
代码结构:
src │ dictionary.pickle #字典文件 │ preprocess.py #用于对数据进行处理的函数 │ train.py #训练入口 │ ├─models #模型文件 │ model.py │ __init__.py │ ├─pe-trained_weights ├─trained_model │ └─model │ │ best_model.pth │ │ config.json │ │ customize_service.py │ │ dictionary.pickle │ │ preprocess.py │ │ │ ├─models │ │ │ model.py │ │ └─ __init__.py │ │ │ └─utils │ │ dataloader.py │ │ dict.py │ └─ __init__.py │ └─utils #训练模型需要的文件 dataloader.py dict.py __init__.py
2.2 训练参数说明
名称 | 默认值 | 类型 | 是否必填 | 是否可修改 | 描述 |
---|---|---|---|---|---|
batch_size | 32 | Integer | True | True | 训练每次输入进模型的样本个数 |
embbeding_size | 384 | Integer | True | True | embbeding层单元个数 |
gru_size | 256 | Integer | True | True | gru隐藏层单元个数 |
epoch | 5 | Integer | True | True | 训练轮数 |
lr | 0.001 | Continuous | True | True | 初始学习率 |
l2 | 0.0001 | Continuous | True | True | 对embbeding层加的L2正则系数 |
dropout | 0.1 | Continuous | True | True | 对embbeding层的dropout概率 |
lr_step_size | 3 | Integer | True | True | 用于更新lr,每过lr_step_size个epoch,lr更新为lr*lr_gamma |
lr_gamma | 0.1 | Continuous | True | True | 用于更新lr的系数 |
load_weight | String | False | True | 导入已训练好的模型的参数文件名。需要将模型文件放在obs桶内,和数据集文件放在同一文件夹下,利用train_url导入 | |
eval | False | String | True | True | 是否开启评估模式,若为True,必须要输入load_weight,会输出导入模型在验证集和测试集上的accuracy |
log_interval | 1000 | Integer | True | True | 每训练log_interval后打印当前轮数在训练集上的loss和accuracy |
device | 0 | Integer | True | True | 表示使用的gpu的编号 |
> load_weight参数有以下两种取值:
(1)固定的默认路径,默认加载本算法源码目录中的trained_model/model/best_model_epoch3_acc_72.15.pth继续训练,加载成功会打印日志;
(2)可变的OBS路径(需要以obs或s3开头的string),用户可指定OBS上的一个模型文件路径,然后本算法会加载该模型继续训练,加载成功会打印日志。
> eval参数有以下两种取值:
(1)False,本算法执行模型训练过程;
(2)True,本算法加载load_weight参数指定的模型,然后执行模型评估过程。
模型评估需要支持以下输入情况:
创建训练作业时指定的数据存储位置data_url目录下,其中cbtest_CN_valid_2000ex.txt,cbtest_CN_test_2500ex.txt为验证集和测试集。
评估模式输出两个文件pred_results.txt和eval_result.txt。前者为验证集和测试集上的预测结果,形式为valid:... [\n][\n] test:...
(1-2001行为valid结果,2005-4504为test上结果),后者为验证集和测试集上的预测准确率。
2.3 训练输出文件
训练会输出每个epoch生成的模型参数文件,会导入到所填写的输出的obs桶内。
同时,会将模型的部署相关文件保存至设置的obs桶路径 trained_model/model 文件夹下,在模型部署时,需要手动在obs桶内选择精度最高的模型参数文件将其复制到 trained_model/model 文件夹下。
3. 案例指导
本算法的详细使用方法,请参考 《ModelArts AI Gallery算法阅读理解-AoA Reader使用指导》
1. 模型说明
模型为复现论文Attention-over-Attention Neural Networks for Reading Comprehension中的模型AoA Reader。
复现采取数据集CBTest CN, 复现效果达到在 Valid数据集上accuracy为72.15%,在Test数据集上accuracy为70.08%。
模型训练仅支持在GPU环境上进行,且不会采用多GPU训练,在多GPU环境下默认会选择第一块进行训练,可以设置 2.1 中提到的device参数来选择GPU。
2. 训练
2.1 算法基本信息
-
任务类型:英文阅读理解(完型填空类型)
-
算法输入:CBTest CN数据集 train数据
-
算法输出:用于Pytorch推理的pth模型
-
代码结构:
src │ dictionary.pickle #字典文件 │ preprocess.py #用于对数据进行处理的函数 │ train.py #训练入口 │ ├─models #模型文件 │ model.py │ __init__.py │ ├─pe-trained_weights ├─trained_model │ └─model │ │ best_model.pth │ │ config.json │ │ customize_service.py │ │ dictionary.pickle │ │ preprocess.py │ │ │ ├─models │ │ │ model.py │ │ └─ __init__.py │ │ │ └─utils │ │ dataloader.py │ │ dict.py │ └─ __init__.py │ └─utils #训练模型需要的文件 dataloader.py dict.py __init__.py
2.2 训练参数说明
名称 | 默认值 | 类型 | 是否必填 | 是否可修改 | 描述 |
---|---|---|---|---|---|
batch_size | 32 | Integer | True | True | 训练每次输入进模型的样本个数 |
embbeding_size | 384 | Integer | True | True | embbeding层单元个数 |
gru_size | 256 | Integer | True | True | gru隐藏层单元个数 |
epoch | 5 | Integer | True | True | 训练轮数 |
lr | 0.001 | Continuous | True | True | 初始学习率 |
l2 | 0.0001 | Continuous | True | True | 对embbeding层加的L2正则系数 |
dropout | 0.1 | Continuous | True | True | 对embbeding层的dropout概率 |
lr_step_size | 3 | Integer | True | True | 用于更新lr,每过lr_step_size个epoch,lr更新为lr*lr_gamma |
lr_gamma | 0.1 | Continuous | True | True | 用于更新lr的系数 |
load_weight | String | False | True | 导入已训练好的模型的参数文件名。需要将模型文件放在obs桶内,和数据集文件放在同一文件夹下,利用train_url导入 | |
eval | False | String | True | True | 是否开启评估模式,若为True,必须要输入load_weight,会输出导入模型在验证集和测试集上的accuracy |
log_interval | 1000 | Integer | True | True | 每训练log_interval后打印当前轮数在训练集上的loss和accuracy |
device | 0 | Integer | True | True | 表示使用的gpu的编号 |
> load_weight参数有以下两种取值:
(1)固定的默认路径,默认加载本算法源码目录中的trained_model/model/best_model_epoch3_acc_72.15.pth继续训练,加载成功会打印日志;
(2)可变的OBS路径(需要以obs或s3开头的string),用户可指定OBS上的一个模型文件路径,然后本算法会加载该模型继续训练,加载成功会打印日志。
> eval参数有以下两种取值:
(1)False,本算法执行模型训练过程;
(2)True,本算法加载load_weight参数指定的模型,然后执行模型评估过程。
模型评估需要支持以下输入情况:
创建训练作业时指定的数据存储位置data_url目录下,其中cbtest_CN_valid_2000ex.txt,cbtest_CN_test_2500ex.txt为验证集和测试集。
评估模式输出两个文件pred_results.txt和eval_result.txt。前者为验证集和测试集上的预测结果,形式为valid:... [\n][\n] test:...
(1-2001行为valid结果,2005-4504为test上结果),后者为验证集和测试集上的预测准确率。
2.3 训练输出文件
训练会输出每个epoch生成的模型参数文件,会导入到所填写的输出的obs桶内。
同时,会将模型的部署相关文件保存至设置的obs桶路径 trained_model/model 文件夹下,在模型部署时,需要手动在obs桶内选择精度最高的模型参数文件将其复制到 trained_model/model 文件夹下。
3. 案例指导
本算法的详细使用方法,请参考 《ModelArts AI Gallery算法阅读理解-AoA Reader使用指导》