当前位置:   article > 正文

深度学习实践与部署(开篇)_如果把深度学习部署到开发板上

如果把深度学习部署到开发板上

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

 

    大家都知道现在深度学习很火,不管是线上还是线下,大家都对深度学习充满了期待。一般来说,深度学习会包括这样几个过程,即数据准备、数据标记、训练、部署。如果说数据的准备和标记还是可控的话,那么训练和部署这个里面需要花费的时间就非常可观了。首先,选择什么样的模型,才能匹配业务的需要。另外一个,就是训练好的模型,怎样才能在设备上运行起来,这个就有很多可以说道说道了。目前,关于部署这块主要有这么一些方法,

 

1、远程服务器模式

    这种模式多见于大的互联网公司,比如bat。用户需要做的就是上传自己的数据就可以了。当然,这种api初期的若干次可能是免费的,但是后期其实价格并不便宜。

 

2、本地pc模式

    大家都知道,训练模型是非常耗时间的,运行模型也是很耗时间的。对于工厂来说,如果训练的模型,跑的速度很慢,那么实际意义不大。所以,很多产线上面,会采取工业相机+pc服务器的形式。pc上可以运行windows server系统,选用好一点的显卡,一般情况下问题不大,唯一需要考虑的就是成本和稳定性问题。

 

3、arm+dsp模式

    现在ti的这种芯片,主要用在汽车上面,常见的j6、j7都是可以的,所以使用arm、dsp并发的形式其实也是可以的,这个里面最好使用ti提供的cnn库,这样比较好一点。

 

4、arm+gpu+cuda模式

    nvidia推出来的jetson系列,目前已经在各大平台都可以买到。抛开gpu来说,jetson系列的arm cpu也是性能很强悍的。这个里面成本是很重要的一个环节,另外产品本身还没有经历过重要的工业实践,这个也需要注意。

 

5、arm+fpga模式

    只要涉及到fpga,一般都是定制的领域。fpga的好处就是成本可接受、性能好,数据处理可以完美地利用内存传输的时间,此外还有数据并发处理技术、流水线处理技术、缓存技术,有了这些技术的加持,即使fpga频率不算太高,性能其实也是非常可观的。但是,目前市场上面合适的fpga算法工程师很少,即使hls这种c转verilog技术,掌握的人也不多,当然成本也很重要,种种因素制约了fpga芯片在深度学习领域的发展和部署。

 

6、arm+npu模式

    目前市场上面能够买到的带npu的soc不多,rk3399pro算一个。npu,虽然名字高大上,本身来说,还是相当于将cnn硬件化,将卷积计算、全连接、激励函数这些内容用硬件来实现,当然这里面还有一部分图像与处理的工作,也就是isp的内容。每个厂家都是宣称自己的npu可以实现多少个tops,其实还是在往里面堆8位int的alu,意义多大,很难说。

 

7、arm+普通gpu+opencl模式

    除了nvidia的gpu,大部分芯片厂家的soc还支持opencl的标准,这里面主要是arm自己的gpu,好不好用难说。比如很多人买rk3399 pro的板子,上面就支持opencl,有的人说好用,有的人说不好用。大家可以找一款带arm gpu的板子尝试一下,假设芯片手册上面明确表示支持opencl,那么可以尝试一下,影响效果的因素很多,比如模型、内存、gpu的使用,目前来说这种方法使用的比较少,但是也值得一试。虽然nvidia的gpu已经成为事实上的标准,但是如果能用opencl对已有的算法进行加速,未尝不是一个好的选择。

 

8、纯arm运行模式

    现在带arm a72、a73的soc也开始多了起来,比如树莓派4b。但是我个人还是不太建议用arm运行深度学习,嵌入式的算力再强,也不会达到pc的算力,所以这个里面还是要尽量使用soc上面所有ip的算力核,这样才能达到比较好的使用效果和体验。当然,如果仅仅是学习,比如将yolo4、yolo5 port到板子上,那其实无可厚非,但做成产品就是另外一回事了。

 

    总结,以上这几种模式,基本上是目前能够想到的所有深度学习部署方法,大家可以根据自己的需求灵活处理。总的来说,根据自己的能力、成本和厂家的support程度选择一个适合自己的场景。

 

ps:

    检查发现,这篇文章和之前的这一篇(https://feixiaoxing.blog.csdn.net/article/details/104965594)有部分重合,比如之前这篇文章谈到了加速棒,而这篇文章谈到了opencl,算是一部分补充吧。因此建议大家可以根据自己的情况,选择一个加速的方向即可,比如cuda就非常不错。因为他不光可以用在图像上,还可以使用在很多其他算法的加速上面。

    当然如果精通了一种方法,比如fpga,那么你就知道,数据加速不完全是在并发数据执行上面(比如矩阵计算),还体现在数据边收边处理、流水线、dma、cache&uncache、系统设计多个方面,这个时候你对数据的并行运算就会有更进一步的认识。

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/330649
推荐阅读
相关标签
  

闽ICP备14008679号