深度学习模型部署概述

关键

  • 深度学习模型部署的方式取决于应用需求

常见部署需求与做法

  • 【1】简单的demo演示,只要看看效果的
    —》选择深度学习框架 caffe、tf、pytorch、keras等,采用Python跑一跑,可以写个GUI,或者使用CPython封装成c++接口,使用c++工程调用。
  • 【2】 放到服务器上去跑,但不要求吞吐、不要求时延
    —》选择深度学习框架 caffe、tf、pytorch、keras等,按照官方的部署教程,用C++进行部署;例如 pytorch 模型用工具导到 libtorch 下跑;这种方法还是没有脱离深度学习框架,有很多为训练方便保留的特性没有去除,性能并不是最优的。另外,这些框架要么CPU,要么NVIDIA GPU,对硬件平台有要求,不灵活;还有,框架是真心大,占内存(tf还占显存),占磁盘。
  • 【3】放到服务器上去跑,要求吞吐和时延(重点是吞吐)
    —》这种应用在互联网企业居多,一般是互联网产品的后端AI计算,例如人脸验证、语音服务、应用了深度学习的智能推荐等。由于一般是大规模部署,这时不仅仅要考虑吞吐和时延,还要考虑功耗和成本。硬件方面:使用推理专用的NVIDIA P4、寒武纪MLU100等。这些推理卡比桌面级显卡功耗低,单位能耗下计算效率更高,且硬件结构更适合高吞吐量的情况。软件方面:一般都不会直接使用深度学习框架。对于NVIDIA的产品,一般都会使用TensorRT来加速。TensorRT用了CUDA、CUDNN,而且还有图优化、fp16、int8量化等。
  • 【4】放在NVIDIA嵌入式平台上跑,注重时延
    —》使用英伟达嵌入式计算平台,例如,PX2、TX2、Xavier
  • 【5】放在其他嵌入式平台上跑,注重时延
    —》硬件方面:要根据模型计算量和时延要求,结合成本和功耗要求,选合适的嵌入式平台。比如模型计算量大的,可能就要选择带GPU的SoC,用opencl/opengl/vulkan编程;也可以试试NPU,不过现在NPU支持的算子不多,一些自定义Op多的网络可能部署不上去;对于小模型,或者帧率要求不高的,可能用CPU就够了,不过一般需要做点优化(剪枝、量化、SIMD、汇编、Winograd等)顺带一提,在手机上部署深度学习模型也可以归在此列,只不过硬件没得选,用户用什么手机你就得部署在什么手机,为老旧手机部署才是最为头疼的。上述部署和优化的软件工作,在一些移动端开源框架都有人做,一般拿来改改就可以用了,性能都不错。
  • 【6】其他需求
    —》比如开源移动端框架速度不够——只能自己写一套。比如像商汤、旷世、Momenta都有自己的前传框架,性能应该都比开源框架好。只不过自己写一套比较费时费力,且如果没有经验的话,很有可能费半天劲写不好。

参考

  • https://www.zhihu.com/question/329372124/answer/743251971
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值