TableQA-M-SQL

# M-SQL(Pytorch) ## 1. 概述 此模型基于 [M-SQL: Multi-Task Representation Learning for Single-Table Text2sql Generation](https://ieeexplore.ieee.org/document/9020099) 中提出的模型结构实现。我们提供了训练代码和可用于训练的模型,用于实际场景的微调训练。训练后生成的模型可直接在ModelArts平台部署成在线服务。 本算法的其他信息如下表所示: | 项目 | 说明 | |-----|-----| |参考论文|M-SQL| |使用框架|Pytorch-1.6.0| |训练集|TableQA中的训练集| |训练总epoch数|20| |训练总step数|25951| |训练batch_size|32| |训练硬件及耗时|1 x v100, 15小时| |测试集|TableQA中的开发集的一半| |原论文准确率|LX=89.13, EX=91.86, MX=90.50| |本算法准确率|LX=88.53, EX=91.04, MX=89.79| ## 2、训练 ### 2.1. 算法基本信息 | 项目 | 说明 | |-------|-------| |任务类型|SQL语句生成| |支持的框架引擎|PyTorch-1.6.0-python3.6| |算法输入|问题,表格schema文件,数据库文件| |算法输出|SQL,执行结果| 代码结构 ``` src |- trained_model # 用于在线服务部署 |- model |- bert_config |- val.tables.jsonl |- val.db |- config.json |- customize_service.py |- best_model.pth |- ... |- model # 模型定义和loss计算 |- sql_utils # 数据处理和训练、推理用到的函数 |- annotate_ws.py # 执行数据预处理 |- train.py # 执行训练和验证集上的评估 ``` ### 2.2. 训练参数说明 | 名称 |默认值|类型|是否必填|是否可修改|描述| |-----|-----|----|-----|-----|-----| |eval|False|string|否|是|是否进行模型评估,默认为False,代表训练模式;True代表评估模式,必须设定load_weight参数,加载指定的pth模型,在创建训练作业时指定的数据存储位置验证集上进行预测,所有预测结果pred_results及模型评估结果eval_result.txt将保存到创建训练作业时指定的训练输出位置上| |no_save|False|string|是|是|是否保存模型| |toy_model|False|string|否|是|是否进行小数据上的测试实验| |toy_size|16|int|否|是|小数据实验的数据个数| |tepoch|15|int|否|是|最大训练epoch数| |print_per_step|50|int|否|是|每隔多少步打印一次loss| |bS|32|string|否|是|batch-size| |accumulate_gradients|1|int|否|是|梯度累计大小,可以达到batch-size training的效果| |fine_tune|False|string|否|是|是否微调bert模型| |data_url|home/work/paper-reproduction-nlp-08/train_input/tableqa_tok_full/|string|是|是|预处理的数据存放路径| |bert_url|./m-sql/pre-trained_weights/chinese_wwm_ext_pytorch|string|否|是|使用的bert版本| |train_url|home/work/paper-reproduction-nlp-08/train_output/|string|是|是|全部数据的存放路径| |load_url|./|string|否|是|模型保存的路径| |vocab_file|vocab.txt|string|否|是|bert模型所用的词典未见| |max_seq_length|512|string|否|是|bert wordpiece tokenize之后的句子最大长度,超出部分将会被截断| |num_target_layers|1|int|否|是|使用bert模型的后几层| |dr|0|float|否|是|dropout大小| |lr|1e-3|float|否|是|除bert以外的参数的学习率| |lr_bert|1e-5|float|否|是|bert参数的学习率| |seed|1|int|否|是|随机种子大小| |do_lower_case|False|string|否|是|是否对全部数据取小写格式| |load_weight|./m-sql/trained_model/model/best_model.pth|string|是|是|(1)固定的默认路径,默认加载本算法源码目录中的trained_model/model/best_model.pth继续训练,加载成功会打印日志(2)可变的OBS路径,用户可指定OBS上的一个模型文件路径,然后本算法会加载该模型继续训练,加载成功会打印日志| |num_warmup_steps|-1|int|否|是|warmup学习率中step的大小| |split|val|string|否|是|用来测试的数据集的前缀,如val、dev、test、final| ## 2.3. 训练输出文件 训练完成后的输出文件如下: ``` |- model_best.pth # 最佳模型参数 |- results_dev-xx.jsonl # 第xx epoch训练结束后在开发集上的预测结果 |- xxx.log # 训练日志 |- model/ # 包含源码、best_model.pth等文件,可直接用于线上服务部署 ``` 如果设置eval为True,则需要使用load_weight提供模型参数文件(支持“obs://”链接),输出文件如下: ``` |- pred_results.jsonl # 在开发集上的预测结果 |- eval_xxx.log # 在开发集上的评价结果 ``` ## 3. GPU/CPU推理 源模型来源选择从训练中选择,选择训练作业及版本。 即声明load_weight参数为obs://paper-reproduction-nlp-08/train_output/model/best_model.pth 如果需要部署线上推理服务,优先选择CPU:8 核 32GiB GPU:1 * T4配置 ## 4. 详情指导 本算法的详细使用方法,请查看[《ModelArts AI Gallery算法M-SQL使用指导》](https://marketplace.huaweicloud.com/markets/aihub/article/detail/?content_id=71bcfaad-f699-47d1-9e38-367ea13ccadf)。
M-SQL(Pytorch)
1. 概述
此模型基于 M-SQL: Multi-Task Representation Learning for Single-Table Text2sql Generation 中提出的模型结构实现。我们提供了训练代码和可用于训练的模型,用于实际场景的微调训练。训练后生成的模型可直接在ModelArts平台部署成在线服务。
本算法的其他信息如下表所示:
项目 | 说明 |
---|---|
参考论文 | M-SQL |
使用框架 | Pytorch-1.6.0 |
训练集 | TableQA中的训练集 |
训练总epoch数 | 20 |
训练总step数 | 25951 |
训练batch_size | 32 |
训练硬件及耗时 | 1 x v100, 15小时 |
测试集 | TableQA中的开发集的一半 |
原论文准确率 | LX=89.13, EX=91.86, MX=90.50 |
本算法准确率 | LX=88.53, EX=91.04, MX=89.79 |
2、训练
2.1. 算法基本信息
项目 | 说明 |
---|---|
任务类型 | SQL语句生成 |
支持的框架引擎 | PyTorch-1.6.0-python3.6 |
算法输入 | 问题,表格schema文件,数据库文件 |
算法输出 | SQL,执行结果 |
代码结构
src
|- trained_model # 用于在线服务部署
|- model
|- bert_config
|- val.tables.jsonl
|- val.db
|- config.json
|- customize_service.py
|- best_model.pth
|- ...
|- model # 模型定义和loss计算
|- sql_utils # 数据处理和训练、推理用到的函数
|- annotate_ws.py # 执行数据预处理
|- train.py # 执行训练和验证集上的评估
2.2. 训练参数说明
名称 | 默认值 | 类型 | 是否必填 | 是否可修改 | 描述 |
---|---|---|---|---|---|
eval | False | string | 否 | 是 | 是否进行模型评估,默认为False,代表训练模式;True代表评估模式,必须设定load_weight参数,加载指定的pth模型,在创建训练作业时指定的数据存储位置验证集上进行预测,所有预测结果pred_results及模型评估结果eval_result.txt将保存到创建训练作业时指定的训练输出位置上 |
no_save | False | string | 是 | 是 | 是否保存模型 |
toy_model | False | string | 否 | 是 | 是否进行小数据上的测试实验 |
toy_size | 16 | int | 否 | 是 | 小数据实验的数据个数 |
tepoch | 15 | int | 否 | 是 | 最大训练epoch数 |
print_per_step | 50 | int | 否 | 是 | 每隔多少步打印一次loss |
bS | 32 | string | 否 | 是 | batch-size |
accumulate_gradients | 1 | int | 否 | 是 | 梯度累计大小,可以达到batch-size training的效果 |
fine_tune | False | string | 否 | 是 | 是否微调bert模型 |
data_url | home/work/paper-reproduction-nlp-08/train_input/tableqa_tok_full/ | string | 是 | 是 | 预处理的数据存放路径 |
bert_url | ./m-sql/pre-trained_weights/chinese_wwm_ext_pytorch | string | 否 | 是 | 使用的bert版本 |
train_url | home/work/paper-reproduction-nlp-08/train_output/ | string | 是 | 是 | 全部数据的存放路径 |
load_url | ./ | string | 否 | 是 | 模型保存的路径 |
vocab_file | vocab.txt | string | 否 | 是 | bert模型所用的词典未见 |
max_seq_length | 512 | string | 否 | 是 | bert wordpiece tokenize之后的句子最大长度,超出部分将会被截断 |
num_target_layers | 1 | int | 否 | 是 | 使用bert模型的后几层 |
dr | 0 | float | 否 | 是 | dropout大小 |
lr | 1e-3 | float | 否 | 是 | 除bert以外的参数的学习率 |
lr_bert | 1e-5 | float | 否 | 是 | bert参数的学习率 |
seed | 1 | int | 否 | 是 | 随机种子大小 |
do_lower_case | False | string | 否 | 是 | 是否对全部数据取小写格式 |
load_weight | ./m-sql/trained_model/model/best_model.pth | string | 是 | 是 | (1)固定的默认路径,默认加载本算法源码目录中的trained_model/model/best_model.pth继续训练,加载成功会打印日志(2)可变的OBS路径,用户可指定OBS上的一个模型文件路径,然后本算法会加载该模型继续训练,加载成功会打印日志 |
num_warmup_steps | -1 | int | 否 | 是 | warmup学习率中step的大小 |
split | val | string | 否 | 是 | 用来测试的数据集的前缀,如val、dev、test、final |
2.3. 训练输出文件
训练完成后的输出文件如下:
|- model_best.pth # 最佳模型参数
|- results_dev-xx.jsonl # 第xx epoch训练结束后在开发集上的预测结果
|- xxx.log # 训练日志
|- model/ # 包含源码、best_model.pth等文件,可直接用于线上服务部署
如果设置eval为True,则需要使用load_weight提供模型参数文件(支持“obs://”链接),输出文件如下:
|- pred_results.jsonl # 在开发集上的预测结果
|- eval_xxx.log # 在开发集上的评价结果
3. GPU/CPU推理
源模型来源选择从训练中选择,选择训练作业及版本。
即声明load_weight参数为obs://paper-reproduction-nlp-08/train_output/model/best_model.pth
如果需要部署线上推理服务,优先选择CPU:8 核 32GiB GPU:1 * T4配置
4. 详情指导
本算法的详细使用方法,请查看《ModelArts AI Gallery算法M-SQL使用指导》。
M-SQL(Pytorch)
1. 概述
此模型基于 M-SQL: Multi-Task Representation Learning for Single-Table Text2sql Generation 中提出的模型结构实现。我们提供了训练代码和可用于训练的模型,用于实际场景的微调训练。训练后生成的模型可直接在ModelArts平台部署成在线服务。
本算法的其他信息如下表所示:
项目 | 说明 |
---|---|
参考论文 | M-SQL |
使用框架 | Pytorch-1.6.0 |
训练集 | TableQA中的训练集 |
训练总epoch数 | 20 |
训练总step数 | 25951 |
训练batch_size | 32 |
训练硬件及耗时 | 1 x v100, 15小时 |
测试集 | TableQA中的开发集的一半 |
原论文准确率 | LX=89.13, EX=91.86, MX=90.50 |
本算法准确率 | LX=88.53, EX=91.04, MX=89.79 |
2、训练
2.1. 算法基本信息
项目 | 说明 |
---|---|
任务类型 | SQL语句生成 |
支持的框架引擎 | PyTorch-1.6.0-python3.6 |
算法输入 | 问题,表格schema文件,数据库文件 |
算法输出 | SQL,执行结果 |
代码结构
src
|- trained_model # 用于在线服务部署
|- model
|- bert_config
|- val.tables.jsonl
|- val.db
|- config.json
|- customize_service.py
|- best_model.pth
|- ...
|- model # 模型定义和loss计算
|- sql_utils # 数据处理和训练、推理用到的函数
|- annotate_ws.py # 执行数据预处理
|- train.py # 执行训练和验证集上的评估
2.2. 训练参数说明
名称 | 默认值 | 类型 | 是否必填 | 是否可修改 | 描述 |
---|---|---|---|---|---|
eval | False | string | 否 | 是 | 是否进行模型评估,默认为False,代表训练模式;True代表评估模式,必须设定load_weight参数,加载指定的pth模型,在创建训练作业时指定的数据存储位置验证集上进行预测,所有预测结果pred_results及模型评估结果eval_result.txt将保存到创建训练作业时指定的训练输出位置上 |
no_save | False | string | 是 | 是 | 是否保存模型 |
toy_model | False | string | 否 | 是 | 是否进行小数据上的测试实验 |
toy_size | 16 | int | 否 | 是 | 小数据实验的数据个数 |
tepoch | 15 | int | 否 | 是 | 最大训练epoch数 |
print_per_step | 50 | int | 否 | 是 | 每隔多少步打印一次loss |
bS | 32 | string | 否 | 是 | batch-size |
accumulate_gradients | 1 | int | 否 | 是 | 梯度累计大小,可以达到batch-size training的效果 |
fine_tune | False | string | 否 | 是 | 是否微调bert模型 |
data_url | home/work/paper-reproduction-nlp-08/train_input/tableqa_tok_full/ | string | 是 | 是 | 预处理的数据存放路径 |
bert_url | ./m-sql/pre-trained_weights/chinese_wwm_ext_pytorch | string | 否 | 是 | 使用的bert版本 |
train_url | home/work/paper-reproduction-nlp-08/train_output/ | string | 是 | 是 | 全部数据的存放路径 |
load_url | ./ | string | 否 | 是 | 模型保存的路径 |
vocab_file | vocab.txt | string | 否 | 是 | bert模型所用的词典未见 |
max_seq_length | 512 | string | 否 | 是 | bert wordpiece tokenize之后的句子最大长度,超出部分将会被截断 |
num_target_layers | 1 | int | 否 | 是 | 使用bert模型的后几层 |
dr | 0 | float | 否 | 是 | dropout大小 |
lr | 1e-3 | float | 否 | 是 | 除bert以外的参数的学习率 |
lr_bert | 1e-5 | float | 否 | 是 | bert参数的学习率 |
seed | 1 | int | 否 | 是 | 随机种子大小 |
do_lower_case | False | string | 否 | 是 | 是否对全部数据取小写格式 |
load_weight | ./m-sql/trained_model/model/best_model.pth | string | 是 | 是 | (1)固定的默认路径,默认加载本算法源码目录中的trained_model/model/best_model.pth继续训练,加载成功会打印日志(2)可变的OBS路径,用户可指定OBS上的一个模型文件路径,然后本算法会加载该模型继续训练,加载成功会打印日志 |
num_warmup_steps | -1 | int | 否 | 是 | warmup学习率中step的大小 |
split | val | string | 否 | 是 | 用来测试的数据集的前缀,如val、dev、test、final |
2.3. 训练输出文件
训练完成后的输出文件如下:
|- model_best.pth # 最佳模型参数
|- results_dev-xx.jsonl # 第xx epoch训练结束后在开发集上的预测结果
|- xxx.log # 训练日志
|- model/ # 包含源码、best_model.pth等文件,可直接用于线上服务部署
如果设置eval为True,则需要使用load_weight提供模型参数文件(支持“obs://”链接),输出文件如下:
|- pred_results.jsonl # 在开发集上的预测结果
|- eval_xxx.log # 在开发集上的评价结果
3. GPU/CPU推理
源模型来源选择从训练中选择,选择训练作业及版本。
即声明load_weight参数为obs://paper-reproduction-nlp-08/train_output/model/best_model.pth
如果需要部署线上推理服务,优先选择CPU:8 核 32GiB GPU:1 * T4配置
4. 详情指导
本算法的详细使用方法,请查看《ModelArts AI Gallery算法M-SQL使用指导》。