本项目基于PaddlePaddle复现的RemBert,完成情况如下:
- 在XTREME数据集上的xnli和paws-x任务均达到论文精度
- RemBertTokenizer已基于paddlenlp进行复现
- 我们复现的RemBert也是基于paddlenlp
- 我们提供aistudio notebook, 帮助您快速验证模型
项目参考:
- https://github.com/huggingface/transformers/tree/master/src/transformers/models/rembert
ACC是准确率的简写
网络 | opt | batch_size | 数据集 | ACC | ACC(原论文) |
---|---|---|---|---|---|
RemBert | AdamW | 16 | XTREME-PAWS-X | 87.78 | 87.5 |
复现代码训练日志: 复现代码训练日志
网络 | opt | batch_size | 数据集 | ACC | ACC(原论文) |
---|---|---|---|---|---|
RemBert | AdamW | 16 | XTREME-XNLI | 80.89 | 80.8 |
复现代码及训练日志: 复现代码训练日志
验收标准为在XTREME的PAWS-X数据集和XTREME-XNLI数据集的测试精度的平均值为84.2
原论文: (87.5 + 80.8) / 2 = 84.15
复现精度:(87.78 + 80.89) / 2 = 84.33
XTREME的XNLI和PAWS-X数据集是XTREME上的sequence-pair classification任务
下载XTREME-XNLI数据集:
训练集:下载地址
测试集:下载地址
其中训练集为位于XNLI-MT-1.0/multinli/multinli.train.en.tsv
, 测试集位于XNLI-1.0/xnli.test.tsv
下载XTREME-PAWS-X数据集:
下载地址
每个训练集、验证集和测试集分别为train
、dev
和test
开头的tsv
文件, 将所有语言的数据集解压后,运行下面脚本,可合并所有语言测试集(此任务需要在多语言进行测试)
python concat_paws_test_set.py
我们已经把所有的语言合进测试集, 此处可下载
下载地址,test_2k.tsv是我们合并了多语言的测试集
运行以下命令即可配置环境
pip install paddlenlp==2.2.4
如果你觉得以下步骤过于繁琐,您可以直接到此处 链接 利用我们提供的AISTUDIO NOTEBOOK快速验证和训练评估模型。checkpoint在此aistudio项目中。
首先,您需要下载预训练权重: 下载地址
python main.py --task=xnli --do_train=1 --do_eval=1 --data_dir=<DATA_DIR> --output_dir=<OUTPUT_DIR> --pretrain_model=<MODEL_DIR> --learning_rate=1e-5
从checkpoint中快速评估模型:
python main.py --task=xnli --do_eval=1 --data_dir=<DATA_DIR> --output_dir=<OUTPUT_DIR>
说明:
<DATA_DIR>
、<OUTPUT_DIR>
和<MODEL_DIR>
分别为数据集文件夹路径、输出文件夹路径和预训练权重文件夹路径
运行结束后你将看到如下结果:
Acc 80.60
python main.py main.py --task=paws --do_train=1 --do_eval=1 --data_dir=<DATA_DIR> --output_dir=<OUTPUT_DIR> --eval_step=500 --pretrain_model=<MODEL_DIR>
从checkpoint中快速评估模型:
python main.py --task=paws --do_eval=1 --data_dir=<DATA_DIR> --output_dir=<OUTPUT_DIR>
运行结束后你将看到如下结果:
ACC 87.78
├─data # 词库文件夹
| ├─sentencepiece.model # tokenizer 词库文件
├─rembert # RemBert模型文件夹
| ├─rembert_model.py # RemBert模型
| ├─rembert_tokenizer.py # tokenizer文件
├─datagenerator.py # data生成器
├─dataProcessor.py # 数据生成器
├─main.py # 主文件
├─trainer.py # 训练文件