背景介绍
BERT推理加速的理论可以参考之前的博客《从零开始学习自然语言处理(NLP)》-BERT模型推理加速总结(5)。这里主要介绍基于Nvidia开源的Fast Transformer,并结合半精度模型量化加速,进行实践,并解决了TensorFlow Estimator预测阶段重复加载模型的问题。主要包括:
环境搭建
Pre-train模型获取
结合自身业务Fine-tuning
模型单精度(FP32)转半精度(FP16)
Fast-transformer编译
Fast-transformer集成
TensorFlow estimator线上推理
下面逐个进行介绍。
环境搭建
BERT的Fine-tuning需要GPU环境(CPU训练估计要慢到天长地久),而GPU的环境配置又相对麻烦。除了显卡驱动外,还需要对应版本的安装CUDA、CUDNN、Python、TensorFlow-GPU。版本不匹配很容易出问题。简单的环境搭建,推荐直接使用Nvidia的NGC镜像。针对BERTFine-tuning(Pre-train同样适用),本文中使用Docker镜像:nvcr.io/nvidia/tensorflow:19.10-py3(镜像说明:https://ngc.nvidia.com/catalog/containers/nvidia:tensorflow)。
镜像主要包括:
Python 3.6.8
Tensorflow-estimator 1.14.0
Tensorflow-gpu 1.14.0+nv
TensorRT 6.0.1(Fast transformer基于TensorRT实现,需要依赖TensorRT)
Pre