Bert语义在360搜索中的探索实践-工程优化

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

奇技 · 指南

Bert模型网络结构较深,参数量庞大,将Bert模型部署成在线服务在实时性和吞吐上面临巨大挑战。本文主要介绍360搜索将Bert模型部署成在线服务的过程中碰到的一些困难以及做的工程方面的优化。

1

背景

在360搜索场景下对在线Bert服务的延迟和吞吐有极高的要求。经过前期的调研探索和试验,将Bert模型做成在线服务主要有以下3个挑战:

  1. 模型参数量巨大。12层Bert模型有超过1亿参数量,相比于其他语义模型计算量高很多。

  2. 推理时间长。经验证,12层Bert模型在CPU上延迟约为200ms,在GPU上未经优化的推理延迟为80ms,在搜索这个场景下如此性能是不可接受的。

  3. 推理计算量大,需要的资源多。经过压测验证,单个机房需要几百张GPU卡才能承接全部的线上流量,投入的成本远高于预期收益。

基于以上几个困难点,我们前期调研了TF-Serving、OnnxRuntime、TorchJIT、TensorRT等几个热门的推理框架,在比较了是否支持量化、是否需要预处理、是否支持变长、稳定性和性能以及社区活跃度等几个维度后,最终选用了Nvidia开源的TensorRT。确定了框架选型之后,我们针对Bert在线服务做了几个不同层面的优化。

2

Bert在线服务优化

框架层面提供的优化

TensorRT推理框架本身提供的优化有:

  1. 层间融合和张量融合。本质是通过减少核函数调用次数来提高GPU利用率。

  2. Kernel自动调优。TensorRT会在目标GPU卡上选择最优的层和并行优化算法,保证最优性能。

  3. 多流执行。通过共享权重的方式并行处理多条任务流,优化显存。

  4. 动态申请Tensor显存。当Tensor使用时再真正申请显存,显著提高显存利用率。

  5. 模型量化。在保证精度的情况下大幅提升模型的吞吐,同时降低推理延迟。

知识蒸馏

12层Bert模型的线上延迟不能满足性能要求,我们将其蒸馏至6层的轻量级小模型。做完知识蒸馏后,在降低计算量的同时也保

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值