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

嵌入式机器学习处理器的技术挑战和机会

2016年12月,VivienneSze,Yu-HsinChen等(Eyeriss的作者)在arXiv上发表的文章“HardwareforMachineLearning:Ch

2016年12月,Vivienne Sze,Yu-Hsin Chen等(Eyeriss的作者)在arXiv上发表的文章“Hardware for Machine Learning: Challenges and Opportunities”,是一篇比较好的综述性文章。这里我想结合这篇文章[8]和这次ISSCC2017论文[1-7],谈谈我理解的“挑战”和“机会”。

首先,这里主要讨论嵌入式的机器学习处理器(主要是做inference)。实际上在Cloud端做training/inference也有专用处理器的相关研究和实现,不过这个是另外一个话题了。

衡量一个嵌入式机器学习系统(包括软硬件)的几个关键指标包括:精确度能耗吞吐量/延迟性以及成本。我们主要讨论硬件部分。不过硬件的设计实际和算法,软件息息相关,好的硬件设计能让整个系统达到最合理的平衡状态。

除此之外,可编程性(灵活性)对于机器学习处理器(或者加速器)也非常重要。当然,灵活性是相对的,嵌入式的机器学习处理器的灵活性介于GPU和硬件加速器(基本没有可编程性)之间。具体的选择则是设计时考虑的trade-off。比如,有的机器学习处理器可以同时支持CNN和RNN,有的则只支持其中的一种,其实现会有很大差别。

 

这些指标里面,精确度,吞吐量/延迟性,可编程性可以认为是性能指标;能耗和成本可以统称为成本指标。设计挑战就是性能指标和成本指标的矛盾。一般来说,没有免费的午餐,控制成本必定牺牲性能。当然,还有一种情况,就是技术创新或者进步,基本不用牺牲一方,甚至两者能同时得到更优的结果。

在云端,性能优化是主旋律;而在嵌入应用中,最重要的是在尽量少牺牲性能的情况下来满足系统的成本要求。下面就从算法和硬件联合优化,架构(粗粒度),微结构(细粒度),电路和其它这几个方面来介绍一下技术上的机会或者设计方法。

1. 算法和硬件的联合优化

我们做基于SoC芯片的软硬件系统的同学应该都很清楚,对于一个优化目标(比如能耗),在应用/算法/软件层面所做的优化往往比硬件架构和电路层面所做的优化要有效的多。比如我们在做通信基带的时候,如果一个算法经过优化可以降低一些对精度的要求,把量化比特减少哪怕是1个比特,都会对相应的硬件处理通路(乘法器,加法器,存储等等)有很大的影响。在机器学习处理器的优化方面也是一样的道理。做硬件优化首先应该考虑在算法(应用)层面是否可以减少计算量、数据传输和存储要求方面

针对机器学习,在算法层面的机会包括:

a)降低精度:

使用定点数,减少位宽。现在硬件8bit位宽已经比较常见。“With more significant changes to the network, it is possible to reduce bitwidth down to 1-bit for either weights [56] or both weights and activations [57, 58] at the cost of reduced accuracy. The impact of 1-bit weights on hardware is explored in [59].”[8]

b) 发掘稀疏性: 

算法层面通过剪枝(pruning)可以减少MAC和权重的数量(不一定能优化能耗);基于一个能量模型(energy model)在做剪枝,可以直接最小化能量消耗。最近还看到一个“shrink”技术(Pilot ai lab),不过没看到细节,不好评价。

而在硬件设计中,这次ISSCC论文基本上都使用了mask技术,当数据通道或者memory的输入(也有的放在输出的位置)为全零(或者是极小值)的时候直接不做处理。

c) 压缩:

算法层面的剪枝实际上是对神经网络的“压缩”。除此之外,在硬件上也可以利用了多种形式的轻量级压缩来减少数据传输。无损压缩直接减少流入和流出芯片的数据传输。简单游程长度编码(simple run-length coding)减少了多达 1.9 倍的带宽。向量量化(vector quantization)等有损压缩也可被用于特征向量和权重。一般而言,硬件的压缩/解压的代价在几千 kgates 的量级上,具有最小的能量开销。

此外,这次ISSCC会议中,KAIST提的人脸识别处理器[6]里用的“a separable filter approximation for convolutional layers (SF-CONV) and a transpose-read SRAM (T-SRAM) for low-power CNN processing”,是一个算法和硬件联合优化的很好的例子。它用两级1D卷积近似了CNN的2D卷积(算法层面),然后设计了可实现vertical读取(列读取)的T-SRAM来支持这个算法。

 

2. 架构(粗粒度)

从现在机器学习处理器设计的趋势来看。大家对CNN的加速主要采用2D MAC 阵列(Convolution)+ 1D SIMD或者scalor(ReLU,pool,ALU)。研究和设计的重点是怎么实现最高效的给MAC阵列提供数据(包括缓存数据)。这个部分“Eyeriss”处理器[9]和这次会议上的“ENVISION”处理器[5]讨论的比较多,主要也是挖掘DNN内在的并行性和数据重用性。这个问题我后面会专题讨论一下。

 

3. 微结构层面

这部分主要是数据通道的优化,特别是MAC(MAC操作是DNN中用的最多的操作)的优化。这次ISSCC中用到的技术中比较有启发性的有下面一些:

a)ENVISION处理器中用的Dynamic-Voltage-Accuracy-Frequency ScalingDVAFS MAC。[5]

b)KAIST的DNPU用的“Layer-by-layer dynamic fixed-point with on-line adaptation and optimized LUT-based multiplier”,动态定点数。[2]

c) ST的论文中实现的动态数据通道配置(通过灵活的DMA设计),虽然不算创新,也是个很有参考价值的实现方式。[1]

d)除了对MAC的优化,这次ISSCC论文[7]对访存的优化也做了讨论。

4. 电路层面

ISSCC论文有几篇都提到了电路层面的优化。最有意思的应该是哈佛大学论文[3],利用

Razor timing violation detection技术结合DNN内在的容错性,降低关键路径时序要求,从而降低工作电压。ENVISION设计中,在考虑运行精度的前提下调整Body-bias来平衡动态和静态功耗[5];另外,论文[7]中有对memory电路的优化。

 

5. 其它

a)混合信号: [6]中“analog-digital hybrid Haarlike face detector (HHFD) integrated on the CIS for low-power face detection (FD)”。当然这个还不算脑洞大的,这个领域应该有很多想象空间。如果能通过引入混合信号处理来优化MAC和访存,可能会对整体性能有很大帮助。[8]中有一些具体的例子。

b)计算嵌入传感器: 这个比较容易理解,把计算尽量靠近传感器,可以减少很多不必要的数据传输。这应该也是边缘计算发展的趋势。

c)计算嵌入memory: 个人也比较看好这个方向。第一,这也是数据和计算尽量靠近的一种优化;第二,神经网络的发展方向是对记忆的要求越来越高,在存储上做文章也是适应这个趋势。

d)新的存储技术: 由于机器学习的存储要求很大,任何存储方面的新技术,比如embedded DRAM (eDRAM) ,Hyper Memory Cube (HMC)等等,都会很有帮助。


轻轻一扫  欢迎关注~

640?wx_fmt=jpeg

0?wx_fmt=gif



推荐阅读
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • 本文介绍了响应式页面的概念和实现方式,包括针对不同终端制作特定页面和制作一个页面适应不同终端的显示。分析了两种实现方式的优缺点,提出了选择方案的建议。同时,对于响应式页面的需求和背景进行了讨论,解释了为什么需要响应式页面。 ... [详细]
  • 统一知识图谱学习和建议:更好地理解用户偏好
    本文介绍了一种将知识图谱纳入推荐系统的方法,以提高推荐的准确性和可解释性。与现有方法不同的是,本方法考虑了知识图谱的不完整性,并在知识图谱中传输关系信息,以更好地理解用户的偏好。通过大量实验,验证了本方法在推荐任务和知识图谱完成任务上的优势。 ... [详细]
  • 本文介绍了在Pygame中使用矩形对表面进行涂色的方法。通过查阅Pygame文档中的blit函数,可以了解到如何将一个表面的特定部分复制到另一个表面的指定位置上。具体的解决方法和参数说明在文中都有详细说明。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • Windows7 64位系统安装PLSQL Developer的步骤和注意事项
    本文介绍了在Windows7 64位系统上安装PLSQL Developer的步骤和注意事项。首先下载并安装PLSQL Developer,注意不要安装在默认目录下。然后下载Windows 32位的oracle instant client,并解压到指定路径。最后,按照自己的喜好对解压后的文件进行命名和压缩。 ... [详细]
  • This article discusses the efficiency of using char str[] and char *str and whether there is any reason to prefer one over the other. It explains the difference between the two and provides an example to illustrate their usage. ... [详细]
author-avatar
mobiledu2502899797
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有