热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

移动端和边缘端的深度学习概述

某些应用场景要求低延时,高安全性及考虑长期成本效益,此时将模型托管在云端就不再是最好的解决方案。边缘计算相比云计算的优势带宽和时延显然调用云端服务会有一个信息往返的时间花费

某些应用场景要求低延时,高安全性及考虑长期成本效益,此时将模型托管在云端就不再是最好的解决方案。

边缘计算相比云计算的优势

  1. 带宽和时延

显然调用云端服务会有一个信息往返的时间花费。
比如自动驾驶,大的延时可能会引发事故,因为一个突然出现的目标可能仅仅在几帧的时间内。
因此英伟达提供定制化的板载计算设备来进行边缘端的推理。

当多个设备连接在同一个网络中时,由于天然的信道竞争导致有效带宽降低。边缘计算则可显著减少此问题。

eg:

  • 视频会议需要2M带宽
  • 两路视频监控需要5-25M带宽
  • 360°全景视频需要10-50带宽
    以多路设备的视频数据处理为例,云计算需要上传到云端推理计算,带宽需要很大,边缘计算优势显著。
  1. 安全性及去中心化

云服务器易受黑客攻击,且数据上传云端有安全性问题。
多个边缘设备的部署相比云服务,拥有去中心化的优势,更难被攻击。

  1. 特定作业情况(定制化)

如工业场景需要多个不同模型的情况,如果采用云计算则需要托管多个模型,会带来费用的明显增加。

  1. 边缘端并行训练

多边缘端的数据可以在线学习并行训练

  1. 冗余性

边缘部署 保证了功能的健壮性。一个节点(边缘设备)故障不影响其他设备

  1. 长远的经济效益

边缘端更小,尤其可批量定制的边缘设备。

边缘设备的特点

内存及算力不足

DL网络的显著特点:大模型,高算力需求

解决方案

推理方面

  1. 关闭训练时产生的Graph
    深度学习框架如TF,在训练时会大量建图来加速训练,但是对于推理却无用,推理时关闭图可以减小模型。

  2. 剪枝和截断

  • 训练后的模型中有大部分没用的神经元(接近0),通过对这类节点的剪枝可以节省内存。 谷歌的Learn2Compress发现可以在保持97%准确率的前提下,将模型压缩一倍。
  • 大部分框架采用32位精度训练,边缘端进行精度截取比如采用8位就可以压缩4倍空间。
    通常,精度截断如果是完全随机的,误差很有可能互相抵消。但是,零广泛用于填充、辍学和 ReLU。在低精度浮点格式中无法精确表示零,因此可能会在性能中引入整体偏差。
  1. 模型蒸馏

本质上就是用训练出的大模型(真值)去训练出小模型(预测模型)
Learn2Compress也用到了这个手段做模型压缩,结合迁移学习,可以在不损失太多精度的情况下压缩模型

  1. 采用优化的芯片设计
  • Vision Processing Units (VPUs):例如google的kits及intel的Neural Compute Stick,号称低功耗 高性能
  • FPGA: 比GPU功耗低,可接受<32位的精度,但是性能比GPU差
  • ASIC:对于大规模部署来说,最好的解决方案---特定场景定制的专用芯片(CPU是通用计算芯片)一般是AI芯片,如阿里的含光800,地平线征程系列。设计类似Nvidia V100微处理器架构来加速矩阵乘法。----高研发时间成本
  1. 权值共享

首先对权重量化,然后采用2位的索引查询一个共享数据来降低模型占用

  1. 编码
    在模型剪枝和量化后,还可以再用霍夫曼编码以低bit位的方式表示权重中的高频权值,因为霍夫曼编码后的字符串占用比普通字符串小。
    现在有一些有损压缩和无损压缩的深度压缩研究,但是编码增加了额外的解码时间。

  2. 实现了上述方法的推理工具
    Tensor-RT:

训练方面

  1. 神经网络架构设计

高效的参数网络:

  • 深度卷积:如1*1卷积减少输入下层的通道数
  • NxN 卷积因子化为 Nx1 和 1xN 卷积的组合。节省大量空间,同时提高计算速度
    如MobileNet, SqueezeNet

Neural Architecture Search-----神经网络架构搜索

如NAS-Net
搜索目标:高精确率,高速,低内存占用

如Google的AUto-ML项目:

  1. 保存部分 梯度检查节点---checkpoint
    通常训练时,前向传播过程中会保存全部值,占用大量内存;可以考虑不保存正向传播的中间值,只在反向传播时根据需要重计算。

缺点:随着网络加深及复杂化,需要的再计算算力剧增

折中的方法:保存部分中间值---checkpoints,大大减小网络的内存占用。

  1. 空间换时间
    典型的如DenseNet中的拼接及BN的高效实现。GPU卷积的高效计算 需要数据的连续存储,因此:
  • 对于不是时间密集型操作的拼接操作及BN操作,可以用再计算来代替直接存储,节省内存
  • 采用索引共享内存空间的形式连续存储


推荐阅读
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • Opencv提供了几种分类器,例程里通过字符识别来进行说明的1、支持向量机(SVM):给定训练样本,支持向量机建立一个超平面作为决策平面,使得正例和反例之间的隔离边缘被最大化。函数原型:训练原型cv ... [详细]
  • 本人学习笔记,知识点均摘自于网络,用于学习和交流(如未注明出处,请提醒,将及时更正,谢谢)OS:我学习是为了上 ... [详细]
  • 人工智能推理能力与假设检验
    最近Google的Deepmind开始研究如何让AI做数学题。这个问题的提出非常有启发,逻辑推理,发现新知识的能力应该是强人工智能出现自我意识之前最需要发展的能力。深度学习目前可以 ... [详细]
  • 2017亚马逊人工智能奖公布:他们的AI有什么不同?
    事实上,在我们周围,“人工智能”让一切都变得更“智能”极具讽刺意味。随着人类与机器智能之间的界限变得模糊,我们的世界正在变成一个机器 ... [详细]
author-avatar
暧gx祢生
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有