电脑之心报道
电脑之心杂志社
对数十亿上千 M 大小的数学数学模型而言,数学模型填充能增加它的缓存挤占、通讯频宽和排序维数等,以期更快地展开应用领域布署。最近,源自 Facebook AI 的人类学家明确提出了一类捷伊数学模型定量填充控制技术 Quant-Noise,让数学数学模型在不降低操控性的大前提下,缓存挤占增加 90% 以内。
他们都知道,对数学数学模型而言,模块量越大、楼层越少,就代表着输入的结果越精巧。当然,这也意味着许多操控性优越的数学数学模型表面积会非常巨大。比如当前的标准电脑翻译构架 Transformer,几层就可能包涵数千个模块。即使是一些强化过操控性和模块工作效率的数学模型(比如 EfficientNet),也仍然需要几十到几十 MB。这就使得它的应用领域范围限制在电脑人或者交互式副手等领域。
所以他们在应用领域布署之前,必须面对一个问题:如何对数学模型展开填充?
伯粉和研磨是数学模型填充中常见的两种方式,透过增加互联网权重股的数目来删去参数。还有一类方式就是「定量」,不同的是,它是透过增加每个权重股的BCC数来填充原初互联网。
纯量定量(scalar quantization)等流行的预处理定量方式是让体能训练互联网的浮点数权重股以一个低精确度表观去表示,比如说定宽有理数。那些预处理定量方式的益处是填充工作效率极高,并且能加速支持硬体上的逻辑推理。但优点是,那些平方根造成的数值会在默氏散播的排序过程中不断积攒,最终导致操控性明显下降。
现在,源自Facebook 的人类学家明确提出了一类捷伊数学模型定量填充控制技术 Quant-Noise,可对数学模型展开无与伦比填充,同时在实际应用领域布署时保持高操控性。
学术论文门牌号:https://arxiv.org/abs/2004.07320
项目门牌号:https://github.com/pytorch/fairseq/tree/master/examples/quant_noise
在此项研究中,人类学家明确提出了一类仅定量权重股开集而非整个互联网的填充方案。在每天默氏散播时仅定量互联网的随机部分,对大多数权重股使用无偏梯度展开更新。
该方式可以在体能训练过程中采用更简单的定量方案,这对具有可体能训练模块的定量模块而言是非常有用的,比如乘积定量(Product Quantizer,PQ)算法。
总体而言,该方式的亮点是:
将名为「Quant-Noise」的定量噪声应用领域到权重股的随机开集上,来学习更适用于 int4、 int8 和 PQ 算法等各种定量方式的网络;
在 PQ 算法上添加 Quant-Noise,实现准确率和数学模型大小综合结果上的 SOTA 水平。使用该方式展开填充后,在自然语言处理方面,RoBERTa 在填充到 14MB 的大前提下,在 MNLI 上实现了 82.5% 的准确率;在排序机视觉方面,EfficientNet-B3 在填充到 3.3 MB 的大前提下,在 ImageNet 上实现了 80.0% 的 top-1 准确率。
使用 Quant-Noise 体能训练的互联网,透过结合 PQ 算法和 int8 来定量互联网的权重股和 activation,获得在固定精确度排序条件下的无与伦比填充效果,实现了 ImageNet 数据集上的 79.8% top-1 准确率和 WikiText-103 数据集上的 21.1 困惑度。
此外,使用 Quant-Noise 填充后的数学模型操控性几乎与原初数学模型一致,同时将缓存挤占量增加至原来的十分之一甚至二十分之一。这大大超过了 PyTorch 和 Tensorflow 中所用的 int8 的 4 倍填充。目前,相关代码也已经开源。
原理:定量数学数学模型
在本章中,人类学家介绍了定量原理以及几种标准定量方式,并详细解释了如何将纯量和乘积定量相结合。需要注意的是,为了定义清楚,人类学家主要专注于固定实矩阵(fixed real matrix)W∈R ^ n×p 的示例,并假设此矩阵被拆分为 m×q 个块(b_kl):
那些块的属性由定量方式来确定,而码本(codebook)是包涵 K 个向量的集合,即 C = {c [1], ..., c [K]}。此定量方式使用如下方式填充矩阵 W:向每个块 b_kl 分配一个指向码本 C 中「码字 c」的索引,同时存储码本 C 以及结果索引(作为索引矩阵 I 的条目 I_kl), 而不是使用实际权重股。在逻辑推理过程中,该方式重建原初矩阵 W 的平方根
,使得 b_kl = c [I_kl]。人类学家将纯量定量(如 int8,即每个块 b_kl 由一个权重股组成)与向量定量(将多个权重股共同定量)区分开来。
上图显示了人类学家在体能训练过程中如何将定量噪声应用领域于权重股开集,从而改善定量数学模型的操控性(完整视频请参照链接)。
定点纯量定量
定点(Fixed-point)纯量定量方式用低精确度定点表示代替了浮点数表示。透过在能兼容的硬体上使用定点运算,实现增加数学模型缓存挤占并加快逻辑推理速度的效果。
Quant-Noise 的具体实现方式
深度互联网体能训练过程中不会接触到 quantization drift 引起的噪声,从而导致操控性欠佳。如何使互联网对定量具有一定的鲁棒性?解决方案就是在体能训练期间引入定量噪声。
定量感知体能训练(Quantization Aware Training,QAT)透过对默氏散播过程中的权重股展开定量来实现这一点。这种转换是不可微的,且使用直通估计器(straight through estimator,STE)来逼近梯度。STE 在梯度中引入了一个偏置,该偏置取决于权重股的定量级别,因此也取决于填充率。
因此,人类学家明确提出了一类简单的修改方式 Quant-Noise,透过随机改善 QAT 来控制该偏置。其思路是:定量权重股中的随机部分,而不是像 QAT 那样定量整个互联网,使未经定量的权重股使用无偏梯度。该方式的一般形式可以模拟体能训练期间的定量和伯粉效果。
使用 Quant-Noise 体能训练互联网
仍以实矩阵 W 为例。在体能训练时,Quant-Noise 方式的运行方式如下:
首先,排序与目标定量方式相关的块 b_kl;然后在每个默氏散播过程中,随机选择那些块的开集,并添加一些失真;在反向散播过程中,使用 STE 逼近失真的权重股,进而排序所有权重股的梯度值。换句话说,给定索引元组 J ⊂ {(k, l)},其中 1≤k≤m,1≤l≤q,同时将失真或噪声函数 ϕ 作用在块上,于是人类学家定义算子 ψ (· | J),对每个块 b_kl 均应用领域以下转换:
Quant-Noise 的效果怎么样?
Quant-Noise 对不同定量方式的影响
如下表 1 所示,人类学家首先展示了在语言建模和图像分类任务上,Quant-Noise 对 int4、int8 和 iPQ 三种不同定量方案的影响。结果表明,Quant-Noise 对 iPQ 等高操控性定量方案表现出非常好的效果,而 QAT 一般导致操控性下降,即使与定量作为后处理步骤的情况相比也会这样。
表 1:在 QAT 和 Quant-Noise 两种设置下,int4、int8 和 iPQ 三种定量方案在语言建模和图像分类任务上的定量结果对比。对语言建模任务,人类学家在 Wikitext-103 基准上体能训练 Transformer,得出了测试困惑度(PPL);对图像分类任务,人类学家在 ImageNet-1k 基准上体能训练了 EfficientNet-B3,得出了验证 Top-1 准确率。
人类学家分析得出,Quant-Noise 能与伯粉(pruning)和权重股共享(weight sharing)方式兼容并相互补充。如下表 2 所示,人类学家分别展示了 WikiText-103 上语言建模、MNLI 上预体能训练句子表观和 ImageNet-1k 上目标分类的结果,那些结果在不同的任务和基准上保持了高度一致:Quant-Noise 在强大的 iPQ 基线方式上实现了操控性的大幅提升。
表 2:几种不同的填充方式(权重股共享、伯粉和 Quant-Noise)在语言建模、句子表观和图像分类任务上对未定量数学模型和定量数学模型操控性的影响。
与 SOTA 方式的对比
人类学家在相同任务上将 Quant-Noise 与当前 SOTA 方式展开对比。他们在有竞争力的数学模型上应用领域了最佳定量设置,在结合权重股共享和伯粉方式时将那些数学模型的缓存挤占缩小到原来的 1/94-1/20,从而为高操控性数学模型提供了无与伦比填充。
如下图 2 所示,人类学家得出了在语言建模、MNLI 和 ImageNet 上操控性与数学模型大小的权衡情况。
图 2:数学模型操控性随数学模型大小的变化情况。
控制变量测试
如下表 3 所示,人类学家分别展示了在未利用 Quant-Noise 体能训练、利用 Quant-Noise 微调以及利用 Quant-Noise 体能训练三种不同的设置下,Adaptive Input 构架的困惑度和 RoBERTa 的准确率变化情况。可以看出,直接利用 Quant-Noise 体能训练可以实现最低的困惑度和最高的准确率。
表 3:未利用 Quant-Noise 体能训练、利用 Quant-Noise 微调和利用 Quant-Noise 体能训练三种不同设置下的困惑度和准确率对比。
如下图 3 所示,不同 Quant-Noise 值对语言建模数学模型 Transformer 操控性的影响。对 iPQ,高噪声值对数学模型操控性带来较大影响;而对 int8 定量及其噪声函数而言,较高的噪声值对数学模型操控性造成轻微的负面影响,但不如前者那么严重。
图 3:定量模块的影响。