摘要:深度神经网络(DNNs)继续取得重大进展,解决了从图像分类到翻译或增强学习的任务。这个领域的一个受到广泛关注的方面是在资源受限环境中(如移动或嵌入式设备)高效执行深度模型。本文聚焦于这一问题,并提出了两种新的压缩方法,这两种方法共同利用了权重量化和大型网络(称为“教师”网络)到压缩的“学生”网络的蒸馏。我们提出的第一种方法称为量化蒸馏,该方法在训练过程中利用蒸馏,通过将与教师网络相关的蒸馏损失纳入到一个较小的学生网络的训练中,该学生网络的权重被量化到有限的几个等级。第二种方法,可微量化,通过随机梯度下降优化量化点的位置,以更好地适应教师模型的行为。我们通过在卷积和循环架构上的实验验证了这两种方法。我们展示了量化的浅层学生网络可以达到与最先进的全精度教师模型相似的准确性水平,同时提供高达数量级的压缩和几乎与深度减少成线性关系的推理加速。总之,我们的结果使得资源受限环境下的DNNs能够利用在更强大设备上开发的架构和准确性进展。

第一章 引言
背景。神经网络在解决多种真实世界问题中表现出极高的效果,例如图像分类(Krizhevsky等,2012年;He等,2016年),翻译(Vaswani等,2017年),语音合成(Oord等,2016年)或强化学习(Mnih等,2013年;Silver等,2016年)。与此同时,现代神经网络架构通常需要大量的计算、空间和电力,通常需要强大的GPU来进行训练和评估。关于大型模型是否对提高准确性确实必要的辩论仍在继续。已知单个网络权重可能是多余的,并且可能不携带重要信息,例如Han等(2015年)。同时,大型模型通常有能力完全记住数据集(Zhang等,2016年),但它们并不这样做,而是似乎学习到了通用的任务解决方案。一个关于为何需要过完备表示的假设是,它们通过将局部最小值转变为鞍点(Dauphin等,2014年)或发现不依赖于精确权重值的强大解决方案(Hochreiter和Schmidhuber,1997年;Keskar等,2016年)来使学习成为可能。如果大型模型仅在训练期间需要为了鲁棒性,那么应该可以实现这些模型的显著压缩,而不影响准确性。这种直觉通过两个相关但略有不同的研究方向得到加强。
第一个方向是关于训练量化神经网络的工作,例如Courbariaux等(2015年);Rastegari等(2016年);Hubara等(2016年);Wu等(2016年);Mellempudi等(2017年);Ott等(2016年);Zhu等(2016年),这些研究表明,即使权重的值被限制在一组整数水平时,神经网络也能收敛到良好的任务解决方案。
第二个方向旨在压缩已训练的模型,同时保持它们的准确性。为此,提出了各种优雅的压缩技术,例如Han等(2015年);Iandola等(2016年);Wen等(2016年);Gysel等(2016年);Mishra等(2017年),它们结合了量化、权重共享和精心编码网络权重,以将最先进的深度模型的大小减少数个数量级,同时加速推理。这两个研究方向都非常活跃,并且已经显示出可以在嵌入式设备或手机上提供此类模型时,显著压缩和准确性改善是至关重要的。然而,压缩深度网络的文献几乎专门关注于为给定模型找到好的压缩方案,而不显著改变模型的结构。另一方面,最近的并行工作(Ba和Caruana,2013年;Hinton等,2015年)介绍了蒸馏过程,可用于将给定模型的行为转移到任何其他结构。这可用于压缩,例如获得集合的紧凑表示(Hinton等,2015年)。然而,学生模型的大小需要足够大,以便学习成功。一个太浅、太窄或缺少必要单元的模型,可能会导致相当大的准确性损失(Urban等,2016年)。
在这项工作中,我们检验蒸馏和量化是否可以共同利用以实现更好的压缩。我们从直觉出发,1)应利用高精度、全精度教师模型的存在来提高量化模型的性能,而2)量化模型可以提供比仅通过减少层数或层宽度的蒸馏过程更好的压缩。尽管我们的方法非常自然,但当这两个想法结合时,会引发有趣的研究问题。

贡献。我们提出了两种方法,允许用户通过蒸馏一个较浅的学生网络与较深的教师网络达到相似的准确性,以及通过将学生的权重量化到一组限定的整数级别并使用更少的层权重,来复合压缩深度和宽度。基本思想是量化模型可以利用蒸馏损失(Hinton等,2015年),正确目标(由标签表示)和软目标(由教师的输出表示)之间的加权平均。我们通过两种不同的方法实现这种直觉。第一种称为量化蒸馏,旨在通过将其纳入学生网络的训练过程中,利用蒸馏损失,该学生网络的权重受到限制在一组级别。第二种方法,我们称之为可微量化,采用不同的方法,试图通过随机梯度下降收敛到量化点的最优位置。我们通过在卷积和循环网络架构上的一系列实验来实证验证这两种方法。
我们展示了量化的浅层学生可以在诸如CIFAR和ImageNet(用于图像分类)和OpenNMT及WMT(用于机器翻译)的数据集上达到与全精度和更深的教师模型相似的准确性水平,同时提供高达数量级的压缩和与深度线性相关的推理加速。
相关工作。我们的工作是知识蒸馏(Ba和Caruana,2013年;Hinton等,2015年)的一个特例,我们专注于获取既量化又更浅的高准确性学生的技术。更一般地说,它可以被看作是具有特权信息学习的一个特例,例如Vapnik和Izmailov(2015年);Xu等(2016年),其中学生获得了来自更大、预训练模型输出形式的额外信息。我们在可微量化中使用的优化量化点位置的学习过程的想法,之前已在Lan等(2014年);Koren和Sill(2011年);Zhang等(2017年)中使用过,尽管是在矩阵完成和推荐系统的不同背景下。在Hinton等(2015年)中提到了使用蒸馏进行尺寸缩减,用于蒸馏集合。据我们所知,唯一一个在量化背景下使用蒸馏的工作是Wu等(2016年b),它用于提高二值神经网络在ImageNet上的准确性。我们显著地改进了这个想法,例如,我们的4位量化版本的ResNet18的准确性高于全精度的ResNet18(匹配ResNet34教师的准确性):它的顶尖-1准确性(>15%)和顶尖-5准确性(>7%)比Wu等(2016年b)中最准确的模型高。

第二章 基础知识

2.1 量化过程

我们首先定义一个缩放函数 sc : Rn → [0, 1],它将取值范围任意的向量标准化为取值在 [0, 1] 范围内的向量。有了这样一个函数,量化函数的一般结构如下:

Q(v) = sc^{-1}(\hat{Q}(sc(v))) \tag{1}

其中 sc−1sc−1 是缩放函数的逆函数,QQ​ 是实际的量化函数,它只接受 [0, 1] 范围内的值。我们始终假设 v 是一个向量;实际上,权重向量可以是多维的,但我们可以将它们重塑为一维向量,并在量化后恢复原始维度。

缩放。有关缩放函数的各种规范;在本文中,我们将使用线性缩放,例如 He 等人 (2016b),即:

sc(v)=v−βαsc(v)=αv−β​

其中 α=max⁡ivi−min⁡iviα=maxi​vi​−mini​vi​,β=min⁡iviβ=mini​vi​,结果使得目标值位于 [0, 1] 范围内,并且量化函数 Q(v)=αQ(v−βα)+βQ(v)=αQ​(αv−β​)+β。

分桶。这种表述的一个问题是,对整个向量使用相同的缩放因子,其维度可能非常大。幅度不平衡可能导致重大的精度损失,其中大部分缩放向量的元素被推向零。为了避免这种情况,我们将使用分桶,例如 Alistarh 等人 (2016),即我们将缩放函数分别应用于某个固定大小的连续值桶。这里的权衡是,我们为每个桶获得更好的量化精度,但将需要为每个桶存储两个浮点缩放因子。我们将在第5节中描述压缩比较。

量化函数 QQ​ 也可以有几种定义方式。我们将考虑使用均匀和非均匀的量化点布置。

均匀量化。我们固定一个参数 s≥1s≥1,描述使用的量化级别数。直观上,均匀量化考虑在 0 到 1 之间(包括这些端点)均匀分布的 s+1s+1 个点。确定性版本将为每个(缩放的)向量坐标 vivi​ 分配最近的量化点,而在随机版本中,我们以概率方式进行四舍五入,使得结果值是 vivi​ 的无偏估计,具有最小的方差。形式上,具有 s+1s+1 级的均匀量化函数定义为:

\hat{Q}(v, s)_i = \left\lfloor \frac{v_i s}{c} \right\rfloor + \frac{\xi_i}{s} \tag{3}

其中 ξiξi​ 是四舍五入函数。对于确定性版本,我们定义 ki=svi−⌊vis⌋ki​=svi​−⌊vi​s⌋ 并设置 ξi={1,if ki>120,otherwiseξi​={1,0,​if ki​>21​otherwise​,而对于随机版本,我们将设置 ξi∼Bernoulli(ki)ξi​∼Bernoulli(ki​)。注意,kiki​ 是 vivi​ 与小于 vivi​ 的最近量化点之间的标准化距离,并且向量分量是独立量化的。

非均匀量化。非均匀量化接受一组量化点 {p1,…,ps}{p1​,…,ps​} 作为输入,并将每个元素 vivi​ 量化到这些点中最近的一个。为简便起见,我们仅定义这个函数的确定性版本。

第2.2节 随机量化等同于添加高斯噪声

在本节中,我们列出了均匀量化函数的一些有趣的数学特性。显然,随机均匀量化是其输入的无偏估计器,即 (E[Q(v)] = v)。

我们感兴趣的是将这个函数应用于神经网络;由于标量乘积是神经网络执行的最常见操作,我们希望研究 (Q(v)^T x) 的属性,其中 (v) 是网络中某一层的权重向量,(x) 是输入。我们能够展示 (Q(v)^T x = v^T x + \epsilon) (5),其中 (\epsilon) 是一个随机变量,它是渐近正态分布的,即 (\frac{\epsilon}{\sigma_n} \overset{D}{\rightarrow} N(0, 1))。这种收敛随着维数 (n) 而发生。更正式的陈述和证明见附录中的B.1节。

这意味着量化权重等同于在每层的输出(激活函数之前)添加一个零均值误差项,该误差项是渐近正态分布的。这个误差项的方差取决于 (s)。这将量化与倡导在神经网络的中间激活中添加噪声作为正则化器的工作联系起来,例如 Gulcehre 等人(2016)。

第三章 量化蒸馏

上下文如下:给定一个任务,我们考虑一个训练有素的最先进的深度模型来解决它——即教师模型,以及一个压缩的学生模型。学生模型之所以被认为是压缩的,是因为 1) 它比教师模型浅;2) 它进行了量化,即其权重以有限的位宽表示。与标准蒸馏(Ba & Caruana, 2013; Hinton 等人,2015)的策略相同,学生模型利用已收敛的教师模型来达到类似的准确性。我们注意到,蒸馏先前已被用来获取集合的紧凑高准确率编码(Hinton 等人,2015);然而,我们认为这是第一次使用它来通过量化进行模型压缩。

鉴于这种设置,我们需要解决两个问题。第一个问题是如何将知识从教师转移到学生。为此,学生将使用 Hinton 等人(2015)定义的蒸馏损失,作为两个目标函数之间的加权平均:由温度参数 T 控制的与软目标的交叉熵,以及与正确标签的交叉熵。我们引用 Hinton 等人(2015)对蒸馏损失的精确定义。

第二个问题是如何在量化神经网络的背景下使用蒸馏损失。一种直观的方法是依赖于投影梯度下降,其中按照全精度训练中的方式进行梯度步骤,然后将新参数投影到有效解集合上。关键是,我们在每个投影步骤中累积误差到下一步的梯度中。可以将这个过程视为收集证据,判断每个权重是否需要移动到下一个量化点。关键的是,误差累积防止了算法在梯度小的情况下卡在当前解中,这在简单的投影梯度方法中会发生。这与 BinaryConnect 技术采用的方法类似,但有所不同。Li 等人(2017)也详细检查了这些动态。与 BinaryConnect 相比,我们使用的是蒸馏而不是从头开始学习,因此学习更有效率。我们也没有限制自己使用二进制表示,而是使用变量位宽量化函数和分桶,如第2节所定义。

此过程的另一种视角,如图1所示,是我们在全精度模型上执行 SGD 步骤,但在量化模型上计算梯度,该梯度与蒸馏损失相关。考虑到所有这些,我们提出的算法是:

4.1 概述

我们引入了可微量化作为一种通用方法,通过利用非均匀量化点的放置来提高量化神经网络的准确性。特别地,我们将使用第2.1节中定义的非均匀量化函数。通过实验,我们发现在这种情况下,随机量化和确定性量化之间的差异很小,因此我们将在此处专注于更简单的确定性量化函数。设 p=(p1,…,ps)p=(p1​,…,ps​) 为量化点向量,让 Q(v,p)Q(v,p) 为我们之前定义的量化函数。理想情况下,我们希望找到一组量化点 pp,使用 Q(v,p)Q(v,p) 量化模型时最小化准确性损失。

关键观察是,为了找到这组 pp,我们可以简单地使用随机梯度下降,因为我们能够计算 QQ 关于 pp 的梯度。量化神经网络的一个主要问题是,决定哪个 pipi​ 应该替换给定权重是离散的,因此梯度几乎处处为零:∂Q(v,p)∂v=0∂v∂Q(v,p)​=0,这意味着我们无法通过量化函数反向传播梯度。为了解决这个问题,通常使用直通估计器的一个变体,例如见 Bengio 等人(2013);Hubara 等人(2016)。另一方面,模型作为所选 ( p_i ) 的函数是连续的并且可以被微分;( Q(v, p)_i ) 关于 ( p_j ) 的梯度几乎处处良定义,其表达式为:

[ \frac{\partial Q(v, p)_i}{\partial p_j} =
\begin{cases}
\alpha_i, & \text{if } v_i \text{ has been quantized to } p_j \
0, & \text{otherwise}
\end{cases}, \tag{6} ]

其中 ( \alpha_i ) 是第 ( i ) 个缩放因子元素,假设我们使用了分桶方案。如果没有使用分桶,那么每个 ( i ) 的 ( \alpha_i = \alpha )。否则,它会根据权重 ( v_i ) 属于哪个桶而变化。因此,我们可以使用在训练原始模型时使用的相同损失函数,并且借助公式 (6) 和通常的反向传播算法,我们能够计算其关于量化点 ( p ) 的梯度。然后我们可以使用标准的 SGD 算法最小化关于 ( p ) 的损失函数。算法随后变为如下:
关于效率的说明。优化点 ( p ) 可能比训练原始网络慢,因为我们不仅要执行常规的前向和后向传播,还需要对模型的权重进行量化,并执行后向传播以获得关于 ( p ) 的梯度。然而,根据我们的经验,差分量化需要的迭代次数少一个数量级就能收敛到一个好的解,并且可以高效地实现。

权重共享。仔细检查后,这种方法可以与 Han 等人(2015)的权重共享相关联。权重共享使用 k-均值聚类算法找到适合权重的良好簇,采用质心作为簇的量化点。网络通过修改质心的值进行训练,以类似的方式聚合梯度。不同之处在于点到质心的初始分配,更重要的是,权重到质心的分配从未改变。相比之下,我们在每次迭代中重新将权重分配到最近的量化点,并使用不同的初始化。

4.2 讨论和额外的启发式方法

虽然损失函数相对于 ( p ) 是连续的,改变每个权重量化方式时的间接影响可能对学习过程产生剧烈影响。作为一个极端的例子,可能出现简并现象,其中所有权重都由相同的量化点表示,这使得学习变得不可能。或者 ( p_i ) 的多样性减少,导致非常少的权重以非常高的精度表示,而其他的则被迫以更低的分辨率表示。为了避免这些问题,我们依赖于以下一组启发式方法。未来的工作将考虑增加一个关于 ( p_i ) 如何分配到权重的强化学习损失。

选择好的起点

初始化量化点的一种方法是使它们均匀分布,这对应于使用均匀量化函数作为起点。可微量化算法需要能够使用一个量化点以便更新它;因此,为了确保每个量化点都被使用,我们将点初始化为权重值的分位数。这确保每个量化点与相同数量的值关联,并且我们能够更新它。

在重要的地方重新分配比特

网络中的所有层不需要相同的精度。衡量每个权重对最终预测的重要性的一个度量是每个权重向量的梯度的范数。因此,在初始阶段,我们运行一定次数的前向和后向传递,以估计每层中权重向量的梯度,我们计算多个小批量的平均梯度并计算范数;然后我们根据简单的线性比例分配与每个权重相关联的点的数量。简而言之,我们估计

[ \left| E\left[\frac{\partial l}{\partial v}\right] \right|^2 \tag{7} ]

这些方法提供了对网络量化过程的更细致的控制,使量化更加适应网络的特定需求,从而可能提高整体性能和效率。

其中 ( l ) 是损失函数,( v ) 是特定层中的权重向量,( (\partial l/\partial v)_i = \partial l/\partial v_i ),我们使用这个值来确定哪些层对量化最敏感。在使用这个过程时,我们将在某些层中使用比指示的位数更多的位数,在其他层中使用更少的位数。我们可以通过使用霍夫曼编码来减少这种影响的影响,见第5节;无论如何,请注意,虽然总点数保持不变,但如果层中权重的比例较大,则为一层分配更多的点将增加整体的位复杂性。

使用蒸馏损失。在上面勾画的算法中,损失指的是我们用来训练原始模型的损失。另一种可能的规格是将未量化的模型视为教师模型,量化的模型视为学生模型,并使用未量化模型和量化模型输出之间的蒸馏损失作为损失。在这种情况下,我们优化量化模型的目标不是针对原始损失表现最好,而是模仿未量化模型的结果,这对模型来说应该更容易学习并提供更好的结果。

超参数优化。上述算法是一个与原始问题非常相似的优化问题。通常,为了获得最佳结果,应该进行超参数优化和尝试不同变体的梯度下降。

5 压缩

我们现在分析使用 b 位和桶大小 k 时的空间节省情况。设 f 为全精度权重的大小(32位),N 为我们正在量化的“向量”的大小。全精度需要 fN 位,而量化向量需要 (bN + \frac{2fN}{k})。(我们对每个权重使用 b 位,另加每个桶的缩放因子 (\alpha) 和 (\beta))。因此,大小收益为 (g(b, k; f) = \frac{kf}{kb + 2f})。

对于可微量化,我们还必须存储量化点的值。由于这个数字不依赖于 N,所需空间可以忽略不计,为简便起见我们在这里不予考虑。例如,在桶大小为 256 时,每个组件使用 2 位可以节省 14.2 倍空间与全精度相比,而使用 4 位可以节省 7.52 倍空间。在桶大小为 512 时,2位节省的空间是 15.05 倍,而 4 位则是 7.75 倍压缩。

霍夫曼编码

为了节省额外的空间,我们可以使用霍夫曼编码来表示量化值。实际上,每个量化值可以被视为指向一个全精度值的指针;在非均匀量化的情况下是 (p_k),在均匀量化的情况下是 (\frac{k}{s})。然后,我们可以计算模型所有权重的每个索引的频率,并计算最优的霍夫曼编码。最优编码的平均比特长度是我们实际用来编码值的比特数。这解释了为什么我们附录中的一些大小收益表中存在小数位。

我们强调,我们只把这些压缩数字作为大致数字,因为额外的实施成本可能意味着这些节省并不总是容易转化为实际操作(Han 等人,2015)。

6 实验结果

6.1 小型数据集

方法。我们将从一系列在小型数据集上的实验开始,这允许我们更细致地覆盖参数空间。我们比较以下方式描述的方法的性能:我们以教师模型、蒸馏模型和一个较小的模型为基准:蒸馏和较小的模型具有相同的架构,但蒸馏模型是利用教师的蒸馏损失进行训练的,而较小的模型直接针对目标进行训练。此外,我们比较了量化蒸馏和可微量化的性能。另外,我们还使用了PM(“事后”)量化,即在训练后均匀量化权重,不涉及任何额外操作,无论是否使用分桶。所有结果都是使用256的桶大小获得的,我们发现这在压缩-准确度权衡中提供了良好的效果。有关数据集和模型的详细信息,请参见附录A。

CIFAR-10实验。对于CIFAR-10上的图像分类,我们测试了不同训练技术对蒸馏模型准确度的影响,同时变化CNN架构的参数,如量化级别和模型大小。表1包含了全精度训练、带分桶和不带分桶的PM量化以及我们方法的结果。学生模型定义下方左侧的百分比分别是正常和蒸馏模型的准确度(全精度训练)。更多详细信息在附录中的表11报告。我们还尝试了一个学生模型比教师更深的额外模型,在该模型中,4位量化的学生能够实现比教师更高的准确度,压缩因子超过7倍。我们对使用宽残差网络(Zagoruyko & Komodakis, 2016)进行的可微量化进行了额外的实验,该网络达到了更高的准确度;见表3。总体而言,量化蒸馏似乎是在所有位宽和架构范围内准确度最好的方法。它在2位和4位量化上显著优于PM,8位时在较大的学生模型上达到与教师相差0.2%以内的准确度,并且在4位量化上准确度损失相对较小。可微量化在所有实验中紧随其后,但收敛速度更快。此外,我们强调在较高位宽(4位和8位)上,带分桶的更简单的PM量化方法也具有良好的准确度。

CIFAR-100实验。接下来,我们使用全部100个类别进行图像分类。这里,我们专注于2位和4位量化,并使用单一的学生架构。基线架构是一个具有28层和36.5M参数的宽残差网络,在该数据集上对于其深度来说是最先进的。学生的深度和宽度减少了20%,参数减半。选择它是为了在全精度蒸馏时达到与教师模型相同的准确度。准确度结果见表4。更多详细信息在附录中的表20报告。

6.3 额外实验

蒸馏损失与普通损失。我们感兴趣的一个关键问题是,在量化时,与标准损失相比,蒸馏损失是否是一个一致更好的度量标准。我们在CIFAR-10上测试了这一点,比较了针对每种损失的量化训练的性能。在2位精度下,学生模型使用普通损失收敛到67.22%的准确度,使用蒸馏损失收敛到82.40%的准确度。在4位精度下,学生模型使用普通损失收敛到86.01%的准确度,使用蒸馏损失收敛到88.00%的准确度。在OpenNMT上,我们观察到类似的差距:4位量化的学生模型在训练中使用普通损失收敛到32.67的困惑度和15.03的BLEU得分,而使用蒸馏损失训练收敛到25.43的困惑度(优于教师)和15.73的BLEU得分。这强烈表明蒸馏损失在量化时更优。详细信息见附录A.4.1。

可微量化中启发式方法的影响。我们还对各种启发式方法如何影响准确性进行了深入研究。我们发现,对于可微量化,根据层的梯度范数重新分配比特对于良好的准确性绝对至关重要;分位数和蒸馏损失也似乎提供了改进,尽管较小。由于空间限制,我们将结果及其讨论推迟到附录A.4.2。

推理速度。通常,较浅的学生模型导致推理成本几乎线性减少,与深度减少相关。例如,在CIFAR-10的宽ResNet模型实验中,教师前向传递需要67.4秒,而学生需要43.7秒;大约1.5倍的速度提升,深度减少了1.75倍。在使用4个GPU(数据并行)的ImageNet测试集上,ResNet34的前向传递需要263秒,ResNet18需要169秒,我们的2xResNet18也需要169秒。(因此,尽管拥有比ResNet18更多的参数,但它具有相同的层数,并且不足以使GPU饱和,所以速度相同。我们注意到我们没有利用4位权重,因为缺乏硬件支持。)我们的模型推理速度是1.5倍更快,同时深度减少了1.8倍,所以这里的加速再次几乎是线性的。

7 讨论

我们研究了在压缩深度神经网络时将蒸馏与量化结合的影响。我们的主要发现是,在量化时,如果有可用的大型精确模型,可以(且应该)通过蒸馏损失来利用这些模型。我们提出了两种方法来实现这一点,即量化蒸馏和可微量化。前者直接作用于学生模型的训练过程,而后者提供了一种优化学生模型量化的方法,以最佳匹配教师模型。我们的实验结果表明,这些方法可以在保持准确性的同时,将现有模型压缩高达一个数量级,适用于小型图像分类和机器翻译(NMT)任务。

同时,我们注意到蒸馏还自动提高了推理速度,因为它生成了较浅的模型。我们一个较为出人意料的发现是,带分桶的简单均匀量化在广泛的场景中表现良好。我们在2.2节的分析表明,这可能是因为分桶提供了一种参数化由量化引起的类高斯噪声的方法。考虑到其简单性,它可以作为一种一贯的基线方法使用。

在我们的实验结果中,我们进行了手动架构搜索,以确定学生模型的深度和位宽,这一过程既耗时又容易出错。在未来的工作中,我们计划探索使用强化学习或进化策略来发现在给定空间和延迟约束条件下表现最佳的学生模型的结构。第二个更直接的方向是检查这些方法的实际加速潜力,并将它们与现有的压缩方法(如Han等人(2015)提出的权重共享)以及现有的低精度计算框架(如NVIDIA TensorRT或FPGA平台)结合使用。

posted on 2024-06-23 10:23  FrostyForest  阅读(2)  评论(0编辑  收藏  举报