奇技 · 指南
Bert模型网络结构较深,参数量庞大,将Bert模型部署成在线服务在实时性和吞吐上面临巨大挑战。本文主要介绍360搜索将Bert模型部署成在线服务的过程中碰到的一些困难以及做的工程方面的优化。
1
背景
在360搜索场景下对在线Bert服务的延迟和吞吐有极高的要求。经过前期的调研探索和试验,将Bert模型做成在线服务主要有以下3个挑战:
模型参数量巨大。12层Bert模型有超过1亿参数量,相比于其他语义模型计算量高很多。
推理时间长。经验证,12层Bert模型在CPU上延迟约为200ms,在GPU上未经优化的推理延迟为80ms,在搜索这个场景下如此性能是不可接受的。
推理计算量大,需要的资源多。经过压测验证,单个机房需要几百张GPU卡才能承接全部的线上流量,投入的成本远高于预期收益。
基于以上几个困难点,我们前期调研了TF-Serving、OnnxRuntime、TorchJIT、TensorRT等几个热门的推理框架,在比较了是否支持量化、是否需要预处理、是否支持变长、稳定性和性能以及社区活跃度等几个维度后,最终选用了Nvidia开源的TensorRT。确定了框架选型之后,我们针对Bert在线服务做了几个不同层面的优化。
2
Bert在线服务优化
框架层面提供的优化
TensorRT推理框架本身提供的优化有:
层间融合和张量融合。本质是通过减少核函数调用次数来提高GPU利用率。
Kernel自动调优。TensorRT会在目标GPU卡上选择最优的层和并行优化算法,保证最优性能。
多流执行。通过共享权重的方式

本文介绍了360搜索在将Bert模型部署为在线服务时面临的挑战,如模型参数量大、推理时间长、资源需求高等。通过选用TensorRT框架,进行了包括知识蒸馏、FP16量化、流水优化、缓存优化等一系列工程优化,提升了在线服务的性能。6层Bert模型在优化后实现了性能的显著提升,同时在GPU利用率、显存占用和延迟方面取得良好平衡。未来计划推进Bert服务的K8S化部署和平台集成。
最低0.47元/天 解锁文章
1138

被折叠的 条评论
为什么被折叠?



