├── A Comprehensive Survey on Hardware-Aware.md ├── EFFICIENT METHODS AND HARDWARE FOR DEEP LEARNING-augmented hangsong's PhD denfense.zip ├── EIE- Efficient Inference Engine on Compressed Deep Neural Network(笔记).zip ├── Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference ├── README.md ├── Speeding up Convolutional Neural Networks with Low Rank Expansions ├── Structed Comperss NN Note.pdf ├── images ├── formula2.png ├── formula3.png ├── formula4.png ├── formula5.png └── readme.md ├── 关于深度神经网络模型压缩与加速方面的调查 ├── 神经网络与有效推理的量化调查研究2023.md └── 神经网络压缩算法与硬件加速相关课程 /A Comprehensive Survey on Hardware-Aware.md: -------------------------------------------------------------------------------- 1 | # A Comprehensive Survey on Hardware-Aware Neural Architecture Search 2 | # 硬件感知神经结构搜索的综述 3 | 4 | ## Abstract(综述) 5 | -- Neural Architecture Search (NAS) methods have been growing in popularity. These techniques have been fundamental to automate and speed up the time consuming and error-prone process of synthesizing novel Deep Learning (DL) architectures. NAS has been extensively studied in the past few years. Arguably their most significant impact has been in image classification and object detection tasks where the state of the art results have been obtained. Despite the significant success achieved to date, applying NAS to real-world problems still poses significant challenges and is not widely practical. In general, the synthesized Convolution Neural Network (CNN) architectures are too complex to be deployed in resource-limited platforms, such as IoT, mobile, and embedded systems. One solution growing in popularity is to use multi-objective optimization algorithms in the NAS search strategy by taking into account execution latency, energy consumption, memory footprint, etc. This kind of NAS, called hardware-aware NAS (HW-NAS), makes searching the most efficient architecture more complicated and opens several questions. In this survey, we provide a detailed review of existing HW-NAS research and categorize them according to four key dimensions: the search space, the search strategy, the acceleration technique, and the hardware cost estimation strategies. We further discuss the challenges and limitations of existing approaches and potential future directions. This is the first survey paper focusing on hardware-aware NAS. We hope it serves as a valuable reference for the various techniques and algorithms discussed and paves the road for future research towards hardware-aware NAS.\ 6 | --神经架构搜索(NAS)方法越来越受欢迎。这些技术对于自动化和加快合成新型深度学习(DL)体系结构耗时且易出错的过程具有重要意义。NAS在过去的几年中得到了广泛的研究。可以说,它们最显著的影响是在图像分类和目标检测任务中,目前已经获得了最先进的结果。尽管迄今为止NAS取得了巨大的成功,但将其应用于现实世界的问题仍然面临着巨大的挑战,而且还没有广泛的实用性。一般来说,合成卷积神经网络(CNN)架构过于复杂,无法部署在资源有限的平台上,如物联网、移动和嵌入式系统。一种日益流行的解决方案是在NAS搜索策略中考虑执行延迟、能源消耗、内存占用等因素,使用多目标优化算法。这种NAS称为硬件感知NAS (HW-NAS),使得搜索最高效的体系结构变得更加复杂,并引发了一些问题。在本调查中,我们详细回顾了现有的HW-NAS研究,并根据四个关键维度将其分类:搜索空间、搜索策略、加速技术和硬件成本估计策略。我们进一步讨论了现有方法的挑战和局限性,以及潜在的未来方向。这是第一篇关注硬件感知NAS的综述论文。我们希望它可以为所讨论的各种技术和算法提供有价值的参考,并为未来的硬件感知NAS的研究铺平道路。 7 | ## I. INTRODUCTION(简述) 8 | --DEEP Learning (DL) systems are revolutionizing technology around us across many domains such as computer vision [1], [2], [3], [4], speech processing [5], [6], [7] and Natural Language Processing (NLP) [8], [9], [10]. These breakthroughs would not have been possible without the avail ability of big data, the tremendous growth in computational power, advances in hardware acceleration, and the recent algorithmic advancements. However, designing accurate neural networks is challenging due to:\ 9 | --深度学习(DEEP Learning, DL)系统正在我们周围的许多领域带来革命性的技术,如计算机视觉[1],[2],[3],[4],语音处理[5],[6],[7]和自然语言处理(NLP)[8],[9],[10]。如果没有大数据、计算能力的巨大增长、硬件加速的进步以及最近算法的进步,这些突破是不可能实现的。然而,设计精确的神经网络具有挑战性,因为:\ 10 | * The variety of data types and tasks that require different 11 | neural architectural designs and optimizations(需要不同神经架构设计和优化的各种数据类型和任务)。 12 | * The vast amount of hardware platforms which makes it difficult to design one globally efficient architecture(大量的硬件平台使得设计一个全球高效的架构变得困难)。 13 | For instance, certain problems require task-specific models, e.g. EfficientNet [11] for image classification and ResNest [12] for semantic segmentation, instance segmentation and object detection. These networks differ on the proper configuration of their architectures and their hyperparameters. The hyperparameters here refer to the pre-defined properties related to the architecture or the training algorithm. 14 | 例如,某些问题需要特定于任务的模型,例如用于图像分类的EffectiveNet [11]和用于语义分割,实例分割和对象检测的ResNest [12]。这些网络在其体系结构和超参数的正确配置上有所不同。此处的超参数是指与体系结构或训练算法相关的预定义属性。\ 15 | In general, the neural network architecture can be formalized as a Directed Acyclic Graph (DAG) where each node corresponds to an operator applied to the set of its parent nodes [13]. Example operators are convolution, pooling, activation, and self-attention. Linking these operators together gives rise to different architectures. A key aspect of designing a well-performing deep neural network is deciding the type and number of nodes and how to compose and link them. Additionally, the architectural hyperparameters (e.g., stride and channel number in a convolution, etc.) and the training hyper parameters (e.g., learning rate, number of epochs, momentum, etc.) are also important contributors to the overall performance. Figure 1 shows an illustration of some architectural choices for the type of convolutional neural network.\ 16 | 通常,神经网络架构可以形式化为有向无环图(DAG),其中每个节点对应于应用于其父节点集的运算符[13]。示例运算符包括卷积、池化、激活和自关注。将这些运算符连接在一起会产生不同的体系结构。设计性能良好的深度神经网络的一个关键方面是确定节点的类型和数量,以及如何组合和链接它们。此外,架构超参数(例如,卷积中的步幅和通道数等)和训练超参数(例如,学习率、纪元数、动量等)也是整体性能的重要贡献者。图 1 显示了卷积神经网络类型的一些架构选择的图示。\ 17 | According to this representation, DL models can contain hundreds of layers and millions or even billions of parameters. These models are either handcrafted by repetitive experimentation or modified from a handful of existing models. These models have also been growing in size and complexity. All of this renders handcrafting deep neural networks a complex task that is time-consuming, error-prone and requires deep ex pertise and mathematical intuitions. Thus, in recent years, it is not surprising that techniques to automatically design efficient architectures, or NAS for ”Neural Architecture Search”, for a given dataset or task, have surged in popularity.\ 18 | 根据这种表示,DL模型可以包含数百个层和数百万甚至数十亿个参数。这些模型要么是通过重复实验手工制作的,要么是从少数现有模型中修改而来的。这些模型的规模和复杂性也在不断增长。这使得手工制作深度神经网络成为一项复杂的任务,耗时且容易出错,并且需要深入的专业知识和数学直觉。因此,近年来,对于给定的数据集或任务,自动设计高效架构或"神经架构搜索"的NAS技术激增也就不足为奇了。\ 19 | In figure 2, we compare several deep learning models for the image classification task. Each dot in the plot corresponds to a given DL architecture that has been used for image classification. The dot size correlates with the size of the corresponding neural network in terms of the number of parameters. A quick look at the graph reveals the trend to design larger models to better Top 1 accuracy. However, the size is not necessarily correlated with better accuracy. There have been several efforts to conceive more efficient and smaller networks to achieve comparable Top 1 accuracy performance. We compare four classes of models: Handcrafted, Efficient handcrafted, NAS, and HW-NAS. Generally, throughout the years the handcrafted models rank high up in terms of accuracy but are much more complex in terms of the depth of the architecture or the large number of parameters. For instance, ViT-H [15], which is the state-of-the-art model as of December 2020, has over 600 million parameters and 32 layers. In the top right quadrant of the figure 2 (around the same region as most of the recently handcrafted models), we find some of the models that are automatically created by different NAS techniques. These latter techniques focus only on improving the model’s accuracy without paying attention to the efficiency of the model in terms of its size and latency. Therefore, these NAS models are still large, with the number of parameters ranging between 100M and 500M.\ 20 | 在图 2 中,我们比较了用于图像分类任务的几个深度学习模型。图中的每个点都对应于已用于图像分类的给定 DL 体系结构。就参数数量而言,点大小与相应神经网络的大小相关。快速浏览一下图表,就会发现设计更大模型以提高 Top 1 准确性的趋势。但是,大小不一定与更好的准确性相关。已经进行了多次努力来构思更高效和更小的网络,以实现可比的Top 1精度性能。我们比较了四种类型:手工制作,高效手工制作,NAS和HW-NAS。一般来说,多年来,手工制作的模型在准确性方面排名很高,但在架构的深度或大量参数方面要复杂得多。例如,ViT-H [15]是截至2020年12月最先进的模型,具有超过6亿个参数和32层。在图 2 的右上象限(与大多数最近手工制作的型号大致相同区域)中,我们找到了一些由不同 NAS 技术自动创建的模型。后一种技术仅关注提高模型的准确性,而不关注模型在大小和延迟方面的效率。因此,这些NAS机型仍然很大,参数数量在100M到500M之间。\ 21 | Since 2015, we have noticed the rise of efficient handcrafted models. These models rely on compression methods (see section III-A1) to decrease the model’s size while trying to maintain the same accuracy. MobileNet-V2 [16] and Inception [17] are good examples where the number of parameters is between 20M and 80M. This paper focuses on the class of hardware or platform-aware NAS techniques: HW-NAS. This class encompasses work that aims to tweak NAS algorithms and adapt them to find efficient DL models optimized for a target hardware device. HW-NAS began to appear in 2017 and since then achieved state of the art (SOTA) results in resource constrained environments with Once-for-all (OFA) [18] for example.\ 22 | 自2015年以来,我们注意到高效手工模型的兴起。这些模型依靠压缩方法(参见第III-A1节)来减小模型的大小,同时试图保持相同的精度。MobileNet-V2 [16] 和 Inception [17] 就是一个很好的例子,其中参数数量介于 20M 和 80M 之间。本文重点介绍硬件或平台感知 NAS 技术的类别:HW-NAS。本课程包括旨在调整 NAS 算法并对其进行调整以查找针对目标硬件设备优化的高效 DL 模型的工作。HW-NAS于2017年开始出现,从那时起,通过一劳永逸(OFA)[18],在资源受限的环境中实现了最先进的(SOTA)结果。 23 | 24 | 25 | 26 | 27 | 28 | 29 | ## IV.TAXONOMY OF HW-NAS(HW-NAS的分类) 30 | Unlike conventional NAS, where the goal is to find the best architecture that maximizes model accuracy, hardware-aware NAS (HW-NAS) has multiple goals and multiple views of the problem. We can classify these goals into three categories (See figure 9 from left to right): 31 | 32 | 传统的NAS的目标是找到最大化模型准确性的最佳架构,与之不同的是,硬件感知的NAS (HW-NAS)具有多个目标和多个问题视图。我们可以将这些目标分为三类(见图9,从左到右): 33 | * Single Target, Fixed Configuration : Most of existing HW-NAS fall under this category. The goal is to find the best architecture in terms of accuracy and hardware efficiency for one single target hardware. Consequently, if a new hardware platform has to be used for the NAS, we need to rerun the whole process and feed it the right values to calculate the new hardware s cost. These methods generally define the problem as a constrained or multi-objective optimization problem [53], [47], [23]. Within this category, two approaches are adopted: 34 | 35 | * 单目标,固定配置:大多数现有的HW-NAS都属于这一类别。我们的目标是为单个目标硬件找到精度和硬件效率方面的最佳架构。因此,如果必须为NAS使用一个新的硬件平台,我们需要重新运行整个流程,并为它提供正确的值,以计算新硬件的成本。这些方法通常将问题定义为有约束或多目标优化问题[53],[47],[23]。在这一类别中,采用了两种方法: 36 | 37 | -- Hardware-aware search strategy where the search is defined as a multi-objective optimization problem.While searching for the best architecture, the search 38 | algorithm calls the traditional evaluator component to get the accuracy of the generated architecture but also a special evaluator that measures the hardware 39 | cost metric (e.g., latency, memory usage, energy consumption). Both model accuracy and hardware cost guide the search and enable the NAS to find the most efficient architecture.\ 40 | --硬件感知搜索策略,其中搜索被定义为一个多目标优化问题。在寻找最佳架构的过程中,搜索 41 | 算法调用传统的评估器组件来获得生成的体系结构的准确性,但也调用一个特殊的评估器来测量硬件 42 | 成本度量(例如,延迟,内存使用,能源消耗)。模型准确性和硬件成本都会指导搜索,并使NAS能够找到最有效的体系结构。\ 43 | --On the other hand, the Hardware-aware Search Space approach uses a restricted pool of architectures. Before the search, we either measure the operators’ performance on the target platform or we define a set of rules that will refine the search space; 44 | eliminate all the architectures’ operators that do not perform well on the target hardware. For example, HURRICANE [72] uses different operator choices 45 | for three types of mobile processors: Hexagon DSP, ARM CPU and Myriad Vision Processing Unit (VPU). Accumulated domain knowledge from prior experimentation on a given hardware platform help narrow down the search space. For instance, they do not to use depthwise convolutions for CPU, squeeze and excitation mechanisms for VPU and they do 46 | not lower the kernel sizes for a DSP. Such gathered empirical information helps to define three different search spaces according to the targeted hardware 47 | platform. Note that after defining the search space with these constraints, the search strategy is similar to the one used by conventional NAS, which means 48 | that the search is solely based on the accuracy of the architecture and no other hardware metric is incorporated.\ 49 | 50 | --另一方面,硬件感知的搜索空间方法使用受限的架构池。在搜索之前,我们要么测量操作符在目标平台上的性能,要么定义一组规则来细化搜索空间;消除所有在目标硬件上执行不好的架构操作符。例如,HURRICANE[72]为三种类型的移动处理器使用了不同的运营商选择:Hexagon DSP、ARM CPU和Myriad Vision Processing Unit (VPU)。在给定的硬件平台上积累的领域知识有助于缩小搜索空间。例如,他们没有为CPU使用深度卷积,为VPU使用挤压和激励机制,他们没有降低DSP的内核大小。这些收集到的经验信息有助于根据目标硬件平台定义三个不同的搜索空间。请注意,在用这些约束定义搜索空间之后,搜索策略与传统NAS使用的策略类似,这意味着搜索只基于体系结构的准确性,不包含其他硬件指标。\ 51 | * Single Target, Multiple Configurations: the goal of this category is not only to get the most optimal architecture that gets the best accuracy but also to get an 52 | optimal architecture with latency guranteed to meet the target hardware specification. For example, the authors of FNAS [116] define a new hardware search space 53 | containing the different FPGA specifications (e.g., tiling configurations). They also use a performance abstraction model to measure the latency of the searched neural 54 | architectures without doing any training. This allows them to quickly prune architectures that do not meet the target hardware specifications. In [129], the authors 55 | use the same approach for ASICs and define a hardware search space that contains various ASIC templates.\ 56 | * 单目标,多配置:这一类别的目标不仅是获得最优的架构,获得最佳的准确性,而且还获得 57 | 优化的架构,保证满足目标硬件规格的延迟。例如,FNAS[116]的作者定义了一个新的硬件搜索空间 58 | 包含不同的FPGA规格(例如,平铺配置)。他们还使用性能抽象模型来测量搜索神经的延迟 59 | 没有经过任何培训的架构。这允许他们快速删除不符合目标硬件规格的架构。在[129]中,作者 60 | 对ASIC使用相同的方法,并定义一个包含各种ASIC模板的硬件搜索空间。\ 61 | 62 | * Multiple Targets: In this third category, the goal is to find the best architecture when given a set of hardware platforms to optimize for. In other words, we try to 63 | find a single model that performs relatively well across different hardware platforms. This approach is the most favourable choice, especially in mobile development as it 64 | provides more portability. This problem was tackled by [127], [128] by defining a multi-hardware search space. The search space contains the intersection of all the 65 | architectures that can be deployed in the different targets. Note that, targeting multiple hardware specifications at once is harder as the best model for a GPU, can be 66 | very different to the best model for a CPU (i.e., for GPUs wider models are more appropriate while for CPUs deeper models are). 67 | * 多目标:在这第三类中,目标是在给定一组硬件时,找到最佳的架构可优化的平台。换句话说,我们试图 68 | 找到一个在整体上表现相对良好的单一模型不同的硬件平台。这种方法是最有效的,这也是一个不错的选择,尤其是在移动开发领域提供了更多的可移植性。这个问题被解决了[127],[128]通过定义一个多硬件搜索空间。搜索空间包含所有的交集可以部署在不同目标中的架构。注意,针对多个硬件规格在对于GPU来说,一次是最好的模型非常不同于CPU的最佳模型(例如,为了更大型号的gpu更适合cpu 更深层次的模型)。\ 69 | 70 | ## V.SEARCH SPACES(搜索空间) 71 | Two different search spaces have been adopted in the literature to define the search strategies used in HW-NAS: the Architecture Search Space and the Hardware Search Space. 72 | 文献中采用了两种不同的搜索空间来定义HW-NAS中使用的搜索策略:架构搜索空间和硬件搜索空间。\ 73 | A.Architecture Search Space(架构搜索空间)\ 74 | The Architecture Search Space is a set of feasible architectures from which we want to find an architecture with high performance. Generally, it defines a set of basic network operators and how these operators can be connected to construct the computation graph of the model. We distinguish two approaches to design an architecture search space: 75 | 架构搜索空间是一组可行的架构,我们想从中找到一个高性能的架构。它一般定义一组基本的网络算子,以及这些算子之间的连接方式来构造模型的计算图。我们区分了两种设计建筑搜索空间的方法:\ 76 | 1).Hyperparameter Optimization for a fixed architecture:In this approach a neural architecture is given includingits operator choices. The objective is limited to optimizing the architecture hyperparameters (e.g., number of channels, stride, kernel size).\ 77 | --1).固定体系结构的超参数优化:在这种方法中,给出了包括算子选择在内的神经体系结构。目标局限于优化架构超参数(例如,通道数量、步幅、内核大小)。\ 78 | 2).True Architecture Search Space: The search space allows the optimizer to choose connections between operations and to change the type of operation. 79 | --2)真正的架构搜索空间:搜索空间允许优化器选择操作之间的连接,并更改操作类型。\ 80 | Both approaches have their advantages and disadvantages but it is worth mentioning that although former approach reduces the search space size, it requires considerable human 81 | expertise to design the search space and introduces a strong bias. Whereas the latter approach decreases the human bias but considerably increases the search space size and hence the search time.\ 82 | 这两种方法各有利弊,但值得一提的是,虽然前者减少了搜索空间的大小,但它需要相当多的人类专业知识来设计搜索空间,并引入了强烈的偏见。而后一种方法减少了人为偏差,但大大增加了搜索空间大小,从而增加了搜索时间。\ 83 | 84 | Generally, in the later approach, we distinguish three types 85 | (See figure 10): 86 | 一般来说,在后一种方法中,我们区分三种类型 87 | (见图10): 88 | * Layer-wise Seach Space, where the whole model is generated from a pool of operators. FBNet Search Space[23], for example, consists of a layer-wise search space with a fixed macro architecture which determines the number of layers and dimensions of each layer where the first and last three layers have fixed operators. The remaining layers need to be optimized. \ 89 | * 分层搜索空间,其中整个模型是由操作符池生成的。FBNet搜索空间 例如,[23]由一个具有固定宏架构的分层搜索空间组成层数和每一层的尺寸,其中第一层和最后三层有固定的操作符。其余的层需要优化。 90 | * Cell-based Search Space, where the model is constructed from repeating fixed architecture patterns calledblocks or cells. A cell is often a small acyclic graph that 91 | represents some feature transformation. The cell-based approach relies on the observation that many effective handcrafted architectures are designed by repeating a 92 | set of cells. These structures are typically stacked and repeated a number of time to form larger and deeper architectures. This search space focuses on discovering 93 | the architecture of specific cells that can be combined to assemble the entire neural network. Although cell-based search spaces are intuitively efficient to look for the best model in terms of accuracy, they lack flexibility when it comes to hardware specialization [47], [23]. 94 | * 基于单元的搜索空间,其中的模型是由称为块或单元的重复固定架构模式构建的。单元格通常是表示某些特征转换的小非循环图。基于单元的方法依赖于这样的观察:许多有效的手工构建的体系结构都是通过重复一组单元来设计的。这些结构通常是堆叠和重复的时间,形成更大和更深的结构。这个搜索空间的重点是发现特定细胞的结构,这些细胞可以组合成整个神经网络。尽管基于单元格的搜索空间可以直观地高效地寻找最佳模型,但在硬件专门化[47],[23]时,它们缺乏灵活性。 95 | * Hierarchical Search Space, works in 3 steps: First the cells are defined and then bigger blocks containing a defined number of cells are constructed. Finally the whole 96 | model is designed using the generated cells. MNASNet [47] is a good example of this category of search spaces. The authors define a factorized hierarchical search space 97 | that allows more flexibility compared to a cell-based search space. This allows them to reduce the size of the total search space compared to the global search space. 98 | * 层次搜索空间,工作在3个步骤:首先定义单元格,然后构建包含定义数量单元格的更大块。最后,利用生成的单元对整个模型进行设计。MNASNet[47]是这类搜索空间的一个很好的例子。作者定义了一种分解的分层搜索空间,与基于单元格的搜索空间相比,它具有更大的灵活性。与全局搜索空间相比,这允许它们减少总搜索空间的大小。\ 99 | * In existing NAS research works, the authors define a macroarchitecture that generally determines the type of networks considered in the search space. When considering CNNs, 100 | the macro architecture is usually identical to the one shown in figure 1. Therefore, many works [53], [23], [47], [127],[130] differ in the number of layers, the set of operations and the possible hyperparameters values. Recently, the scope of network type is changing. For instance, NASCaps [100] changes their macro-architecture to allow the definition of capsules. Capsules network [131] are basically cell-based CNNs where each cell (or capsule) can contain a different CNN architecture.\ 101 | 在现有的NAS研究工作中,作者定义了一个宏架构,该架构一般决定了在搜索空间中考虑的网络类型。当考虑到CNN,宏体系结构通常与图1所示的体系结构相同。因此,很多作品[53]、[23]、[47]、[127]、[130]在层数、操作集和可能的超参数值上存在差异。最近,网络类型的范围正在发生变化。例如,NASCaps[100]改变了他们的宏观架构,允许定义胶囊。胶囊网络[131]基本上是基于细胞的CNN,其中每个细胞(或胶囊)可以包含不同的CNN结构。\ 102 | Other works like [66], [99] focus on transformers and define their macro-architecture as a transformer model. The search consists of finding the number of attention heads and their internal operations. When dealing with the hyperparameters only, the macro architecture can define a variety of network 103 | types. Authors in [75], [105] mix different definitions, transformers + CNN and transformers + RNN respectively. They define a set of hyperparameters that encompasses the predefined parameters for different network types at the same time.\ 104 | 其他作品如[66]、[99]关注transformers,并将其宏观架构定义为transformers模型。搜索的内容包括找到关注头的数量及其内部运作。当只处理超参数时,宏体系结构可以定义各种网络 105 | 类型。[75]、[105]的作者混合了不同的定义,分别是transformers+ CNN和transformers+ RNN。它们定义了一组超参数,同时包含了针对不同网络类型的预定义参数。 106 | Lately, more work [53], [64] have been considering the use of over-parameterized networks (i.e. supernetworks) to speedup the NAS algorithms. These networks consist of adding architectural learnable weights that select the appropriate operator at the right place. Note that these techniques have been applied to transformers as well [132]. 107 | 最近,更多的工作[53],[64]已经考虑使用过度参数化网络(即超级网络)来加速NAS算法。这些网络包括添加体系结构的可学习权值,以在正确的位置选择适当的操作符。请注意,这些技术也应用于transformers[132]。 108 | 109 | Finally, in some research efforts, the pool of operators/architectures is refined with only the models that are efficient in the targeted hardware [128], [127]. The search space size is considerably reduced by omitting all the architectures that cannot be deployed. 110 | 最后,在一些研究中,运营商/架构池仅通过目标硬件中高效的模型进行了细化[128],[127]。通过省略所有不能部署的架构,搜索空间的大小大大减少。 111 | ## Hardware Search Space (HSS) 112 | Some HW-NAS methods include a HSS component which generates different hardware specifications and optimizations by applying different algorithmic transformations to fit the hardware design. This operation is done before evaluating the model. Although the co-exploration is effective, it increases the 113 | search space time complexity significantly. If we take FPGAs as an example, their design space may include: IP instance categories, IP reuse strategies, quantization schemes, parallel factors, data transfer behaviours, tiling parameters, and buffer sizes. It is arguably impossible to consider all these options as part of the search space due to the added search computation 114 | cost. Therefore, many existing strategies limit themselves to only few options. 115 | 一些HW-NAS方法包括一个HSS组件,该组件通过应用不同的算法转换来生成不同的硬件规格和优化,以适应硬件设计。此操作在评估模型之前完成。虽然联合勘探是有效的,但它增加了搜索的时空复杂性显著。 以fpga为例,其设计空间可能包括:IP实例类别、IP重用策略、量化方案、并行因素、数据传输行为、平铺参数和缓冲区大小。 由于增加了搜索计算,要将所有这些选项都考虑到搜索空间中是不可能的 成本。 因此,许多现有的策略限制自己只有很少的选择。 116 | Hardware Search Space (HSS) can be further categorized 117 | as follows: 118 | 119 | * Parameter-based: The search space is formalized by aset of different parameter configurations. Given a specific data set, FNAS [116] finds the best performing model, along with the optimization parameters needed for it to be deployed in a typical FPGA chip for deep learning. Their HSS consists of four tiling parameters for the convolutions. FNASs [117] extends FNAS by adding more optimization parameters such as loop unrolling. The authors in [118], [119] used a multi-FPGA hardware search space. The search consists of dividing the 120 | architecture into pipeline stages that can be assigned to an FPGA according to its memory and DSP slices, in addition to applying an optimizer that adjusts the tiling parameters. Another example is presented in [120], where 121 | the adopted approach takes the global structure of an FPGA and adds all possible parameters to its hardware search space including the input buffer depth, memory interface width, filter size and ratio of the convolution 122 | engine. [121] searches the internal configuration of an FPGA by generating simultaneously the architecture hyperparameters, the number of processing elements, and the size of the buffer. FPGA/DNN [133] proposes two 123 | components: Auto-DNN which performs hardware-aware DNN model search and Auto-HLS which generates a synthesizable C code of the FPGA accelerator for explored DNNs. Additional code optimizations such as buffer reallocation and loop fusion on the resulting C-code are added to automate the hardware selection.\ 124 | 基于参数的:搜索空间由一组不同的参数配置来形式化。 给定特定的数据集,FNAS[116]会找到性能最佳的模型,以及将其部署到典型的FPGA芯片进行深度学习所需的优化参数。 它们的HSS由四个卷积平铺参数组成。 FNASs[117]通过添加更多的优化参数,如循环展开,对FNAS进行了扩展。 作者在[118]、[119]中使用了多fpga硬件搜索空间。 搜索包括划分 除了应用优化器来调整平铺参数外,还可以根据内存和DSP切片将其分配到FPGA的流水线阶段。 另一个例子在[120]中 该方法采用了FPGA的全局结构,并将所有可能的参数添加到硬件搜索空间中,包括输入缓冲区深度、内存接口宽度、滤波器大小和卷积比  引擎。 [121]通过同时生成体系结构超参数、处理元素的数量和缓冲区的大小来搜索FPGA的内部配置。 FPGA/DNN[133]提出了两种方法 Auto-DNN,实现硬件感知的DNN模型搜索;Auto-HLS,为已探索的DNN生成可合成的FPGA加速器C代码。 额外的代码优化,如缓冲区重新分配和循环融合的结果c代码被添加到自动化硬件选择。 125 | * Template-based: In this scenario, the search space is defined as a set of pre-configured templates. For example, NASAIC [129] integrates NAS with Application-Specific Integrated Circuits (ASIC). Their hardware search space 126 | includes templates of several existing successful designs. The goal is to find the best model with the different possible parallelizations among all templates. In addition to the the tiling parameters and bandwidth allocation, the authors in [122] define a set of FPGA platforms and the search finds a coupling of the architecture and FPGA platform that fits a set of pre-defined constraints (e.g., max latency 5ms).\ 127 | 基于模板的:在这个场景中,搜索空间被定义为一组预先配置的模板。例如,NASAIC[129]将NAS与专用集成电路(ASIC)集成在一起。他们的硬件搜索空间 128 | 包括几个现有成功设计的模板。目标是在所有模板中找到具有不同可能并行化的最佳模型。除了平铺参数和带宽分配,作者在[122]中定义了一组FPGA平台,搜索发现了一个架构和FPGA平台的耦合,它符合一组预定义的约束(例如,最大延迟5ms)。\ 129 | In general, we can classify the targeted hardware platforms into 3 classes focusing on their memory and computation capabilities:Server Processors: this type of hardware can be found in cloud data centers, on premise data centers, edge servers, or supercomputers. They provide abundant computational 130 | resources and can vary from CPUs, GPUs, FPGAs and ASICs. When available, machine learning researchers focus on accuracy. Many NAS works consider looking for the best architecture in these devices without considering 131 | the hardware-constraints. Nevertheless, many HW-NAS works target server processors to speed up the training process and decrease the extensive resources needed to train a DL architecture and use it for inference.\ 132 | 一般来说,我们可以根据内存和计算能力将目标硬件平台分为3类:服务器处理器:这种类型的硬件可以在云数据中心、前提数据中心、边缘服务器或超级计算机中找到。它们提供了丰富的计算能力 133 | 资源,可以从cpu, gpu, fpga和asic。如果可行,机器学习研究人员将重点放在准确性上。许多NAS工作人员考虑在这些设备中寻找最佳的架构,而无需考虑 134 | 硬件约束。然而,许多HW-NAS工作的目标服务器处理器,以加快训练过程,并减少训练DL体系结构和使用它进行推理所需的大量资源 135 | * Mobile Devices: With the rise of mobile devices, the 136 | focus has shifted to enable fast and efficient deep learning 137 | on smartphones. As these devices are heavily constrained 138 | with respect to their memory and computational capabilities, the objective of ML researchers shift to assessing the trade-off between accuracy and efficiency. Many HW-NAS algorithms target smartphones including FBNet [23] 139 | and ProxylessNAS [53] (refer to table III). Additionally, because smartphones usually contain system on chips with different types of processors, some research efforts[79] have started to explore ways to take advantage of 140 | these heterogeneous systems.\ 141 | 移动设备:随着移动设备的兴起,人们开始 142 | 重点已经转移到实现快速高效的深度学习 143 | 在智能手机。由于这些设备受到严重限制 144 | 关于他们的记忆和计算能力,ML研究人员的目标转移到评估准确性和效率之间的权衡。许多HW-NAS算法都针对智能手机,包括FBNet [23] 145 | 和ProxylessNAS[53](见表三)。此外,由于智能手机通常包含不同类型处理器的系统芯片,一些研究努力[79]开始探索利用的方法 146 | 这些异构系统。\ 147 | * Tiny Devices: The strong growth in use of microcontrollers and IoT applications gave rise to TinyML [134]. TinyML refers to all machine learning algorithms dedicated to tiny devices, i.e, capable of on-device inferenceat extremely low power. One relevant HW-NAS method that targets tiny devices is MCUNet [123], which includes an efficient neural architecture search called TinyNAS. TinyNAS optimizes the search space and handles a variety of different constraints (e.g., device, latency, energy, memory) under low search costs. Thanks to the efficient search, MCUNet is the first to achieves >70% ImageNet 148 | top-1 accuracy on an off-the-shelf commercial microcontroller. 149 | 150 | 微型设备:微控制器和物联网应用的强劲增长催生了TinyML[134]。TinyML指的是所有用于微型设备的机器学习算法,即能够在极低功耗的情况下进行设备推理。一种针对微型设备的相关HW-NAS方法是MCUNet[123],其中包括一种名为TinyNAS的高效神经架构搜索。TinyNAS优化了搜索空间,并在低搜索成本下处理各种不同的约束条件(例如,设备、延迟、能量、内存)。由于高效的搜索,MCUNet是第一个实现>70% ImageNet 151 | 在一个现成的商用微控制器上,精度是最高的。 152 | ## Current Hardware-NAS Trends 153 | ## 硬件感知架构搜索现状 154 | Figure 11 shows the different types of platforms that have been targeted by HW-NAS in the literature. In total, we have studied 126 original hardware-aware NAS papers. By target, we mean the platform that the architecture is optimizedfor. Usually the search algorithm is executed in a powerful machine, but that is not the purpose of our study. ”No Specific Target” means that the HW-NAS incorporates hardware agnostic constraints into the objective function such as the number of parameters or the number of FLOPs. In the figure, the 155 | tag ”Multiple” means multiple types of processing elements have been used in the HW platform. Table III gives the list of references per targeted hardware. 156 | \ 157 | 图11显示了文献中HW-NAS针对的不同类型的平台。我们总共研究了126篇原始的硬件感知NAS论文。所谓目标,我们指的是架构被优化的平台。通常搜索算法是在一个强大的机器中执行的,但这不是我们研究的目的。”无特定目标”意味着HW-NAS将硬件不确定的约束合并到目标函数中,例如参数的数量或FLOPs的数量。在图中标签“多”表示在HW平台中使用了多种处理元素。表III给出了每个目标硬件的参考列表。 158 | In the figure, we note that the number of research papers targeting GPUs and CPUs has more or less remained constant. However, we can clearly see that FPGAs and ASICs are gaining popularity over the last 3 years. This is consistent with 159 | the increasing number of deep learning edge applications. Two recent interesting works are [127], [128] both of which target multiple hardware platforms at once.\ 160 | 在图中,我们注意到针对gpu和cpu的研究论文数量基本保持不变。然而,我们可以清楚地看到,fpga和asic在过去3年里越来越受欢迎。这与深度学习的边缘应用越来越多。最近的两个有趣的作品是[127],[128],它们都同时针对多个硬件平台。 161 | In figure 12, we illustrates the different DNN operations that compose the architecture search space. First, we divide the CNN into two groups, standard CNN which only utilizes.a standard convolution and extended CNN which involves 162 | special convolution operations such as the depthwise separable convolution or grouped convolutions. NAS has been mostly dominated by convolutional neural networks as shown in the figure. However, recent works have started explore more operators by incorporating capsule networks [100], transformers 163 | [139], and GANs [94]. 164 | 在图12中,我们演示了构成体系结构搜索空间的不同DNN操作。首先,我们把CNN分成两组,标准的CNN,只有利用。一个标准的卷积和扩展的CNN,其中包括特殊的卷积运算,如深度可分离卷积或分组卷积。如图所示,NAS一直主要由卷积神经网络主导。然而,最近的工作已经开始探索更多的运营商,通过合并胶囊网络[100],transformers[139]和GANs[94]。 165 | ## HARDWARE-AWARE NAS PROBLEM FORMULATION 166 | ## 硬件感知NAS问题定义(形成) 167 | Neural Architecture Search (NAS) is the task of finding a well-performing architecture for a given dataset. It is cast as an optimization problem over a set of decisions that define different components of deep neural networks (i.e., layers, hyperparameters). This optimization problem can simply be seen as formulated in equation 2.\ 168 | 神经体系结构搜索(NAS)的任务是为给定的数据集找到一个性能良好的体系结构。它被视为一个优化问题,需要一系列决策来定义深度神经网络的不同组成部分(即层次、超参数)。这个优化问题可以简单地看成如公式2所示。\ 169 | We denote the space of all feasible architectures as A (alsocalled search space). The optimization method is looking for the architecture α that maximizes the performance metric denoted by f for a given dataset δ. In this context, f can simply be the accuracy of the model.\ 170 | 我们将所有可行体系结构的空间表示为A(也称为搜索空间)。 优化方法是寻找使性能指标最大化的体系结构α 对于给定的数据集δ,用f表示。 在这种情况下,f可以仅仅是模型的准确性。\ 171 | Although it is important to find networks that provide high accuracy, these NAS algorithms tend to give complex models that cannot be deployed on many hardware devices. To 172 | overcome this problem, practitioners consider other objectives, 173 | such as the number of model parameters, the number of 174 | floating-point operations, and device-specific statistics like 175 | the latency or the energy consumption of the model. Different formulations were used to incorporate the hardwareaware objectives within the optimization problem of neuralarchitecture search. We classify these approaches into two classes, single and multi-objective optimization. The single objective optimization can be further classified as two-stage or constrained optimization. Similarly, the multi-objective optimization approach can be further classified as single or multi-objective optimizations. Please refer to figure 13 for a summary of these approaches. These 2 classes are further detailed with examples from the literature in the following 176 | sections:\ 177 | 尽管找到提供高精度的网络很重要,但这些NAS算法往往会给出无法在许多硬件设备上部署的复杂模型。来克服这个问题,从业者会考虑其他目标,如型号参数的个数、数量等浮点运算和特定于设备的统计信息,比如模型的延迟或能量消耗。 在神经结构搜索的优化问题中,使用不同的公式来整合硬件目标。 我们将这些方法分为单目标优化和多目标优化两类。单目标优化又可分为两阶段优化和约束优化。类似地,多目标优化方法可以进一步分为单目标或多目标优化。这些方法的摘要请参见图13。 这两个类是进一步详细的例子,从文献在下面部分: 178 | ### Single-Objective Optimization 179 | ### 单目标优化 180 | In this class, the search is realized considering only one 181 | objective to maximize, i.e the accuracy. Most of the existing 182 | work in the literature [47], [53], [78], [122], [120], that tackle 183 | the hardware-aware neural architecture search, try to formulate 184 | the multi-objective optimization problem into a single objective to better apply strategies like reinforcement learning or 185 | gradient-based methods. We can divide this class into two 186 | different approaches: Two-stage optimization and constrained 187 | optimization.\ 188 | 在这一类中,搜索只考虑一个目标最大化,即准确性。现有的大部分文献[47],[53],[78],[122],[120],处理硬件感知的神经架构搜索,尝试表述将多目标优化问题转化为一个单一目标,以更好地应用策略,如强化学习或基于梯度的方法。 我们可以把这个班分成两个班不同的方法:两阶段优化和约束优化。\ 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | -------------------------------------------------------------------------------- /EFFICIENT METHODS AND HARDWARE FOR DEEP LEARNING-augmented hangsong's PhD denfense.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hisrg/Neural-Network-Compression-and-Accelerator-on-Hardware/bc9c88af5fbcecf88bf9a7f05f220b6d182bd8aa/EFFICIENT METHODS AND HARDWARE FOR DEEP LEARNING-augmented hangsong's PhD denfense.zip -------------------------------------------------------------------------------- /EIE- Efficient Inference Engine on Compressed Deep Neural Network(笔记).zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hisrg/Neural-Network-Compression-and-Accelerator-on-Hardware/bc9c88af5fbcecf88bf9a7f05f220b6d182bd8aa/EIE- Efficient Inference Engine on Compressed Deep Neural Network(笔记).zip -------------------------------------------------------------------------------- /Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference: -------------------------------------------------------------------------------- 1 | 本期彪哥分享Google移动端网络量化与加速开山之作:Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference, 2 | 该作相关code已被TF lite 所采用。参考文献:https://www.cnblogs.com/jiangxinyang/p/12056202.html 我的github:github.com/hisrg 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Neural-Network-Compression-and-Accelerator-on-Hardware 2 | 3 | My name is Fang Biao. I'm currently pursuing my Master degree with the college of Computer Science and Engineering, Si Chuan University, Cheng Du, China. For more informantion about me and my research, you can go to [my homepage](https://github.com/hisrg). One of my research interests is architecture design for deep learning and neuromorphic computing. This is an exciting field where fresh ideas come out every day, so I'm collecting works on related topics. Welcome to join us! 4 | 5 | 6 | 中文:我叫房彪,现Intel员工,曾职于Qualcomm Shanghai(SDC),曾就读于计算学院,四川大学. 关于我目前的研究内容您可以登陆github.com/hisrg进行浏览,我目前研究的主要内容是基于深度学习和类脑计算的系统架构,这是一个非常振奋人心的领域,因此我一直在收集相关领域的最新工作,欢迎加入我们! 7 | 8 | ## Table of Contents 9 | - [My Contributions](#my-contributions) 10 | - [Paper List](#conference-papers) 11 | 12 | ## My Contributions 13 | - [An FPGA Implementation of Deep Spiking Neural Network for Low-Power and Fast Classification.](Xiping Ju, Biao Fang, Rui Yan, Xiaoliang Xu, & Huajin Tang. (2019).)(http://www.ncbi.nlm.nih.gov/pubmed/31703174)(Neural Computation. (Published)) 14 | - [Spike Trains Encoding Optimization for Spiking Neural Networks Implementation in FPGA.](Fang B, Zhang Y, Yan R, Tang H.(2020))(2020 12th International Conference on Advanced Computational Intelligence (ICACI), IEEE, 2020, pp. 412-418.Published) 15 | 16 | ## Paper List 17 | | 英文题目 | 中文题目 | 状态 | 18 | | :-----| ----: | :----: | 19 | | A Comprehensive Survey on Hardware-Aware Neural Architecture Search | 硬件感知神经网络架构搜索方法综述 | 翻译中 | 20 | | EFFICIENT METHODS AND HARDWARE FOR DEEP LEARNING-augmented hangsong's PhD denfense | 韩松博士毕业论文:深度学习有效硬件加速与算法 | 已上传 | 21 | |Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference|神经网络算法有整型效量化与训练|已上传| 22 | |Speeding up Convolutional Neural Networks with Low Rank Expansions|地址分解提速神经网络|已上传| 23 | |A Survey of Model Compression and Acceleration for Deep Neural Networks|/关于深度神经网络模型压缩与加速方面的调查|已上传| 24 | ## 联系方式 25 | afetsc2008@sina.com 26 | -------------------------------------------------------------------------------- /Speeding up Convolutional Neural Networks with Low Rank Expansions: -------------------------------------------------------------------------------- 1 | 1. paper: Speeding up Convolutional Neural Networks 2 | with Low Rank Expansions 3 | 2. 哔哩哔哩通道: https://www.bilibili.com/video/BV1JL411G7VE 4 | 3. 微信公众号通道: https://mp.weixin.qq.com/s?__biz=Mzk0OTI4NzgyNg==&tempkey=MTEzNV9lcnBoYjNhM2F3S2hMNnJBSzgzSXV2WXFTUU9CdVI1X2NtQjVYY3hPREUzdWxhLUljLVNMRlFmd1ptdG9XVlFRelpUcXVITDZBaHFBMHZXN05FMUxRR0UtZElrZFFrODlqWmNwN3lCTE91aThRSnp3dWxDQ2RBS3Y0Si13aEV6LUU2eHZscElMWWRRQ2pVTWpxWXlySEhGb19mVXBwNWRvVmdJVFFRfn4%3D&chksm=435befe8742c66fe5d34d8cadb13ccae0e7694b706cbddf51a0c392c6ff52829a362aa0215bd#rd 5 | 4. 参考资料:https://zhuanlan.zhihu.com/p/95916650 6 | -------------------------------------------------------------------------------- /Structed Comperss NN Note.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hisrg/Neural-Network-Compression-and-Accelerator-on-Hardware/bc9c88af5fbcecf88bf9a7f05f220b6d182bd8aa/Structed Comperss NN Note.pdf -------------------------------------------------------------------------------- /images/formula2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hisrg/Neural-Network-Compression-and-Accelerator-on-Hardware/bc9c88af5fbcecf88bf9a7f05f220b6d182bd8aa/images/formula2.png -------------------------------------------------------------------------------- /images/formula3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hisrg/Neural-Network-Compression-and-Accelerator-on-Hardware/bc9c88af5fbcecf88bf9a7f05f220b6d182bd8aa/images/formula3.png -------------------------------------------------------------------------------- /images/formula4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hisrg/Neural-Network-Compression-and-Accelerator-on-Hardware/bc9c88af5fbcecf88bf9a7f05f220b6d182bd8aa/images/formula4.png -------------------------------------------------------------------------------- /images/formula5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hisrg/Neural-Network-Compression-and-Accelerator-on-Hardware/bc9c88af5fbcecf88bf9a7f05f220b6d182bd8aa/images/formula5.png -------------------------------------------------------------------------------- /images/readme.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /关于深度神经网络模型压缩与加速方面的调查: -------------------------------------------------------------------------------- 1 | 视频版本请访问:https://www.bilibili.com/video/BV1Z341127am/ 2 | 本文源自:https://arxiv.org/abs/1710.09282 3 | 4 | 我的观点: 5 | 本文全面概述了深度神经网络模型的压缩方法,主要可分为参数剪枝与共享,低秩分解,迁移/压缩卷积滤波器和知识蒸馏,该文章针对每一类方法的性能、相关应用、优势和劣势进行了分析,并且介绍了模型压缩主流benchmark 以及未来展望。适合入门选手阅读,本文就以原有文章的组织顺序介绍相关内容。 6 | 概述: 7 | 深度卷积神经网络(CNNs)最近已经在许多视觉识别任务上取得了巨大的成功。然而,现存的深度卷积神经网络模型在算力和内存的要求很高,这限制了它们在低内存或者应用的部署。因此,一个自然的想法式就是再没有模型性能上的显著下降下使用模型压缩和加速深度网络。在过去几年里,这个领域取得了巨大的(tremendous)进展。这篇文章中,我们将会调查用于紧凑和加速CNNs模型的最先进技术。这些技术可以笼统的分成四个大类:参数剪枝和共享(parameter pruning and sharing),低秩分解(low-rank factorization),变换/紧致卷积滤波器(transferred/compact convolutional filters),以及知识蒸馏(knowledge distillation)在每一部分,我们提供细致分析在性能,相关应用,优点和缺点。然后我们将通过一些最近成功的方法,例如,动态容量网络(dynamic capacity networks)和随机深度网络(stochastic depths networks)。这之后,我们调查评估矩阵(evaluation matrices,)最主要的用于评估模型性能的数据集和最近的基准效果。最后,我们总结这个文章,讨论剩下的挑战和这个主题(模型压缩)可能的方向。 8 | 介绍(一睹为快): 9 | 方法 描述 应用场景 优势 缺点 其它 10 | 参数剪枝与共享 减少对性能不敏感的冗余参数 卷积层和全连接层 对不同设置都具有健壮性,能获得一个好的性能,同时支持脚本训练和预训练模型 极端情况二值化网络会损失精度 11 | 低秩分解 使用矩阵/向量分解去评估带有信息量的参数 卷积层和全连接层 标准的管道,更容易实现,同时支持脚本训练和预训练模型 有时反而会增加计算代价,不能够保持全局信息 12 | 转移/紧凑卷积核 设计要给特殊的空间卷积核以节约参数 卷积层 算法依赖于应用,通常获得好的性能,但只支持脚本训练 诸如在Googlenet,Resnet上的表现不太好 13 | 知识蒸馏 从大模型中蒸馏出一个紧凑型神经神经网络 卷积层核全连接层 模型的性能对应用比较敏感,即泛化能力弱。只支持脚本训练 只能应用到带有softmax损失的分类任务 14 | 15 | 一、参数剪枝与共享 16 | A.量化与二值化 17 | 量化:使用更少的bit位数来压缩原有模型中的权值,一般情况下训练出来的网络模型权重都是采用float表示的,例如将其经过定点量化后采用定点8bit或16bit表示权重。 18 | 二值化:二值化网络是量化的极端操作,即使用1bit表示权重,虽然大幅度减少了权重占用空间,但是实验表明对模型的性能影响也比较大。 19 | 20 | 21 | Han S 提出一套完整的深度网络的压缩流程:首先修剪不重要的连接,重新训练稀疏连接的网络。然后使用权重共享量化连接的权重,再对量化后的权重和码本进行霍夫曼编码,以进一步降低压缩率。如图 2 所示,包含了三阶段的压缩方法:修剪、量化(quantization)和霍夫曼编码。 22 | B.网络剪枝 23 | 网络剪枝和共享已经被用于减少网络复杂性和处理过拟合任务。一个早些的剪枝方法是基于权值的。最优脑损害(The Optimal Brain Damage)和最优脑外科医生(the Optimal Brain Surgeon)方法减少了基于损失函数Hessian阵的连接层的参数,这些工作说明这样的剪枝得到了较高的精确率比那些基于权值剪枝方法的机制。这个方向的最近趋势是剪枝冗余性,即预训练CNN模型中非信息的权值。训练紧致的带有稀疏约束的CNNs同样也是一个增长的兴趣点。这些稀疏性约束时典型的引入了最优化问题如 [公式] 或者 [公式] 范数正则化。缺点: 剪枝和共享有一些潜在的问题。首先,带有 [公式] 或者 [公式]正则化的剪枝更多的迭代以达到收敛(难以收敛)。另外,所有的剪枝的关键点时要求对层的敏感性的手动启动,这要求微调好参数因此在一些应用上可能变得更加笨重。 24 | C.设计矩阵结构(针对全连接层) 25 | 我们知道全连接层通常携带了大量的参数,是网络中的内存带宽与计算的瓶颈。在这个方向上,有一些研究提出了简单而有效的基于循环投影的方法,给一定一个向量和一个循环矩阵,如下: 26 | 27 | 这样内存消耗就会从o(n²)减少为o(n).这种方法的缺点是:1.有可能会影响模型的性能 2.必须有通过手动方式去设计一个合适的矩阵结构。目前没有没有通用的理论支持。 28 | 二、低秩分解 29 | 卷积操作占据了深度CNNs模型中的最大计算篇幅,因此减少卷积层能够提升压缩率同时也能加快运算速度。对于卷积核,它可以被认为一个4D张量。基于张量分解的想法驱使我们本能的认为4D张量的冗余性去除会有一个显著提升,这是一个特殊的方式去移除冗余性。注意到全连接层,它能够被视为一个2D矩阵并且低秩也能有所帮助。 30 | 31 | 很长时间以来,人们使用低秩滤波器去加速卷积,例如,高维DCT(discrete cosine transform, 离散余弦变换)和小波系统(wavelet systems)各自使用张量积去构造从1D DCT和1D的小波。(。。。一些具体的方法)低秩估计是逐层而做的。一层的参数在低质估计后固定下来,而上面的层是微调基于一个重构误差准则。这些是典型的用于压缩2D卷积滤波器的低秩估计方法。根据这个方向,Canonical Polyadic(CP)分解是一个用于核张量的方法。人们使用非线性的最小二乘去计算CP分解。然而,找到最好的低秩估计在CP分解中式一个病态问题,并且最好的 [公式] (K是秩的值)估计可能是不存在的。。 32 | 33 | 正如前面所提,全连接层可以看成是2D矩阵,因此上述的方法(指低秩估计的方法)也能够应用到这儿(指全连接层的分解)。也有工作应用截断奇异值分解去分解全连接层用于设计紧凑的多任务深度学习框架。 34 | 35 | 缺点:低秩方法在估计矩阵压缩和加速上是简单直接的。这个想法最近补充深度学习的优点,比如dropout, rectified units 和 maxout. 然而, 由于它涉及到分解操作,执行起来并不容易。分解是计算代价昂贵的。 另一个问题是当前的低秩估计方法是逐层的,因此不能执行全局的参数压缩, 而这对于不同的层保持不同的信息时重要的。最后,比较原始模型, 分解需要额外的再训练去实现收敛。 36 | 37 | 三、转移、紧凑※卷积核 38 | CNNs 是参数有效的对于转换的不变性,对于输入图片表示的不变性,而这对于训练深度模型而不导致过拟合是重要的。尽管目前还缺失强理论证明,但是大量的经验事实支持转换的不变性和卷积权值共享对于好的预测性能是重要的。 使用转移卷积滤波器去压缩CNN模型的想法受到研究工作启发,它引入了等价理论。 39 | 40 | 四、知识蒸馏 41 | 就我们所知道的,第一次探索使用知识转移的方法压缩模型的工作是由Caruana等人提出的。他们训练一个压缩/完整的带有伪数据标签的强分类器的模型,并复现了原始大网络的效果。但是这项工作被限制到了浅层模型。这个想法最近吸收为知识蒸馏(Knowledge Distillation)压缩深和宽的网络到浅的网络。 知识蒸馏的基本思想是去转移大的教师模型的知识到一个小的学生模型通过学习由softmax带来的类分布。 42 | 43 | 缺点:基于知识蒸馏的方法能够使更深的模型瘦身,并且显著的减少计算损失。然而,知识蒸馏只能应用到带有softmax损失的分类任务,这限制了其应用,另一个缺点使模型假设有时过于严格,相比较其他竞争性的方法。 44 | 五、讨论与挑战 45 | · 依赖于原模型,降低了修改网络配置的空间,对于复杂的任务,尚不可靠; 46 | · 通过减少神经元之间连接或通道数量的方法进行剪枝,在压缩加速中较为有效。但这样会对下一层的输入造成严重的影响; 47 | · 结构化矩阵和迁移卷积滤波器方法必须使模型具有较强的人类先验知识,这对模型的性能和稳定性有显著的影响。研究如何控制强加先验知识的影响是很重要的; 48 | · 知识精炼方法有很多优势,比如不需要特定的硬件或实现就能直接加速模型。个人觉得这和迁移学习有些关联。 49 | · 多种小型平台(例如移动设备、机器人、自动驾驶汽车)的硬件限制仍然是阻碍深层 CNN 发展的主要问题。相比于压缩,可能模型加速要更为重要,专用芯片的出现固然有效,但从数学计算上将乘加法转为逻辑和位移运算也是一种很好的思路。 50 | 参考文献: 51 | https://zhuanlan.zhihu.com/p/137117572 52 | 53 | https://www.jianshu.com/p/885bee2a4aa 54 | -------------------------------------------------------------------------------- /神经网络与有效推理的量化调查研究2023.md: -------------------------------------------------------------------------------- 1 | # 神经网络有效推理的量化调查研究(2023年版本) 2 | ## 概要 3 | 一旦抽象数学计算适用于数字计算机上的计算在这些计算中出现了数值通信。与数值问题密切相关表示是量化的问题。一组连续实值数应该以什么方式分布在一组固定的离散数上以最小化所需的位数并保证计算的准确性?每当内存和/或计算资源受到严格限制时,这种长期存在的量化问题就尤为重要,并且由于神经网络模型在计算机视觉、自然语言处理和相关领域的卓越性能,近年来它已成为最前沿的问题。从浮点表示移到四位表示的低精度固定整数值或更少具有减少内存占用的潜力延迟为16倍;事实上在这些应用中可以获得4x到8x倍的提升。因此,最近作为计算的高效实现研究与神经网络相关——量化的出现是不足为奇的。在本文中,我们调研了数值量化问题并探讨深度神经网络中的量化方法,包括当前方法的优点/缺点。用这个调查及其组织,我们希望量化研究现状对于神经网络组织以简化对未来研究的评估该领域。 4 | ## 一、介绍 5 | 在过去十年中,我们观察到提高神经网络(NN)的准确性对于广泛的问题,通常通过高度在参数化模型上。尽管这些过度参数化(因此非常大)的神经网络模型的准确性显著提高,但这些模型的规模意味着不可能为许多人部署它们资源受限的应用程序。这会产生问题为了实现普及的深度学习实时推理,能耗低在资源受限的环境中。这普遍的深度学习预计将具有对实时等广泛应用的影响智能医疗监控、自动驾驶,音频分析和语音识别。实现具有最佳精度的高效实时神经网络需要重新思考神经网络模型的设计、训练和部署[71]。有大量文献集中于通过以下方式解决这些问题:使得NN模型更有效(在延迟方面,内存占用和能耗等),而仍然提供最佳的准确性/通用性权衡。这些努力大致可分为以下几类。 6 | A) 设计高效的神经网络模型架构:一项工作集中于优化神经网络模型根据其微结构[101、111,127、167、168、212、253、280](例如,内核类型深度卷积或低秩因子分解)作为其宏架构[100、101、104、110、214、233](例如,模块类型,如剩余模块或初始模块)。这里的经典技术大多找到了新的架构模块使用手动搜索,这是不可扩展的。因此,一项新的工作是设计自动化机器学习(AutoML)和神经结构搜索(NAS)方法。这些目标是以自动化的方式找到正确的在给定的模型大小约束下,深度和/或宽度[161、194、232、245、252、291]。我们有关NAS的最新调查,请参考[54]方法。 7 | B) 设计NN架构和硬件的协同设计:最近的另一项工作是适应(并共同设计)特定目标的神经网络架构硬件平台。这一点的重要性在于NN组件的开销(以延迟和能量)取决于硬件。例如,硬件使用专用缓存层次结构可以执行带宽绑定操作比硬件更有效没有这样的高速缓存层次结构。类似于NN架构设计,架构(architecture)硬件协同设计的初始方法是手动的,由专家进行调整/更改NN架构[70],然后使用自动化AutoML和/或NAS技术[22,23,100,252]。 8 | c) 修剪:减少NN的内存占用和计算成本应用修剪。在修剪中,具有小显著性的神经元(灵敏度)被移除,导致稀疏的计算图。这里,具有小显著性的神经元是其移除对模型输出/损失的影响最小作用修剪方法可大致分类进入非结构化修剪[49,86,139,143,191,257]和结构化修剪[91,106,156,166,274,275,279]。通过非结构化修剪,可以使用无论发生在何处,其显著性都很小。用这个方法,可以进行积极的修剪大多数NN参数,对模型的泛化性能。然而这种方法导致稀疏矩阵运算已知难以加速通常为内存绑定[21,66]。另一方面通过结构化修剪整个卷积滤波器)。这有更改层的输入和输出形状的效果和权重矩阵,因此仍然允许密集矩阵操作。然而,积极的结构化修剪通常导致显著的精度下降。培训和具有高度修剪/稀疏性的推理,而保持最先进的性能一个公开的问题[16]。我们推荐感兴趣的读者至[66,96,134]对相关工作进行全面调查修剪/稀疏。 9 | d) 知识蒸馏:模型蒸馏[3,95,150,177,195,207,269,270]涉及训练模型,然后将其作为教师来训练更为紧凑的模型。在学生模型的培养,模型的核心思想蒸馏是利用产生的“软”概率因为这些概率可以包含更多关于输入的信息。尽管在蒸馏方面,一个主要挑战是实现单独蒸馏的高压缩比。相比于量化和修剪,这可以保持性能与≥ 4×压缩(带INT8和较低的精度),知识蒸馏方法倾向于具有不可忽略的精度退化压缩。然而,知识蒸馏与现有方法(即量化和修剪)已显示出巨大的成功[195]。 10 | e) 量化:最后,量化是一种方法,在神经网络模型的训练和推理。而数值表示与量化问题与数字计算一样古老,神经网络提供了独特的改进的机会。本次调查量化主要集中在推理上,我们应该强调量化的重要成功参加过NN培训[10,35,57,130,247]。特别地,半精度和混合精度的突破培训[41,72,79,175]是在AI加速器。然而,事实证明在没有显著调整的情况下,达到一半精度以下,以及最近的量化研究大多集中在推论这种用于推断的量化是这篇文章。 11 | f) 量化与神经科学:松散相关NN量化神经科学的研究表明大脑以离散/量化形式存储信息,而不是以连续形式[171,236,240]。A.这种想法的流行理由是存储信息在连续的形式中,不可避免地会被噪声所破坏(其总是存在于物理环境中,包括我们的大脑热、感觉、外部、突触噪声等)[27,58]。然而,离散信号表示可能更多对这样的低噪声是鲁棒的。其他原因,包括离散表示[128,138,242]的更高的泛化能力及其在以下条件下的更高效率有限的资源[241]。我们请读者参考[228],以全面了解相关神经科学文献工作。 12 | 这项工作的目标是介绍当前的方法以及量化中使用的概念这方面的当前挑战和机遇研究在这样做的过程中,我们试图讨论相关工作。不可能讨论在短期调查;毫无疑问,我们错过了一些相关论文。我们提前向我们可能拥有的论文的读者和作者被忽视。 13 | ## 二、量化历史 14 | Gray和Neuhoff写了一篇关于1998年的量化历史[76]。文章是一篇非常好,值得全文阅读;然而为了方便读者,我们将简要总结这里的一些要点。量化,作为一种方法从大的(通常是连续的)集合中的输入值映射要在一个小的(通常是有限的)集合中输出值历史舍入和截断是典型的例子。量化与微积分的基础有关,相关的方法可以在19世纪早期看到(以及更早的),例如,在早期关于最小二乘法和大规模相关技术的工作中(由19世纪早期的标准)数据分析[225]。一早期的量化工作可以追溯到1867年离散化用于近似计算积分[206];随后,在1897年Shappard调查了舍入误差对积分结果[220]。最近,量化在数字信号处理中通常以数字形式表示信号的过程包括舍入,以及数值分析以及数值算法的实现,其中实现了对实数的计算使用有限精度算法。直到1948年,数字时代的到来当Shannon在通信的数学理论[215]量化的影响及其在编码理论中的应用正式提交。特别是,Shannon在他的使用相同数量的当感兴趣的事件具有不均匀的概率时,比特是浪费的。他认为方法是根据事件的概率,这个概念现在被称为可变速率量化。特别是霍夫曼编码受此激励[109]。在随后的工作中1959[216],Shannon引入了失真率函数(这提供了信号失真的下限编码之后)以及矢量量化的概念。(也在第IV-F节中简要讨论)。这个概念是扩展并在[53,55,67,208]中成为现实通信应用。其他重要历史当时信号处理中的量化研究周期包括[188],它引入了脉冲码调制(PCM)概念(提出的脉冲方法以近似/表示/编码采样的模拟信号),以及高分辨率量化的经典结果[14]。我们请感兴趣的读者参考[76],详细讨论这些问题。 15 | 在对涉及连续数学量的问题使用数值近似的算法中,量化以略有不同的方式出现,该领域也有悠久的历史,但随着数字计算机的出现也重新引起人们的兴趣。 在数值分析中,一个重要的概念曾经是(现在仍然是)适定问题——粗略地说,一个问题是适定的,如果: 该解决方案是独一无二的; 并且该解决方案持续依赖于某种合理拓扑中的输入数据。 此类问题有时称为条件良好的问题。 事实证明,即使在处理给定的条件良好的问题时,某些在某种理想化意义上“准确”解决该问题的算法在存在由舍入和截断误差的特性引入的“噪声”的情况下表现也很差。 这些舍入误差与仅用有限多位表示实数有关——一种指定的量化,例如,由 IEEE 浮点标准; 和截断错误的出现是因为实际上只能执行迭代算法的有限次数的迭代。 后者甚至在“精确算术”中也很重要,因为大多数连续数学问题在原则上什至不能通过有限的基本运算序列来解决; 但前者与量化有关。 这些问题导致了算法的数值稳定性的概念。 让我们将数值算法视为试图将输入数据 x 映射到“真实”解 y 的函数 f; 但由于舍入和截断错误,算法的输出实际上是其他一些 y 。 在这种情况下, 16 | 算法的前向误差为 ∆y = y∗ − y; 算法的后向误差是满足 f(x + Δx) = y 的最小 Δx。 因此,前向误差告诉我们准确或真实的答案与算法输出的结果之间的差异; 向后误差告诉我们我们实际运行的算法是什么输入数据准确解决。 算法的前向误差和后向误差与问题的条件数相关。 我们建议有兴趣的读者参考 [237] 以详细讨论这些问题。 17 | 18 | ## B.均匀量化 19 | 我们首先定义一个可以量化神经网络的权重和激活值的函数,这个函数将浮点数值映射到一个低精度范围,如图1所示。一个流行的定义如下: 20 | $$Q(r)=Int(r/S)-Z \tag{2}$$ 21 | $Q$是量化函数,$r$输入的浮点数据,$S$表示尺度,$Z$表示整型数据所在的0值,$Int$表示取整操作。当尺度$S$不变时,可以认为这种方式为均匀量化,否则为非均匀量化,如图2所示。另外可以将量化后地整型数据反映射为浮点数据,这种操作成为反量化,定义如下: 22 | $$\hat{R}=S(Q(r)+Z) \tag{3}$$ 23 | 必须指出经过反量化的数据一定程度上存在着失真现象。 24 | 25 | ## C.对称量化与非对称量化 26 | 均匀量化的一个重要因素是等式中比例因子$S$的选择。这个比例因子本质上将给定范围的实数值$r$ 划分为若干分区(如 [113, 133] 中所讨论): 27 | $$S=\frac{\beta-\alpha}{2^b-1} \tag{4}$$ 28 | 其中 $[α, β]$表示裁剪范围,我们用来裁剪实际值的有界范围,$b$是量化位宽。因此,为了定义比例因子,裁剪范围 $[α, β]$应首先确定。 选择的过程限幅范围通常称为校准。一个直接的选择是使用的最小值/最大值限幅范围的信号,即$α = r_{min}$,以及$β=r_{max}$最大。这种方法是一种非对称量化方案,因为裁剪范围不一定关于原点对称,即$α=-β$,如图 2(右)所示。 也可以通过选择一个使用对称量化方案$α = −β$的对称剪裁范围。 热门之选是根据的最小值/最大值来选择这些信号:$-α = β = max(|rmax|, |rmin|)$。不对称量化通常会导致更严格的限幅范围,因为与对称量化相比。 这是特别当目标权重或激活是重要的不平衡,例如 ReLU 之后的激活总是具有非负值。 使用对称量化,然而,简化了方程式中的量化函数。用$Z = 0$替换公式2中的零点: 29 | $$Q(r)=Int(\frac{r}{s}) \tag{5}$$ 30 | 这里,缩放因子有两种选择。第一种是覆盖全范围的$S$,如XX,对于全INT8来说就是[-128,127]。第二种是限制范围的$S$,即XX,这种得到的整型数据范围是[-127,127],全范围方法要更精确一点。对于权重量化,在实际应用中使用更广泛的方法是对称量化,因为将零值归零,可以减少计算成本。但是,对于激活值来说,由于量化所带来的偏移值可以被吸收在偏置值中,或是将这个作为累加器的初始化值。使用数据的min/max值来确定量化范围在对称和非对称量化范围比较受欢迎。然而这种方法在激活函数量化是容易收到奇异值影响,从而增加了不必要的量化范围,最终降低了量化的分辨率。而百分比校准方法可以解决这些问题[172].也就是说,用第i个最大/最小值用作 β/α来代替最大/最小值。 另一种方法是选择 α 和β 最小化 KL 散度(即信息损失)在实际值和量化值之间 [176]。我们建议有兴趣的读者参考 [255],其中不同的校准方法在各种模型上进行了评估。 31 | 32 | 对称量化与非对称量化的总结 33 | 对称量化将数据截断到一个对称范围,这种方法有利于硬件的实现,因此在公式2中会令Z=0,然而对于非对称的数据情况时,采用非对称量化方法会取得更好的效果。 34 | 35 | D.校准算法:动态校准和静态校准 36 | 37 | 截至目前,我们讨论了确定截断范围的不同的校准方法。量化方法另一个重要区别时当截断范围确定后,这个范围可以计算静态的权重,在大多数情况下参数在推理过程中是固定不变的。然而对于激活函数来说,会因为输入样本的不同而不同(例如公式1),因此可以分为动态量化和静态量化。 38 | 在动态量化中,对于激活函数映射时是动态改变,这需要实时统计和计算相关参数(例如最大值,最小值,百分比……等等),但也增加了计算负担。然而动态量化能活得一个更好的准确率对于每一个输入样本。 39 | 另外一个量化被称之为静态量化,即在推理前完成截断范围的计算,需要校准数据集来实现,这种方法不会增加潜在的计算量,但获得的准确率会低一点。截至目前,有很多不同的量化评估指标被提出,如用均值方差(MSE)来比较原始模型与量化模型的的权重分布[40,221,229,281],以及被称作是交叉熵的方法[189],另一种方案的构思是在训练网络期间进行截断,如LQNets [276], PACT [36], LSQ [56], and LSQ+ [15]。 40 | 41 | 动态量化与静态量化总结 42 | 虽然采用动态量化的截断方式可以获得更高的量化精度,但其缺点是会增加计算量。与之相对的是静态量化方式,会将所有输入样本截断到一个固定范围,不会增加计算量,但精度略逊一点。 43 | E.量化粒度 44 | 45 | 在大多数计算机视觉任务中,一个数据输入到一层后,会被不同卷积滤波器卷积,如图3所示。每一个卷积滤波器有不同的数据范围。因此另一个重要区别是对于权重来说,根据截断范围的粒度,可分为如下几种: 46 | a)层级量化:在这种方法中,截断范围是通过该层的卷积权重分布来确定的[133],如图三所示中的第三列,显示统计该层所有权重分布的范围,针对所有卷积层的权重使用同样一个范围来截断。尽管这种方法实现起来很简单,但是通常情况下效果不是特别好。例如,对于同一个参数来说,可能适用于较窄的范围分布的卷积核,但是会在较宽的范围分布丢失一定的分辨率。 47 | b)分组量化:将同一层内的多个卷积滤波器进行分组后进行截断,这样有助于处理卷积滤波器分配不均匀的情况。这样的方法在Q-BERT[219],Transformer[243]中活得不错的效果。然而这种方法会增加额外的计算量来计算不同的尺度因子。 48 | c)通道量化:裁剪范围的一个主流选择是为每个卷积滤波器使用固定值,独立于其他通道 [105,113, 133, 222, 276, 285],如图 3 最后一列所示。也就是说,每个 通道被分配了一个专用的比例因子。 这确保了更好的量化分辨率,并且通常会导致更高的精度。 49 | d)子通道量化:之前的方法可以发挥到极致,其中裁剪范围是根据卷积层或全连接层中的任何参数组确定的。 然而,这种方法可能会增加相当大的开销,因为在处理单个卷积层或全连接层时需要考虑不同的缩放因子。 因此,分组量化可以在量化分辨率和计算开销之间建立良好的折衷。 50 | 51 | 量化粒度总结:逐通道量化是目前量化卷积核的标准选择。它能够根据不同的卷积核选择不同的截断范围。 52 | 53 | F.非均匀量化 54 | 诸如 [25, 38, 62, 74, 79, 99, 118, 125,153, 159, 179, 189, 190, 238, 248, 256, 264, 266, 276,284]等一些工作在探索非均匀量化,所谓非均匀量化就是允许量化的间隔值非恒等的。公式6所示,式中Xi表示量化后的数据,$\delta_i$ 表示量化的步进(间隔值): 55 | $$Q(r)=X_i,r\in [\delta_i, \delta_i+1)\tag{7}$$ 56 | 具体来说,当实数值落在detai与detai+1之间时,量化器将其映射到Xi,而Xi是程非均匀分布的。 57 | 非均匀量化可以在一个固定的比特宽度下获得更高的准确率,因为它能准确捕捉到浮点数据的分布特征。例如许多非均匀量化方法被设计用于权重和激活的钟形分布,典型的基于规则的非均匀量化案例是使用对数分布[179,283],其中量化的步进和级别呈指数增长的,而不是线性。另一个主流的方式就是二进制量化. 58 | 59 | 非均匀量化总结:通常,非均匀量化使我们能够更好地捕获信号信息,通过分配位和非均匀地离散化参数范围。然而,非均匀量化方案通常难以在一般计算上有效部署硬件,例如 GPU 和 CPU。 因此,制服量化是目前事实上的方法,因为它简单性及其与硬件的有效映射。 60 | 61 | G.微调方法 62 | 63 | 通常情况下在量化之后有必要调整参数,如果在量化后的训练过程中进行调参,这种方式叫做量化感知训练(QAT);另一种方式就不需要重训练,被称为训练后量化(PTQ)。一个简单的对比如图4所示,下面将针对这种两种方式展开详细的讨论。 64 | 1)QAT:给定一个预训练模型,量化可能对这个模型引入扰动使得它降低准确率,这样可以通过量化参数重新训练NN模型来解决这个问题,使模型可以收敛到一个可以接受的范围内。一种主流的方法是使用量化感知训练(QAT),其中通常的前向和后向传播在量化的浮点模型,但模型参数是在每次梯度更新后量化(类似于投影梯度下降)。特别是,在以浮点精度执行权重更新后进行此投影很重要。 使用浮点执行反向传递很重要,因为累积量化精度的梯度会导致零梯度或具有高误差的梯度,特别是在低精度下 [42、80、81、107、159、186、204、231 ]。 65 | 反向传播的一个重要微妙之处是不可微分量化算子(等式 2)对待。 在没有任何近似的情况下,该算子的梯度几乎处处为零,因为方程式中的舍入操作。 2 是分段平面算子。 解决这个问题的一种流行方法是通过所谓的直通估计器 (STE) [13] 来近似该算子的梯度。 STE 基本上忽略了舍入操作并使用恒等函数对其进行近似,如图 5 所示。尽管 STE 的粗略近似,它经常在实践中效果很好,除了超低精度量化,如二进制量化 [8]。 [271] 的工作为这种现象提供了理论依据,它发现 STE 的粗梯度近似可以预期与种群梯度相关(对于 STE 的正确选择)。 从历史的角度来看,我们应该注意到 STE 的最初想法可以追溯到 [209, 210] 的开创性工作,其中使用恒等算子来近似二元神经元的梯度。 66 | 虽然 STE 是主流方法 [226、289],文献中也探索了其他方法 [2、25、31、59、144、164]。 我们首先应该提到 [13] 也提出了一个随机神经元作为 STE 的替代方法(这在第 III-H 节中进行了简要讨论)。 还提出了其他使用组合优化 [65]、目标传播 [140] 或 Gumbel softmax [116] 的方法。 另一类不同的替代方法尝试使用正则化运算符来强制量化权重。 这消除了在方程式中使用不可微分量化运算符的需要。 2.这些经常被提到作为非 STE 方法 [4、8、39、99、144、184、283]。该领域的最新研究包括 ProxQuant [8]它删除了量化公式等式中的舍入操作。而是使用所谓的 W 形非平滑正则化函数将权重强制为量化值。 其他值得注意的研究包括使用脉冲训练来近似不连续点的导数 [45],或者用浮点和量化参数的仿射组合替换量化权重 [165]。 [181] 最近的工作也提出了 AdaRound,这是一种自适应舍入方法,可以替代舍入到最近的方法。 尽管这一领域的工作很有趣,但这些方法通常需要大量调整,到目前为止,STE 方法是最常用的方法。 67 | 除了调整模型参数外,一些先验工作发现在 QAT 期间学习量化参数也很有效。 PACT [36] 学习均匀量化下激活的裁剪范围,而 QIT [125] 也学习量化步骤和级别作为非均匀量化设置的扩展。 LSQ [56] 引入了一种新的梯度估计来学习 QAT 期间非负激活(例如 ReLU)的缩放因子,并且LSQ+ [15] 进一步将这一想法扩展到产生负值的一般激活函数,例如 swish [202] 和 h-swish [100]。 68 | QAT量化方法总结: QAT 已被证明有效尽管 STE 的粗略近似。 然而QAT 的主要缺点是重新训练 NN 模型的计算成本。 这种重新训练可能需要执行数百个 epoch 以恢复精度,特别是对于低位精度量化。 如果要长期部署量化模型,并且效率和准确性特别重要,那么重新训练的这种投资可能是值得的。 然而,情况并非总是如此,因为某些型号的使用寿命相对较短。 接下来,我们讨论没有这种开销的替代方法。 69 | 2)训练后量化(PTQ): 与QAT相对应的就是训练后量化,在量化时它没有微调的过程 [11, 24, 40,60, 61, 68, 69, 89, 108, 142, 148, 174, 182, 223, 281],因此他的开销非常低。同样地与QAT不同地时,它不需要用于重新训练的训练集数据,并且有一个优势就是PTQ可以应用于数据受限或者是未标注的数据集上。然而这种情况可能会导致更低的精度,尤其是在低精度量化的场合。 70 | 对于上诉问题,研究人员已经提出了许多方法来解决PTQ精度下降的问题。例如,[11, 63] 观察到均值和量化后权重值的方差并提出偏差校正方法; [174、182] 表明均衡不同层或通道之间的权重范围(和隐式激活范围)可以减少量化误差。ACIQ [11] 分析计算最佳限幅范围和 PTQ 的通道位宽设置。 虽然ACIQ可以达到低精度退化,ACIQ 中使用的逐通道激活量化很难有效地部署在硬件。 为了解决这个问题,OMSE 方法 [40]删除激活时的通道量化和提出通过优化L2距离来进行PTQ在量化张量和对应的张量之间浮点张量。 71 | 此外,为了更好地减轻异常值对 PTQ 的不利影响,[281] 中提出了一种异常值通道拆分 (OCS) 方法,该方法将包含的通道复制并减半离群值。 另一个值得注意的工作是 AdaRound [181]这表明朴素的舍入到最近的方法量化可能会反直觉地导致次优解决方案,并提出了一种自适应舍入方法,可以更好地减少损失。 虽然 AdaRound 将量化权重的变化限制在与其全精度同行的 ±1 以内,但 AdaQuant [108] 提出了一种更通用的方法,允许量化权重根据需要变化。 PTQ 方案可以发挥到极致,在量化过程中既不使用训练数据也不使用测试数据(也称为零镜头场景),这将在接下来讨论。 72 | PTQ量化总结:在 PTQ 中,所有权重和激活量化参数都是在没有对 NN 模型进行任何重新训练的情况下确定的。 因此,PTQ 是一种非常快速的神经网络模型量化方法。 然而,与 QAT 相比,这通常是以较低的准确性为代价的。3)零样本量化:如前所述,在为了实现最小的精度下降后量化,我们需要访问整个分数训练数据。 首先,我们需要知道范围激活,以便我们可以裁剪值并确定适当的比例因子(通常称为文献中的校准)。 二、量化模型经常需要微调来调整模型参数并恢复精度下降。 在许多情况下,但是,无法访问原始训练数据在量化过程中。 这是因为训练数据集太大而无法分发,专有(例如,谷歌的 JFT-300M),或敏感由于安全或隐私问题(例如医疗数据)。 一些已经提出了不同的方法来解决这个问题挑战,我们称之为零样本量化(ZSQ)。 受[182]的启发,这里我们首先描述两个不同级别的零样本量化。 73 | • 级别1:无数据且无微调(ZSQ + PTQ) 74 | • 级别2:无数据但需要微调(ZSQ +QAT) 75 | 级别 1 允许更快、更容易的量化,无需任何微调。 微调通常很耗时,并且通常需要额外的超参数搜索。但是,2 级通常会产生更高的精度,因为微调有助于量化模型恢复精度下降,特别是在超低位精度设置中 [85]。 [182] 的工作使用 1 级方法,该方法依赖于均衡权重范围和纠正偏差误差,使给定的 NN 模型更适合在没有任何数据或微调。 然而,由于此方法基于(分段)线性激活函数的尺度等方差特性,因此对于具有非线性激活的 NN,例如具有 GELU [94] 激活的 BERT [46] 或 MobileNetV3,它可能不是最优的 [100] 带有 swish 激活 [203]。 76 | ZSQ 中一个流行的研究分支是生成类似于训练目标预训练模型的真实数据的合成数据。 然后将合成数据用于校准和/或微调量化模型。 该领域的一项早期工作 [28] 利用生成对抗网络 (GAN) [75] 获取合成数据一代。 使用预训练模型作为鉴别器,它训练生成器,使其输出可以被鉴别器很好地分类。 然后,使用从生成器收集的合成数据样本,量化模型可以通过全精度对应的知识蒸馏进行微调(更多详细信息,请参见第 IV-D 节)。 但是,此方法无法捕获内部真实数据的统计数据(例如,中间层激活的分布),因为它仅使用模型的最终输出生成。 不考虑内部统计数据的合成数据可能无法正确代表真实数据分布 [85]。 到为了解决这个问题,许多后续工作使用存储在批归一化 (BatchNorm) [112] 中的统计数据,即通道均值和方差,以生成更真实的合成数据。 特别是,[85]通过直接最小化内部统计的 KL 散度来生成数据,并使用合成数据来校准和微调量化模型。 此外,ZeroQ [24] 表明合成数据可用于灵敏度测量和校准,从而在无需访问训练/验证数据的情况下实现混合精度训练后量化。 ZeroQ 还将 ZSQ 扩展到目标检测任务,因为它不依赖于生成数据时在输出标签上。 [85] 和 [24] 都将输入图像设置为可训练参数,并直接对其进行反向传播,直到它们的内部统计数据变得与真实数据相似。更进一步,最近的研究 [37, 90, 259] 发现 训练和利用生成模型是有效的可以更好地捕捉真实的数据分布,生成更真实的合成数据。 77 | 78 | ZSQ 总结: 零镜头(又名无数据)量化执行整个量化,无需访问训练/验证数据。 这对于想要加速部署机器学习即服务 (MLaaS) 的提供商来说尤为重要客户的工作量,而无需访问他们的数据集。 此外,这对于安全或隐私问题可能会限制对训练数据的访问的情况很重要。 79 | H.随机量化 80 | 在推理过程中,量化方案通常是确定性的。 然而,这不是唯一的可能性,一些工作探索了用于量化感知训练的随机量化以及降低精度的训练 [13, 79]。 高层的直觉是,与确定性量化相比,随机量化可能允许神经网络探索更多。 一个受欢迎的支持的论点是,小的权重更新可能不会导致任何权重变化,因为舍入操作可能总是返回相同的权重。 然而,启用随机舍入可能会为 NN 提供逃逸的机会,从而更新其参数。 81 | 更正式地说,随机量化将浮点数向上或向下映射,概率与权重更新的幅度相关联。 例如,在 [29, 79] 中,方程式中的 Int 运算符。 2 定义为 82 | $$ 83 | \operatorname{Int}(x)= \begin{cases}\lfloor x\rfloor & \text { with probability }\lceil x\rceil-x \\ \lceil x\rceil & \text { with probability } x-\lfloor x\rfloor\end{cases} \tag{8} 84 | $$ 85 | 然而这种定义不能应用于二进制量化,因此可以拓展为: 86 | $$ 87 | \operatorname{Binary}(x)= \begin{cases}-1 & \text { with probability } 1-\sigma(x), \\ +1 & \text { with probability } \sigma(x)\end{cases} \tag{9} 88 | $$ 89 | 最近,QuantNoise [59] 中引入了另一种随机量化方法。 QuantNoise 在每次前向传递期间量化不同的随机权重子集,并使用无偏梯度训练模型。 这允许较低位精度的量化,而不会在许多计算机视觉和自然界中出现明显的精度下降语言处理模型。 然而,随机量化方法的一个主要挑战是为每次权重更新创建随机数的开销,因此它们尚未在实践中得到广泛采用。 90 | ## 高级概念:8位以下的量化 91 | 在本节中,我们将讨论更高级的量化主题,这些主题主要用于 sub-INT8 量化。 我们将首先在第 IV-A 节中讨论模拟量化及其与仅整数量化的区别。 之后,我们将讨论不同的第 IV-B 节中的混合精度量化方法,随后是第 IV-C 节中的硬件感知量化。然后我们将在第 IV-D 节中描述如何使用蒸馏来提高量化精度,然后我们将在第 IV-E 节中讨论极低位精度的量化。 最后,我们将在第 IV-F 节中简要描述矢量量化的不同方法。 92 | A.模拟和仅整数量化 93 | 部署量化 NN 模型有两种常见方法,模拟量化(也称为伪量化)和仅整数量化(也称为定点量化)。 在模拟量化中,量化后的模型参数以低精度存储,但是操作(例如矩阵乘法和卷积)是用浮点运算进行的。 因此,量化参数需要在浮点运算之前进行反量化,如图 6(中)所示。 因此,人们无法充分受益于具有模拟量化的快速高效的低精度逻辑。 然而,在纯整数量化中,所有这些运算是使用低精度整数运算 [113、132、154、193、267] 执行的,如图 6(右)所示。 这允许使用高效的整数算法执行整个推理,而无需对任何参数或激活进行任何浮点反量化。 94 | 一般来说,使用浮点运算进行全精度推理可能有助于最终的量化精度,但这是以无法从低精度逻辑中受益为代价的。 与全精度对应物相比,低精度逻辑在延迟、功耗和面积效率。 如图 7(左)所示,许多硬件处理器,包括 NVIDIA V100 和 Titan RTX,都支持低精度算法的快速处理,可以提高推理吞吐量和延迟。 此外,如图 7(右)所示,对于 45 纳米技术 [97],低精度逻辑明显更多在能源和面积方面高效。 例如,与 FP32 加法相比,执行 INT8 加法的能效提高 30 倍,面积效率提高 116 倍 [97]。 95 | 值得注意的纯整数量化工作包括 [154],它将批量归一化融合到之前的卷积层中,以及 [113],它提出了一种针对具有批量归一化的残差网络的纯整数计算方法。 然而,这两种方法都仅限于 ReLU 激活。 [132]地址的近期工作通过使用整数算法逼近 GELU [94]、Softmax 和层归一化 [6] 并将仅整数量化进一步扩展到 Transformer [243] 架构来实现这一限制。 96 | 值得注意的纯整数量化工作包括 [154],它将批量归一化融合到之前的卷积层中,以及 [113],它提出了一种针对具有批量归一化的残差网络的纯整数计算方法。 然而,这两种方法都仅限于 ReLU 激活。 [132] 最近的工作通过使用整数算法逼近 GELU [94]、Softmax 和层归一化 [6] 解决了这一限制,并进一步将仅整数量化扩展到 Transformer [243] 架构。 97 | 二元量化是另一类纯整数量化,其中所有缩放都是用二元数执行的,二元数是有理数,其分子为整数值,分母为 2 的幂 [267]。 这导致计算图只需要整数加法、乘法、位移位,不需要整数除法。 重要的是,在这种方法中,所有的加法(例如残差连接)都被强制具有相同的二元尺度,这可以使加法逻辑更简单,效率更高。 98 | 总结(模拟与仅整数量化)。 通常,与模拟/伪量化相比,仅整数和二元量化更可取。 这是因为仅整数使用较低精度的逻辑进行算术运算,而模拟量化使用浮点逻辑来执行运算。 99 | 然而,这并不意味着假量化永远没有用。 事实上,伪量化方法对于带宽限制而非计算限制的问题可能是有益的,例如在推荐系统中 [185]。 对于这些任务,瓶颈是内存占用和从内存加载参数的成本。 因此,对于这些情况,执行伪量化是可以接受的。 100 | B.混合精度量化 101 | 很容易看出,当我们使用较低精度的量化时,硬件性能会提高。 然而,将模型统一量化为超低精度会导致精度显着下降。 可以通过混合精度量化来解决这个问题 [51, 82,102、162、187、199、211、239、246、249、263、282、286]。在这种方法中,每一层都以不同的位精度进行量化,如图 8 所示。这种方法的一个挑战是 选择此位设置的搜索空间是层数的指数。已经提出了不同的方法来解决这个巨大的搜索空间。 102 | 为每一层选择这种混合精度本质上是一个搜索问题,为此提出了许多不同的方法。 [246] 最近的工作提出了一种基于强化学习(RL)的方法来自动确定量化策略,以及作者使用硬件模拟器来获取硬件加速器在 RL 代理反馈中的反馈。 论文 [254] 将混合精度配置搜索问题表述为神经架构搜索 (NAS) 问题,并使用可微分 NAS (DNAS) 方法有效地探索搜索空间。 这些基于探索的方法 [246、254] 的一个缺点是它们通常需要大量的计算资源,并且它们的性能通常对超参数和甚至初始化。 103 | 另一类混合精度方法使用周期训练混合精度模型的函数正则化通过自动区分不同的层和它们在准确性方面的重要性各不相同,而学习它们各自的位宽 [184]。 104 | 与这些基于探索和正则化的方法不同,HAWQ [51] 引入了一种自动方法来根据模型的二阶灵敏度找到混合精度设置。 理论上表明,二阶算子(即 Hessian)的迹可用于测量 a 的灵敏度量化层[50],类似于修剪的结果在 Optimal Brain Damage 的开创性工作中 [139]。 在 HAWQv2 中,这种方法被扩展到混合精度激活量化 [50],并被证明比基于 RL 的混合精度方法快 100 倍以上 [246]。 最近,在 HAWQv3 中,引入了仅整数、硬件感知量化 [267]提出了一种快速整数线性规划方法来为给定的应用程序特定约束(例如,模型大小或延迟)找到最佳位精度。 这项工作还通过直接将它们部署在 T4 GPU 上解决了有关混合精度量化硬件效率的常见问题,显示速度高达 50% 与 INT8 量化相比,采用混合精度 (INT4/INT8) 量化。 105 | 摘要(混合精度量化)。 混合精度量化已被证明是一种有效且硬件效率高的方法,可用于不同神经网络模型的低精度量化。 在这种方法中,神经网络的层被分为对量化敏感/不敏感,并且每一层都使用较高/较低的位。 像这样,人们可以最大限度地减少精度下降,并且仍然受益于减少的内存占用和更快的低精度量化速度。 最近的工作 [267] 也表明这种方法是硬件高效的,因为混合精度仅用于跨操作/层。 106 | 量化的目标之一是改善推理延迟。 然而,并不是所有的硬件在某个层/操作被量化后都提供相同的加速。 事实上,量化的好处是硬件相关,片上内存、带宽和缓存层次结构等许多因素都会影响量化速度。 107 | 重要的是要考虑这一事实,以便通过硬件感知量化实现最佳收益 [87,91, 246, 250, 254, 256, 265, 267]。 特别是,工作 [246] 使用强化学习代理来确定量化的硬件感知混合精度设置,基于具有不同位宽的不同层的延迟查找表。 但是,这种方法使用模拟的硬件延迟。 为了解决这个问题,[267] 最近的工作直接在硬件中部署量化操作,并测量不同量化位精度的每一层的实际部署延迟。 108 | D.蒸馏辅助量化 109 | 量化中一个有趣的工作是结合模型蒸馏来提高量化精度 [126, 177, 195, 267]。 模型蒸馏 [3, 95, 150,177, 195, 207, 268, 270, 289] 是一种使用精度更高的大型模型作为教师的方法帮助训练一个紧凑的学生模型。 110 | $$ 111 | \mathcal{L}=\alpha \mathcal{H}\left(y, \sigma\left(z_s\right)\right)+\beta \mathcal{H}\left(\sigma\left(z_t, T\right), \sigma\left(z_s, T\right)\right) \tag{10} 112 | $$ 113 | 在此期间训练学生模型,而不是仅仅使用ground-truth 类标签,模型蒸馏建议利用教师产生的软概率,其中可能包含输入的更多信息。 那是整体损失函数包括学生损失和蒸馏损失,通常表示为: 114 | $$ 115 | p_i=\frac{\exp \frac{z_i}{T}}{\sum_j \exp \frac{z_j}{T}} \tag{11} 116 | $$ 117 | 以前的知识蒸馏方法侧重于探索不同的知识源。 [95、150、192] 使用 logits(软概率)作为知识来源,而 [3、207、269] 试图利用中间层的知识。 教师模型的选择也得到了很好的研究,其中 [235、273] 使用多个教师模型共同监督学生模型,而 [43, 277] 在没有额外教师模型的情况下应用自蒸馏。 118 | E.极端量化 119 | 二值化是最极端的量化方法,其中量化值被限制为 1 位表示,从而大大减少了 32 倍的内存需求。 除了内存优势外,二元(1 位)和三元(2 位)运算,通常可以使用按位算法进行有效计算,并且可以在更高的精度(例如 FP32 和 INT8)上实现显着的加速。 例如,NVIDIA V100 GPU 上的峰值二进制算法比 INT8 高 8 倍。 然而,朴素的二值化方法会导致精度显着下降。 因此,有大量工作提出了不同的解决方案来解决这个问题 [18, 25, 47, 52, 77, 78, 83, 92, 93, 120,122, 124, 129, 131, 135, 141, 149 , 155, 160, 196, 198, 205, 217, 249, 251, 260, 262, 288, 290]。 120 | 这里的一项重要工作是 BinaryConnect [42],它将权重限制为 +1 或 -1。 在这种方法中,权重保持为真实值,并且仅在前向和反向传递期间进行二值化以模拟二值化效果。 在正向传播过程中,实值权重根据符号函数转换为+1或-1。 然后可以使用带有 STE 的标准训练方法训练网络,以通过不可微分的符号函数传播梯度。 Binarized NN [107] (BNN) 通过对激活和权重进行二值化来扩展这个想法。 联合二值化权重和激活有额外的好处改善延迟,因为昂贵的浮点矩阵乘法可以用轻量级 XNOR 代替操作之后是位计数。 另一个有趣的工作是二进制权重网络 (BWN) 和 [45] 中提出的 XNORNet,它们通过将比例因子合并到权重并使用 +α 或 -α 而不是 +1 或 -1 来实现更高的精度。 α是比例因子,即选择最小化实值之间的距离权重和由此产生的二值化权重。换句话说,实值权重矩阵 W 可以表示为 W ≈ αB,其中 B 是满足以下优化问题的二进制权重矩阵: 121 | $$ 122 | \alpha, B=\operatorname{argmin}\|W-\alpha B\|^2 . \tag{12} 123 | $$ 124 | 此外,受到许多学习权重接近于零的观察的启发,已经尝试通过使用三元值(例如 +1、0 和 -1)约束权重/激活来三元化网络,从而明确允许量化值是 零 [145, 159]。 三元化还通过像二值化那样消除昂贵的矩阵乘法来大大减少推理延迟。 后来,三元-二元网络 (TBN) [244] 表明结合二元网络权重和三元激活可以在准确性和计算效率之间实现最佳折衷。 125 | 由于朴素的二值化和三值化方法通常会导致严重的精度下降,特别是对于 ImageNet 分类等复杂任务,已经提出了许多解决方案来减少极端量化中的精度下降。 [197] 的工作将这些解决方案大致分为三个分支。 在这里,我们简要讨论每个分支,我们请感兴趣的读者参考 [197] 以了解更多详情。 126 | a) 量化误差最小化:解决方案的第一个分支旨在最小化量化误差,即真实值与量化值之间的差距 [19、34、62、103、151、158、164、169、178、218 , 248]。 HORQ [151] 和 ABC-Net [158] 不是使用单个二进制矩阵来表示实值权重/激活,而是使用多个二进制矩阵的线性组合,即 W ≈ α1B1 + · · · + αMBM,以减少 量化误差。 受激活的二值化会降低它们对后续卷积块的表示能力这一事实的启发,[178] 和 [34] 表明,更广泛的网络(即具有更多过滤器的网络)的二值化可以在 准确性和模型大小。 127 | b)Improved Loss function:另一个分支的工作侧重于损失函数的选择[48,98,99,251,284]。 这里的重要工作是损失感知二值化和三值化 [98, 99],它们直接最小化关于二值化/三值化权重的损失。 这与其他仅近似权重而不考虑最终损失的方法不同。 全精度教师模型的知识蒸馏也被证明是一种很有前途的方法,可以恢复二值化/三值化后的精度下降 [33、177、195、260]。 128 | c) 改进的训练方法:另一个有趣的工作分支旨在为二元/三元模型提供更好的训练方法 [5、20、44、73、160、164、285、288]。 许多努力指出了 STE 在通过符号函数反向传播梯度方面的局限性:STE 仅传播 [-1, 1] 范围内的权重和/或激活的梯度。 为了解决这个问题,BNN+ [44] 引入了符号函数导数的连续逼近,而 [198、261、272] 将符号函数替换为平滑、可微的函数,逐渐锐化并逼近符号函数。 Bi-Real Net [164] 引入了将激活连接到连续块中的激活的身份快捷方式,通过它可以传播 32 位激活。 虽然大多数研究侧重于减少推理时间延迟,但 DoReFa-Net [285] 除了量化权重和激活之外还量化了梯度,以加速训练。 129 | 极端量化已经成功地大大减少了推理/训练延迟以及许多 CNN 模型在计算机视觉任务中的模型大小。 最近,有人尝试将这种想法扩展到自然语言处理 (NLP) 任务 [7, 119,121, 278]。 考虑到令人望而却步的模型尺寸和最先进的 NLP 模型(例如 BERT [46]、RoBERTa [163] 和 GPT 系列 [17,200, 201])的推理延迟,这些模型在大量未标记数据、极端量化上进行了预训练 正在成为将 NLP 推理任务带到边缘端。 130 | 极端量化总结:极低位精度量化是一个非常有前途的研究方向。 然而,与基线相比,现有方法通常会导致高精度下降,除非执行非常广泛的调整和超参数搜索。 但对于不太关键的应用程序,这种精度下降可能是可以接受的。 131 | E.向量量化 132 | 正如第二部分所讨论的,量化并不是在机器学习中发明的,但在过去的一个世纪里在信息论中得到了广泛的研究,特别是在数字信号处理领域作为一种压缩工具。 然而,机器学习量化方法之间的主要区别在于,从根本上说,我们与原始信号相比,对以最小变化/误差压缩信号不感兴趣。 相反,我们的目标是找到一种精度降低的表示,以尽可能减少损失。 因此,如果量化的权重/激活远离非量化的权重/激活,这是完全可以接受的。 133 | 话虽如此,DSP 中的经典量化方法中有很多有趣的想法已应用于 NN 量化,特别是矢量量化[9]。 特别是,[1, 30, 74,84, 117, 170, 180, 189, 256] 的工作将权重聚类为不同的组,并在推理过程中使用每个组的质心作为量化值。 如方程式所示。 13、i是张量中权重的索引,c1,...,ck是聚类找到的k个质心,cj是wi对应的质心。 聚类后权重wi将在码本中有一个与 cj 相关的簇索引 j 134 | (查找表)。 135 | $$ 136 | \min _{c_1, \ldots, c_k} \sum_i\left\|w_i-c_j\right\|^2 . \tag{13} 137 | $$ 138 | 已经发现,使用 k 均值聚类是足以将模型尺寸减小多达 8 倍而无需精度显着下降 [74]。 在此之上,联合应用基于 k-means 的矢量量化剪枝和霍夫曼编码可以进一步减少模型大小 [84]。 139 | 乘积量化 [74, 227, 256] 是向量量化的扩展,其中权重矩阵被划分为子矩阵,向量量化应用于每个子矩阵。 除了基本的产品量化方法外,更细粒度的聚类使用可以进一步提高准确性。 例如,在 [74] 中,k 均值乘积量化后的残差被进一步递归量化。 在 [189] 中,作者对更重要的量化范围应用了更多的集群,以更好地保存信息。 140 | ## 五、量化与硬件处理器 141 | 我们已经说过,量化不仅可以减小模型大小,还可以实现更快的速度和更少的功耗,特别是对于具有低精度逻辑的硬件。 因此,量化对于物联网和移动应用程序中的边缘部署尤为重要。 边缘设备通常具有严格的资源限制,包括计算、内存和重要的功率预算。 对于许多深度 NN 模型来说,这些通常成本太高而无法满足。 此外,许多边缘处理器不支持浮点运算,尤其是在微控制器中。 142 | 在这里,我们在量化的背景下简要讨论不同的硬件平台。 ARM Cortex-M 是一组 32 位 RISC ARM 处理器内核,专为低成本和高能效的嵌入式设备而设计。 例如,STM32 系列是微控制器 143 | 基于也用于边缘神经网络推理的 ARM Cortex-M 内核。 由于某些 ARM Cortex-M 内核不包含专用浮点单元,因此应在部署前首先对模型进行量化。 CMSIS-NN [136] 是 ARM 的一个库,可帮助量化 NN 模型并将其部署到 ARM Cortex-M 内核上。 具体来说,该库利用具有两个缩放因子的幂的定点量化 [113、154、267],以便可以通过移位操作有效地执行量化和反量化过程。 GAP-8 [64],一个 RISC-V SoC(片上系统)使用专用 CNN 加速器进行边缘推理,是另一个仅支持整数运算的边缘处理器示例。 虽然可编程通用处理器因其灵活性而被广泛采用,但 Google Edge TPU 是一种专用 ASIC 芯片,是另一种用于在边缘运行推理的新兴解决方案。与运行在拥有大量计算资源的谷歌数据中心的 Cloud TPU 不同,Edge TPU 专为小型低功耗设备设计,因此仅支持 8 位运算。 NN 模型必须使用 TensorFlow 的量化感知训练或训练后量化进行量化。 144 | 图 9 绘制了广泛用于边缘神经网络推理的不同商业边缘处理器的吞吐量。 在过去几年中,边缘处理器的计算能力有了显着提高,这使得以前只能使用昂贵的神经网络模型进行部署和推理成为可能 145 | 在服务器上。 量化与高效的低精度逻辑和专用深度学习加速器相结合,一直是此类边缘处理器发展的重要推动力。 146 | 虽然量化是许多边缘处理器不可或缺的技术,但它也可以为非边缘处理器带来显着的改进,例如,满足服务水平协议 (SLA) 要求,例如 99% 的延迟。 一个很好的例子是由最近的 NVIDIA Turing GPU,特别是 T4 GPU,其中包括 Turing Tensor Core。 Tensor Core 是专为高效低精度矩阵乘法而设计的专用执行单元。 147 | ## 六、未来的研究方向量化 148 | 在这里,我们简要讨论了未来量化研究的几个高级挑战和机遇。 这被分解为量化软件、硬件和神经网络架构的协同设计、耦合压缩方法和量化训练。 149 | 量化软件:使用当前的方法,可以直接量化不同的 NN 模型并将其部署到 INT8,而不会损失准确性。 有几个软件包可用于部署 INT8 量化模型(例如,Nvidia 的 TensorRT、TVM、 150 | 等),每个都有很好的文档。 此外,实现也非常优化,可以很容易地观察到量化速度加快。 然而,用于较低位精度量化的软件并不广泛,有时甚至不存在。 例如,Nvidia 的 TensorRT 目前不支持 sub-INT8 量化。 此外,对 INT4 量化的支持最近才添加到 TVM [267]。 最近的工作有 151 | 表明 INT4/INT8 的低精度和混合精度量化在实践中有效 [51、82、102、108,187、199、211、239、246、246、249、263、267、286]。 因此,开发用于低精度量化的高效软件 API 将产生重要影响。 152 | 硬件和 NN 架构协同设计:如上所述,低精度量化中的经典工作与机器学习中最近的工作之间的一个重要区别是,NN 参数可能具有非常不同的量化值,但仍然可以很好地泛化。 例如,具有量化感知在训练中,我们可能会收敛到一个不同的解决方案,远离具有单精度参数的原始解决方案,但仍然可以获得很好的准确性。 人们可以利用这种自由度,并在量化时调整神经网络架构。 例如, 153 | [34] 最近的工作表明,改变 NN 架构的宽度可以减少/消除量化后的泛化差距。 未来的一项工作是在模型被量化时联合调整其他架构参数,例如深度或单个内核。 未来的另一项工作是将这种协同设计扩展到硬件架构。 这可能特别有用对于 FPGA 部署,因为可以探索许多不同的可能硬件配置(例如乘法累加元素的不同微体系结构),然后将其与神经网络体系结构和量化协同设计相结合。 154 | 耦合压缩方法:如上所述,量化只是有效部署神经网络的方法之一。 其他方法包括高效的神经网络架构设计、硬件和神经网络架构的协同设计、剪枝和知识蒸馏。量化可以与这些其他方法相结合。然而,目前很少有工作探索这些方法的最佳组合是什么。 例如,修剪和量化可以一起应用于模型以减少其开销 [87、152],了解结构化/非结构化修剪和量化的最佳组合很重要。 同样,另一个未来的方向是研究之间的耦合这些方法和上述其他方法。 155 | 量化训练:也许量化最重要的用途是用半精度加速神经网络训练 [41、72、79、175]。 这使得能够使用更快、更节能的低精度逻辑进行训练。 然而,很难将其进一步推向 INT8 精度训练。 虽然该领域存在一些有趣的工作 [10、26,123、137、173],但所提出的方法通常需要大量超参数调整,或者它们仅适用于一些相对简单的学习任务的 NN 模型。 基本问题是,对于 INT8 精度,训练会变得不稳定和发散。 应对这一挑战可能会对多种应用产生重大影响,尤其是对于边缘训练。 156 | ## 七、总结与结论 157 | 一旦抽象数学计算适用于数字计算机上的计算,这些计算中的数值的有效表示、操作和通信问题就出现了。 与数值表示问题密切相关的是量化问题:在什么方式应该是一组连续的实数值分布在一组固定的离散数字上以尽量减少所需的位数,也最大限度地提高伴随计算的准确性?虽然这些问题与计算机科学一样古老,这些问题与设计特别相关高效的神经网络模型。有几个原因首先,神经网络是计算密集型的。 所以数值的有效表示尤其重要的。 其次,大多数当前的 NN 模型都非常依赖 158 | 过度参数化。 因此,有充足的机会在不影响准确性的情况下降低位精度。第三,NN 模型的分层结构提供了探索的额外维度。 因此,不同层NN对损失函数有不同的影响,这激发有趣的方法,例如混合精度量化。 159 | 从浮点表示转向以八位/四位或更少位表示的低精度固定整数值有可能减少内存占用和延迟。[157] 显示流行计算机视觉模型的 INT8 推理,包括使用 TVM [32] 的 ResNet50 [88]、VGG-19 [224] 和 inceptionV3 [230]量化库,可以在 NVIDIA GTX 1080 上分别实现 3.89×、3.32× 和 5.02× 加速。 [213] 进一步表明,与 INT8 对应物相比,ResNet50 的 INT4 推理可以在 NVIDIA T4 和 RTX 上带来额外 50-60% 的加速,强调使用较低位精度来最大化效率的重要性。 最近,[267] 利用混合精度量化为 ResNet50 实现了 23% 的加速,与没有精度下降的 INT8 推理相比,[132] 将仅 INT8 推理扩展到 BERT比 FP32 推理快 4.0 倍的模型。 虽然上述工作侧重于 GPU 加速,但 [114] 还通过各种计算机视觉的 INT8 量化,在 Intel Cascade Lake CPU 和 Raspberry Pi4(均为非 GPU 架构)上分别获得了 2.35 倍和 1.40 倍的延迟加速楷模。 因此,正如我们的参考书目所证明的那样,NN 模型中的量化问题一直是一个非常活跃的研究领域。 160 | 在这项工作中,我们试图为这些非常不同的工作带来一些概念结构。 我们首先讨论了许多量化应用所共有的主题,例如均匀、非均匀、对称、非对称、静态和动态量化。 然后我们考虑了更独特的量化问题NN 的量化。 这些包括分层、分组、通道和子通道量化。 我们进一步考虑了训练和量化之间的相互关系,并讨论了量化感知训练与训练后量化相比的优缺点。 对量化和训练之间关系的进一步讨论是数据可用性的问题。 极端情况其中一个是训练中使用的数据,由于隐私等各种合理原因,不再可用。 这激发了零镜头量化的问题。 161 | 由于我们特别关注针对边缘部署的高效神经网络,因此我们考虑了该环境独有的问题。 这些包括导致参数由少于 8 位表示的量化技术,可能低至二进制值。 我们还考虑了仅整数量化的问题,这使得神经网络能够部署在通常缺少浮点单元的低端微处理器上。 162 | 通过本次调查及其组织,我们希望提供当前神经网络量化研究的有用快照,并提供一个智能组织来简化对该领域未来研究的评估。 -------------------------------------------------------------------------------- /神经网络压缩算法与硬件加速相关课程: -------------------------------------------------------------------------------- 1 | 此页用于收集神经网络模型压缩算法与硬件加速相关课程,课程来源主要来自相关高校或研究结构以及工业界的公布的教程,教程的形式不限于公开课视频和课件,本人并不能保证课程的质量和原创性。仅做学习时的参考: 2 | 3 | 一、深度学习的模型加速与压缩 4 | 课程来源:中国台湾省国立杨明交通大学电子研究所录制的公开课 5 | 哔哩哔哩链接:https://www.bilibili.com/video/BV1yX4y1A7Ak?p=1 6 | PDF课件:https://ocw.nctu.edu.tw/course/Lecture%20model%20acceleration%20and%20compression%2020191222.pdf 7 | 任课老师:張添烜(Tian-Sheuan Chang) 8 | 二、开源代码 9 | 开发框架:pytorch 10 | 链接:https://pan.baidu.com/s/1beeaLtVRoJ0WqvM6CbHOxg (全部已经给你打包好) 11 | 提取码:tfe7 12 | 网络模型:LeNet5 13 | 数据集:MNIST 14 | --------------------------------------------------------------------------------