Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Latest commit

 

History

History
 
 

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

README.md

XLNet

模型简介

XLNet: Generalized Autoregressive Pretraining for Language Understanding 是一款无监督的自回归预训练语言模型。 有别于传统的单向自回归模型,XLNet通过最大化输入序列所有排列的期望来进行语言建模,这使得它可以同时关注到上下文的信息。 另外,XLNet在预训练阶段集成了 Transformer-XL 模型,Transformer-XL中的片段循环机制(Segment Recurrent Mechanism)和 相对位置编码(Relative Positional Encoding)机制能够支持XLNet接受更长的输入序列,这使得XLNet在长文本序列的语言任务上有着优秀的表现。

本项目是XLNet在 Paddle 2.0上的开源实现,包含了在 GLUE评测任务 上的微调代码。

快速开始

环境依赖

  • sentencepiece

安装命令:pip install sentencepiece

数据准备

GLUE评测任务所含数据集已在paddlenlp中以API形式提供,无需预先准备,使用run_glue.py执行时将会自动下载。

执行Fine-tuning

以GLUE中的SST-2任务为例,启动Fine-tuning的方式如下:

unset CUDA_VISIBLE_DEVICES
python -m paddle.distributed.launch --gpus "0" ./run_glue.py \
    --model_name_or_path xlnet-base-cased \
    --task_name SST-2 \
    --max_seq_length 128 \
    --batch_size 32 \
    --learning_rate 2e-5 \
    --num_train_epochs 3 \
    --logging_steps 100 \
    --save_steps 500 \
    --output_dir ./tmp/

其中参数释义如下:

  • model_name_or_path 指示了某种特定配置的模型,对应有其预训练模型和预训练时使用的 tokenizer。若模型相关内容保存在本地,这里也可以提供相应目录地址。
  • task_name 表示Fine-tuning的任务。
  • max_seq_length 表示最大句子长度,超过该长度将被截断。
  • batch_size 表示每次迭代每张卡上的样本数目。
  • learning_rate 表示基础学习率大小,将与learning rate scheduler产生的值相乘作为当前学习率。
  • num_train_epochs 表示训练轮数。
  • logging_steps 表示日志打印间隔。
  • save_steps 表示模型保存及评估间隔。
  • output_dir 表示模型保存路径。

基于xlnet-base-cased在GLUE各评测任务上Fine-tuning后,在验证集上有如下结果:

Task Metric Result
SST-2 Accuracy 94.266
QNLI Accuracy 91.708
CoLA Mattehew's corr 50.264
MRPC F1/Accuracy 91.071/87.745
STS-B Person/Spearman corr 86.243/85.973
QQP Accuracy/F1 90.838/87.644
MNLI Matched acc/MisMatched acc 87.468/86.859
RTE Accuracy 70.036
WNLI Accuracy 56.338

Reference