\u200E
快速上手艾尼ERNIE指南
发布日期:2019-08-08T04:00:44.000+0000 浏览量:299次

一、         艾尼ERNIE简介

持续学习语义理解框架艾尼(ERNIE)利用百度海量数据和飞桨(PaddlePaddle)多机多卡高效训练优势,通过深度神经网络与多任务学习等技术,持续学习海量数据和知识。基于该框架的艾尼(ERNIE)预训练模型,已累计学习10亿多知识,助力各NLP任务显著提升。

二、         快速使用

1.      准备工作:

Step1:安装Python,请在官网下载 https://www.python.org/downloads/

Step2:安装飞桨(PaddlePaddlehttps://www.paddlepaddle.org.cn/start/

温馨提示1:可以考虑用docker安装避免一些环境依赖问题

Step3:下载艾尼(ERNIE)模型和配置(https://ernie.bj.bcebos.com/ERNIE_1.0_max-len-512.tar.gz),该模型会在微调阶段用到

2.      预训练过程:

Step1:数据预处理

每个样本由5 ';' 分隔的字段组成,数据格式:token_ids sentence_type_ids; position_ids; seg_labels; next_sentence_label;其中 seg_labels 表示分词边界信息: 0表示词首、1表示非词首、-1为占位符, 其对应的词为 CLS 或者 SEP。示例数据(data/demo_train_set.gz)

Step2: 开始训练

预训练任务的启动脚本是 script/zh_task/pretrain.sh,在开始预训练之前需要把 CUDAcuDNNNCCL2 等动态库路径加入到环境变量 LD_LIBRARY_PATH之中;然后执行bash script/zh_task/pretrain.sh,就可以基于demo数据和默认参数配置开始预训练。

预训练任务进行的过程中会输出当前学习率、训练数据所经过的轮数、当前迭代的总步数、训练误差、训练速度等信息、在验证集的各种指标。

3.      模型微调:

微调数据下载地址:https://ernie.bj.bcebos.com/task_data_zh.tgz

以“句子(句对)分类”场景下的“ChnSentiCorp”情感分析任务为例:

Step1:数据预处理

句子分类需要将数据处理成包含2个字段的tsv文件,2个字段分别为: text_alabel

句对分类需要将数据处理包含3个字段的tsv文件,3个字段分别为:text_atext_blabel

示例数据如下:

label  text_a
...
0   当当网名不符实,订货多日不见送货,询问客服只会推托,只会要求用户再下订单。
如此服务留不住顾客的。去别的网站买书服务更好。
0   XP的驱动不好找!我的17号提的货,现在就降价了100元,而且还送杀毒软件!
1   <荐书> 推荐所有喜欢<红楼>的红迷们一定要收藏这本书,要知道当年我听说这本书的
时候花很长时间去图书馆找和借都没能如愿,所以这次一看到当当有,马上买了,红迷们也要记得备货哦!
...

 

 

Step2:开始微调

执行 sh script/zh_task/ernie_base/run_ChnSentiCorp.sh 即可开始微调,执行结束后会输出如下所示的在验证集和测试集上的测试结果:

[dev evaluation] ave loss: 0.303819, acc:0.943333, data_num: 1200, elapsed time: 16.280898 s, file: /home/task_data/chnsenticorp/dev.tsv, epoch: 9, steps: 4001

[dev evaluation] ave loss: 0.228482, acc:0.958333, data_num: 1200, elapsed time: 16.023091 s, file: /home/task_data/chnsenticorp/test.tsv, epoch: 9, steps: 4001