王中风教授:如何满足不同应用场景下深度神经网络模型算力和能效需求

简介: 基于神经网络的深度学习算法已经在计算机视觉、自然语言处理等领域大放异彩。但是,诸如 VGG、ResNet 和 Xception 等深度模型在取得优越性能的同时往往伴随着极高的存储空间需求和计算复杂度,而现有的通用计算平台很难实现高能效的神经网络计算。

基于神经网络的深度学习算法已经在计算机视觉、自然语言处理等领域大放异彩。然而,诸如 VGG、ResNet 和 Xception 等深度模型在取得优越性能的同时往往伴随着极高的存储空间需求和计算复杂度,而现有的通用计算平台(如CPU和GPU等)很难实现高能效的神经网络计算。为了满足深度神经网络在不同的应用场景(如云端和终端)下的算力和能效需求,探讨如何在算法层面运用量化、剪枝等方法进行模型压缩,以及设计适应于不同应用场景的高能效神经网络计算芯片/架构已经成为学术界和工业界近阶段的一个研究热点。

目前,基于神经网络的深度学习算法已经在计算机视觉、自然语言处理等领域取得了广泛的应用。这其中,一方面要归功于算法研究者的坚持使算法得以取得诸多突破,另一方面也是海量数据的出现和硬件运算能力的提升为算法的有效训练带来了可能。与此同时,深度学习算法的成功也反过来推动了硬件的发展。目前,硬件对深度学习算法的支持主要包括两个方面,一个是训练(Training)阶段,需要非常高的算力和大容量存储来支持大规模深度神经网络模型的训练;另一个是推理(Inference)阶段,需要将训练好的模型部署到实际的应用场景下,包括在需要高性能、高吞吐率的数据中心端提供云服务,以及在需要低功耗的嵌入式/移动终端相关的应用。

目前,使用 GPU 来进行神经网络的训练几乎已经成为了研究深度学习算法的标配。但是,在进行实际部署时,由于深度神经网络模型往往伴随着极高的存储空间需求和计算复杂度,包括GPU、CPU在内的传统通用计算平台在大多数情况下并不能满足实际模型部署对功耗和性能(或者能效比)的综合需求,这也使得一些具有更高综合能效比的硬件,如 FPGA 和面向 AI 应用的 ASIC(包括可重构ASIC)芯片逐渐获得关注。为了满足深度神经网络模型在不同的应用场景下对算力和能效的需求,一方面,可以利用现有深度神经网络模型存在内在冗余这一特性,在几乎不损失模型精度的前提下从算法层面对模型进行裁剪和优化;另一方面,也可以设计针对深度神经网络模型的计算模式进行优化的高能效硬件架构,用于加速模型的计算过程。 当然,也可以同时结合这两个方面,做算法和硬件的协同设计和优化(Joint Algorithm And Architecture, JAAA, design optimization)。

模型裁剪与优化

目前该领域的方法可以大概分为两类:

1.针对某些精度较高但较复杂的网络模型,通过剪枝、量化、低秩分解等措施减少模型的参数和计算量。这类方法往往能大大减少模型的复杂度,实现对参数或者计算量很高的压缩比,但其中不少方法都需要特定的硬件支持才能真正发挥其效用。此外,这里面提到的某些方法也可以用于减少模型训练过程中参数更新带来的硬件开销,加速训练过程;

2. 考虑直接设计更为高效(较少参数+低计算复杂度)的神经网络模型,同时模型的精度可以尽量接近复杂的网络模型,或是通过一些方法将复杂模型学习得到的知识迁移到小的模型上面,最终可以直接部署这些较为精简的模型。

AI 芯片/加速器

在针对 AI 的高能效硬件架构设计方面,相关的工作大体可以分为以下几个方面:

1. 能够支持主流深度学习算法常见操作的专用处理器架构(ASIP),以及专用的深度学习指令集,如中科院计算所的 DianNao系列处理器和Cambricon指令集;

2.针对深度神经网络的数据复用方式、访存的优化:探索适合于神经网络的计算模型,在计算时通过合理的资源调度实现对神经网络计算过程高效的加速;

3. 近似计算/近似存储:利用神经网络对噪声和误差具有一定的容错性,在计算/存储过程中通过一些具有较低硬件开销的近似方法来提高网络的计算能效;

4. 新型存储结构,如通过非易失性电阻式存储器(Non-volatile Resistive Memories),实现计算和存储一体化(process-in-memory),直接在存储里面实现计算的功能;

5.软硬件协同优化:在前面模型优化方法的基础上,进一步设计相应的硬件架构,使得诸如剪枝、量化等模型压缩方法的效果可以被充分的利用;

在这波 AI 浪潮中,国内也有不少高校和研究机构从事相关的研究,并在国际上取得了可观的影响力。相应技术的落地也催生了不少 AI 芯片/加速器的初创公司,包括寒武纪科技、地平线机器人、深鉴科技等。作者的团队(南京大学 ICAIS 实验室)也在这方面取得了一些突出成果,包括:

基于有限冲击响应算法的高效可配置快速卷积单元

  • 基于并行快速有限冲击响应算法(FFA)对卷积计算进行算法强度缩减,理论推导了3并行、5并行和7并行等N-并行的快速卷积算法。设计了能高效完成3×3和5×5卷积计算的快速卷积单元(FCU)。进一步地,针对目前主流的CNN卷积核大小,设计了可以高效实现各种常见卷积操作的可配置卷积单元,并在硬件利用率、功耗和可配置性之间达到了最优的平衡。所设计的硬件结构可以配置实现2x2到12x12所有尺寸的卷积操作。

等间隔/K平均聚类非均匀定点量化方法

  • 提出了等间隔非均匀定点量化(Equal Distance Intra-Layer Non-Uniform Quantization)和K平均聚类非均匀定点量化(K-means Cluster Intra-Layer Non-Uniform Quantization)两种量化方法,可以大大降低卷积神经网络中activation的存储需求。相比于已有的针对activation的量化方法,可以在不损失精度的情况下提高压缩率2倍以上。

深度卷积神经网络高效硬件架构设计与实现

  • 基于上述的FCU和动态计算流程,提出了高效的卷积神经网络处理和存储架构。基于 VGG16的测试结果表明,所提出的层内按行交替存储和层间轮回复用的方式相比于传统按层顺序计算的存储架构可以节省大约14倍的片上存储资源,在同样的平台下资源利用率比同类设计高出2倍以上。

适用于嵌入式系统的高能效二值参数卷积神经网络硬件架构

  • 提出了一种高能效的二值参数卷积神经网络的硬件架构。该架构利用了二值参数网络的鲁棒性等特点,引入了多种近似计算技术。此外,该架构还采用了一种优化的计算流程,最大程度地减少了访问DRAM的次数和带宽需求。该架构在65nm工艺下能够达到约2.08TOp/s/W的能量效率(已考虑片外DRAM访存功耗)。相比于已有的二值网络ASIC实现在能效方面有超过2倍的提升。 

递归神经网络的模型压缩与硬件架构设计

  • 在算法层面,通过在递归神经网络(RNNs)中引入结构化的参数矩阵(如循环矩阵),参数量减少为原来的 25%;进一步结合前向激活函数近似,以及根据 RNN 中不同参数矩阵对量化的敏感程度上的差异,混合使用均匀量化和基于对数域的非均匀参数量化方法,在基本不损失模型预测精度的前提下均取得了超过20倍的参数压缩率,计算复杂度也大大降低。

其它相关研究

此外团队还研究了高能效的能耗-精度可伸缩(Energy-Quality Scalable)的卷积神经网络硬件加速器结构,基于隐私保护(Privacy-Preserving)的深度学习算法及其硬件架构,基于张量分解(Tensor Decomposition)的神经网络的嵌入式硬件架构, 以及递归神经网络的负载均衡(Load-Balance)稀疏化方法等等。上述成果多数已经在IEEE Xplore 在线发表。

结束语

随着学术界和工业界对人工智能技术持续大力的推动,可以肯定的是在未来相当长的时间内,面向应用的基于算法和硬件架构联合优化方面的研究将会得到更加广泛的关注和加速的发展。


原文发布时间为:2017-12-24

本文作者:王中风

本文来自云栖社区合作伙伴新智元,了解相关信息可以关注“AI_era”微信公众号

原文链接:”王中风教授:如何满足不同应用场景下深度神经网络模型算力和能效需求

相关文章
|
24天前
|
机器学习/深度学习 自然语言处理 数据处理
大模型开发:描述长短期记忆网络(LSTM)和它们在序列数据上的应用。
LSTM,一种RNN变体,设计用于解决RNN处理长期依赖的难题。其核心在于门控机制(输入、遗忘、输出门)和长期记忆单元(细胞状态),能有效捕捉序列数据的长期依赖,广泛应用于语言模型、机器翻译等领域。然而,LSTM也存在计算复杂度高、解释性差和数据依赖性强等问题,需要通过优化和增强策略来改进。
|
2月前
|
机器学习/深度学习 计算机视觉 网络架构
【GhostNet】复现CVPR2020| 保证模型轻量化的同时,提升网络的性能表现
【GhostNet】复现CVPR2020| 保证模型轻量化的同时,提升网络的性能表现
40 0
【GhostNet】复现CVPR2020| 保证模型轻量化的同时,提升网络的性能表现
|
2月前
|
网络协议 安全 前端开发
网络技术基础(2)——网络参考模型
【2月更文挑战第6天】网络基础笔记
|
2月前
|
Java
网络 I/O:单 Selector 多线程(单线程模型)
网络 I/O:单 Selector 多线程(单线程模型)
|
2月前
|
存储 消息中间件 监控
一文搞懂常见的网络I/O模型
一文搞懂常见的网络I/O模型
38 0
|
3月前
|
NoSQL Linux Redis
Redis原理之网络模型笔记
Redis采用单线程模型,这意味着一个Redis服务器在任何时刻都只会处理一个请求。Redis的网络模型涉及到阻塞I/O(Blocking I/O)、非阻塞I/O(Non-blocking I/O)、I/O多路复用(I/O Multiplexing)、信号驱动I/O(Signal-driven I/O)以及异步I/O(Asynchronous I/O)。
|
1天前
|
编解码 网络协议 网络安全
2.H3CNE-网络参考模型
2.H3CNE-网络参考模型
|
30天前
|
机器学习/深度学习 算法框架/工具 Python
如何使用Python的Keras库构建神经网络模型?
如何使用Python的Keras库构建神经网络模型?
8 0
|
30天前
|
机器学习/深度学习 编解码 Unix
超分数据集概述和超分经典网络模型总结
超分数据集概述和超分经典网络模型总结
20 1
|
1月前
|
机器学习/深度学习 PyTorch TensorFlow
python实现深度学习模型(如:卷积神经网络)。
【2月更文挑战第14天】【2月更文挑战第38篇】实现深度学习模型(如:卷积神经网络)。