BERT、ERNIE、TextCNN做文本分类任务性能对比
Created by: Biaocsu
以下模型的推理速度、内存占用等均在‘CPU’上考察 【TextCNN、pytorch_bert、tensorflow_bert、ERNIE文本分类任务性能对比】 【以下性能考察结果均经过多次测试】
推理时的数据最长文本有75万中文字符,利用100个文本进行测试。 从内存占用及推理速度指标来看,四种算法中,TextCNN均是最优的。 由于bert及ERNIE并未经过多次fine-tune就已经达到较好泛化效果,因此可以认为其泛化能力会相对textcnn更好些。 pytorch_bert、tensorflow_bert、ERNIE三者相比较,在内存占用方面相差不是很大;但ERNIE在推理速度方面稍差(这个蛮重要),不过ERNIE版本更新很快、另可直接联系其工作团队解答疑问 长文本预测时,尝试了将文本截断(例如:文本长度100000, 则分n=100000//510次)预测,因为长文本前510长度有可能没有重要信息。(例如:【‘娱乐’, ‘赌博’】二分类,截断n次,只要有一次预测为‘赌博’那文本就是赌博类别)
【TextCNN】 推理时模型占用内存大约:546M(稳定) 推理时预测一个文件(完整长文本)平均所需时间:0.095s 多次训练,保存泛化效果最好模型,其在测试集上准确率:95.312%
【Pytorch_bert】 推理时模型占用内存:942M(峰值) 推理时预测一个文本(前128+后382字符)平均所需时间:1.149S 推理时预测一个文本(前510 * 1长度+尾部数据;相当于预测截断成n个510文本)平均所需时间:2.658s 推理时预测一个文本(前510 * 2长度+尾部数据)平均所需时间:3.529s 推理时预测一个文本(前510 * 5长度+尾部数据)平均所需时间:5.233s 推理时预测一个文本(完整长文本)平均所需时间:38.77s fine-tune模型,其在测试集上准确率:98.82%
【tensorflow_bert】 推理时模型占用内存:988M(峰值) 推理时预测一个文本(前128+后382字符)平均所需时间:1.332S 推理时预测一个文本(前510 * 1长度+尾部数据)平均所需时间:1.485s 推理时预测一个文本(前510 * 2长度+尾部数据)平均所需时间:3.570s 推理时预测一个文本(前510 * 5长度+尾部数据)平均所需时间:7.033s 推理时预测一个文本(完整长文本)平均所需时间:56.18s fine-tune模型(调节的参数与pytorch_bert一致),其在测试集上准确率:98.90%
【ERNIE】 推理时模型占用内存:1072M(峰值) 推理时预测一个文本(前128+后382字符)平均所需时间:2.227s 推理时预测一个文本(前510 * 1长度+尾部数据)平均所需时间:3.934s 推理时预测一个文本(前510 * 2长度+尾部数据)平均所需时间:6.001s 推理时预测一个文本(前510 * 5长度+尾部数据)平均所需时间:9.835s 推理时预测一个文本(完整长文本)平均所需时间: fine-tune模型,其在测试集上准确率:98.74%