一、 艾尼ERNIE简介
持续学习语义理解框架艾尼(ERNIE)利用百度海量数据和飞桨(PaddlePaddle)多机多卡高效训练优势,通过深度神经网络与多任务学习等技术,持续学习海量数据和知识。基于该框架的艾尼(ERNIE)预训练模型,已累计学习10亿多知识,助力各NLP任务显著提升。
二、 快速使用
1. 准备工作:
Step1:安装Python,请在官网下载 https://www.python.org/downloads/
Step2:安装飞桨(PaddlePaddle)https://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,在开始预训练之前需要把 CUDA、cuDNN、NCCL2 等动态库路径加入到环境变量 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_a、label;
句对分类需要将数据处理包含3个字段的tsv文件,3个字段分别为::text_a、text_b、label。
示例数据如下:
|
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 |