引言
自从Bert被提出来后,后续的研究者大多基于bert进行改造,提升预训练语言模型性能,从而提高下游任务的性能。比如ERINE、BERT_WWM、MASS、MT-DNN、RoBERT等等。从GLUE榜上我们可以看到,似乎现在的语言模型有越来越大的趋势,虽然我们的训练资源也是从GPU单卡到GPU多卡,到现在TPU,但不是每个公司都这么有钱,特别对个人,有可能就是一块卡,怎么样在资源有限的情况下,玩起来这些高大上的模型了?我们知道bert的base版本12层,参数量接近110M,这样大的模型在线上部署的时候效果是怎么样的?下表是在linux环境下基于GTX 1080运行结果。
环境 | 序列长度 | 请求次数 | 总时间(s) | 平均耗时(ms) |
---|---|---|---|---|
GPU+checkpoint | 128 | 10000 | 135.6 | 13.56 |
GPU+checkpoint | 12 | 1000 | 10.3 | 10.3 |
CPU+checkpoint | 128 | 1000 | 212 | 212 |
CPU+checkpoint | 12 | 1000 | 83 | 83 |
CPU+tfserving | 128 | 1000 | 351 | 351 |