【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱: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、系统设计多个方面,这个时候你对数据的并行运算就会有更进一步的认识。

深度学习实践与部署(开篇)相关推荐

  1. 深度学习实践:计算机视觉_深度学习与传统计算机视觉技术:您应该选择哪个?

    深度学习实践:计算机视觉 计算机视觉 (Computer Vision) Deep Learning(DL) is undeniably one of the most popular tools u ...

  2. 【Pytorch深度学习实践】B站up刘二大人之 Gradient Descend-代码理解与实现(2/9)

    开篇几句题外话: 以往的代码,都是随便看看就过去了,没有这样较真过,以至于看了很久的深度学习和Python,都没有能够形成编程能力: 这次算是废寝忘食的深入进去了,踏实地把每一个代码都理解透,包括其中 ...

  3. TensorRT深度学习训练和部署图示

    TensorRT深度学习训练和部署 NVIDIA TensorRT是用于生产环境的高性能深度学习推理库.功率效率和响应速度是部署的深度学习应用程序的两个关键指标,因为它们直接影响用户体验和所提供服务的 ...

  4. CVer入门必备:计算机视觉的深度学习实践

    <计算机视觉的深度学习实践>  原价     ¥ 899.00 现超 300人报名 已至底价     ¥ 399.00  >>  点击文末阅读原文参团  << 参团 ...

  5. 深度学习端上部署工具

    深度学习端上部署工具 模型 公司 通用性别 说明 tf-lite tensorflow,开源 通用性最强,与 tensorflow 适配完美,不过性能一般 支持CPU和GPU roadmap 中预计年 ...

  6. PyTorch深度学习实践

    根据学习情况随时更新. 2020.08.14更新完成. 参考课程-刘二大人<PyTorch深度学习实践> 文章目录 (一)课程概述 (二)线性模型 (三)梯度下降算法 (四)反向传播 (五 ...

  7. 实用卷积神经网络 运用python pdf_解析卷积神经网络—深度学习实践手册 中文pdf高清版...

    解析卷积神经网络-深度学习实践手册从实用角度着重解析了深度学习中的一类神经网络模型--卷积神经网络,向读者剖析了卷积神经网络的基本部件与工作机理,更重要的是系统性的介绍了深度卷积神经网络在实践应用方面 ...

  8. 【PyTorch】深度学习实践之CNN高级篇——实现复杂网络

    本文目录 1. 串行的网络结构 2. GoogLeNet 2.1 结构分析 2.2 代码实现 2.3 结果 3. ResNet 3.1 网络分析 3.2 代码实现 3.3 结果 课后练习1:阅读并实现 ...

  9. 【Pytorch深度学习实践】B站up刘二大人之SoftmaxClassifier-代码理解与实现(8/9)

    这是刘二大人系列课程笔记的倒数第二个博客了,介绍的是多分类器的原理和代码实现,下一个笔记就是basicCNN和advancedCNN了: 写在前面: 这节课的内容,主要是两个部分的修改: 一是数据集: ...

最新文章

  1. java提高篇之数组(1):认识JAVA数组
  2. windows10 下Python3.5.4安装
  3. Android存储访问及目录
  4. java哈希_Java Hashtable 类
  5. java 监听本地端口_JAVA本地监听与远程端口扫描
  6. iOS:给图片置灰色
  7. 【Anychat】理解POCO
  8. 常见爬虫/BOT对抗技术介绍(一)
  9. OpenCR介绍以及自制OpenCR
  10. 基于MCS-51单片机的数字时钟设计
  11. matlab logistic拟合,用matlab拟合Logistic,4参数logistic
  12. python计算对数收益率_对数收益率怎么转成年化收益率?怎么计算夏普比率?
  13. 重要的xcel文件e报表丢了如何恢复呢
  14. 【Google面试题】有四个线程1、2、3、4同步写入数据…C++11实现
  15. 手游推广,经营一家游戏公司需要多少人?
  16. 软件定义网络基础(SDN④)
  17. 都说岁月不饶人,我们又何曾饶过岁月
  18. 囤内存条,比买基金、白酒还赚钱
  19. 第三方支付公司之快钱
  20. 关于虚拟机中linux系统时间的问题

热门文章

  1. Centos7 连接Serial串口记录
  2. 移动CRM的客户价值细分
  3. maven jdk 8 Error while generating Javadoc 或者 Error while creating archive
  4. 调用系统时间进行操作
  5. list删除重复元素
  6. 编码原则:如何减少缩进层次
  7. .net链接带密码的ACCESS数据库
  8. shell输入输出重定向
  9. HTTP 浏览器发送给服务器的数据编码问题
  10. MVC中的View2(转)