开源预训练语言模型合集

November 18, 2021 · View on GitHub

这是由追一科技有限公司推出的一个预训练模型合集,主要发布自研的预训练语言模型,推动自然语言处理技术的进步。预训练语言模型通过在大规模文本上进行预训练,可以作为下游自然语言处理任务的模型参数或者模型输入以提高模型的整体性能。

模型概览

以下是我们目前公开发布的模型概览:

名称数据来源训练数据大小词表大小模型大小下载地址
RoBERTa Tiny百科,新闻 等35G2112827MB下载链接
RoBERTa Small百科,新闻 等35G2112848MB下载链接
SimBERT Tiny百度知道2200万相似句组1368526MB下载链接
SimBERT Small百度知道2200万相似句组1368549MB下载链接
SimBERT Base百度知道2200万相似句组13685344MB下载链接
RoBERTa+ Tiny百科,新闻 等35G2112835MB下载链接
RoBERTa+ Small百科,新闻 等35G2112867MB下载链接
WoBERT百科,新闻 等35G33586/50000400MWoBERT项目
T5 PEGASUS百科,新闻 等35G50000971MT5 PEGASUS项目

评估结果

这里给出部分数据集上模型的评测结果。

(注:以下实验结果均为重复跑三次后的平均值。预测阶段,两个small模型速度完全一致,两个tiny模型速度也完全一致。)

文本情感分类

任务来源:https://github.com/bojone/bert4keras/blob/master/examples/datasets/sentiment.zip

评测脚本:task_sentiment.py

评测指标:accuracy

模型验证集(valid)训练速度第一个epoch结束时的指标值测试集(test)
RoBERTa Small94.89%38s/epoch90.48%94.81%
ALBERT Small94.57%33s/epoch91.02%94.52%
RoBERTa Tiny94.46%23s/epoch90.83%94.00%
ALBERT Tiny94.14%20s/epoch90.18%93.78%

IFLYTEK' 长文本分类

任务来源:https://github.com/CLUEbenchmark/CLUE

评测脚本:task_iflytek.py

评测指标:accuracy

模型验证集(dev)训练速度第一个epoch结束时的指标值
RoBERTa+ Small57.93%32s/epoch54.44%
RoBERTa Small57.66%27s/epoch52.60%
ALBERT Small57.14%24s/epoch48.21%
RoBERTa+ Tiny57.51%19s/epoch51.00%
RoBERTa Tiny57.43%16s/epoch49.76%
ALBERT Tiny56.42%14s/epoch43.84%

LIC2019-IE 信息抽取任务

任务来源:http://lic2019.ccf.org.cn/kg

评测脚本:task_lic2019_ie.py

评测指标:F1

模型验证集(dev)训练速度第一个epoch结束时的指标值
RoBERTa+ Small78.35%446s/epoch61.92%
RoBERTa Small78.09%375s/epoch63.85%
ALBERT Small77.69%335s/epoch46.58%
RoBERTa+ Tiny76.93%264s/epoch45.80%
RoBERTa Tiny76.65%235s/epoch46.12%
ALBERT Tiny75.94%215s/epoch31.66%

CIPS-SogouQA 阅读理解式问答

任务来源:http://task.www.sogou.com/cips-sogou_qa/

评测脚本:task_cips_sogou_qa.py

评测指标:(EM + F1) / 2

模型验证集(dev)训练速度第一个epoch结束时的指标值
RoBERTa+ Small71.27%673s/epoch56.09%
RoBERTa Small70.35%607s/epoch61.07%
ALBERT Small66.66%582s/epoch50.93%
RoBERTa+ Tiny68.37%481s/epoch52.59%
RoBERTa Tiny67.85%455s/epoch49.78%
ALBERT Tiny63.41%443s/epoch37.47%

(注:此处是直接使用UniLM的Seq2Seq方案来做阅读理解,主要测试模型用做文本生成时的能力。但要说明的是,Seq2Seq并非做阅读理解的标准方案。)

模型详情

此处对每个模型进行较为详细的介绍

RoBERTa Tiny

  • 【配置】 4层模型,hidden size为312,对Embedding层做了低秩分解(312->128->312),可以用bert4keras加载使用。

  • 【训练】 使用bert4keras在TPU v3-8上训练,使用带梯度累积的LAMB优化器,批大小为800,累积4步更新,相当于以批大小3200训练了125k步(前3125步为warmup)。

  • 【备注】 速度跟albert tiny一致,普通分类性能也基本一致,但由于roberta模型并没有参数共享这个约束,所以在生成式任务等复杂任务上效果优于albert tiny。

RoBERTa Small

  • 【配置】 6层模型,hidden size为384,对Embedding层做了低秩分解(384->128->384),可以用bert4keras加载使用。

  • 【训练】 使用bert4keras在TPU v3-8上训练,使用带梯度累积的LAMB优化器,批大小为800,累积4步更新,相当于以批大小3200训练了125k步(前3125步为warmup)。

  • 【备注】 速度跟albert small一致,普通分类性能也基本一致,但由于roberta模型并没有参数共享这个约束,所以在生成式任务等复杂任务上效果优于albert small。

SimBERT Base

  • 【配置】 跟bert base一致,12层模型,hidden size为768。

  • 【训练】 使用bert4keras基于chinese_L-12_H-768_A-12进行继续训练,训练任务为“度量学习+UniLM”,以Adam优化器(学习率2e-6,批大小128)的Adam优化器在单个TITAN RTX上训练了117万步。

  • 【备注】 简单来说,这就是一个finetune过的bert base模型,但是[CLS]对应的输出具有句向量的意义,可以用于检索任务,理论上短文本效果会更好,在跟这里一样的验证集上得到了0.96的top1准确率;此外还具有一对多生成能力。详见例子simbert_base.py

RoBERTa+ Tiny

  • 【配置】 4层模型,hidden size为312,key_size增大为104(原来的4倍),对Embedding层做了低秩分解(312->128->312),可以用bert4keras加载使用。

  • 【训练】 使用bert4keras在TPU v3-8上训练,使用带梯度累积的LAMB优化器,批大小为800,累积4步更新,相当于以批大小3200训练了125k步(前3125步为warmup)。

  • 【备注】 速度比RoBERTa Tiny略慢,但整体效果更优。

RoBERTa+ Small

  • 【配置】 6层模型,hidden size为384,key_size增大为128(原来的4倍),对Embedding层做了低秩分解(384->128->384),可以用bert4keras加载使用。

  • 【训练】 使用bert4keras在TPU v3-8上训练,使用带梯度累积的LAMB优化器,批大小为800,累积4步更新,相当于以批大小3200训练了125k步(前3125步为warmup)。

  • 【备注】 速度比RoBERTa Small略慢,但整体效果更优。

如何引用

Bibtex:

@techreport{zhuiyipretrainedmodels,
  title={Open Language Pre-trained Model Zoo - ZhuiyiAI},
  author={Jianlin Su},
  year={2020},
  url="https://github.com/ZhuiyiTechnology/pretrained-models",
}

致谢信息

本项目部分受到谷歌TensorFlow Research Cloud计划资助,在此特别致谢。

联系我们

邮箱:ai@wezhuiyi.com

相关链接

追一科技:https://zhuiyi.ai