Happy · 2023年11月09日

TinyFormer | 300KB模型超越MobileNetv2,让LayerNorm提速50倍

image.png

在各种嵌入式物联网应用中,在微控制器单元(MCU)上开发深度学习模型引起了广泛关注。然而,由于硬件资源限制严重,如何在微控制器上高效地设计和部署最新先进模型(例如,Transformer)具有很大挑战。在本文中,作者提出了 TinyFormer,一个专门为在 MCU 上开发和部署资源高效的Transformer而设计的框架。TinyFormer 主要由 SuperNAS,SparseNAS 和 SparseEngine 组成。

分别来说,SuperNAS 旨在从广阔的搜索空间中寻找合适的超网络。SparseNAS 从识别的超网络中评估最佳稀疏Single-path模型,包括Transformer架构。最后,SparseEngine 高效地将搜索到的稀疏模型部署到 MCU 上。据作者所知,SparseEngine 是第一个能够在一台 MCU 上执行具有Transformer的稀疏模型推理的部署框架。

在 CIFAR-10 数据集上的评估结果表明,TinyFormer 可以开发出具有 96.1%精度的有效Transformer,同时符合 1MB 存储和 320KB 内存的硬件约束。此外,与 CMSIS-NN 库相比,TinyFormer 在稀疏推理方面实现了显著的速度提升,最高可达 12.2 倍。TinyFormer 有望将强大的Transformer带入 TinyML 场景,并大大扩展深度学习应用的范围。

1、简介

近年来,基于物联网技术的智能物联网(AIoT)越来越受欢迎,微控制器单元(MCU)在各种应用场景中受到了广泛关注。这些低成本、低功耗的小型设备在极端资源限制的即插即用场景中广泛使用。这些设备通常部署在传感器端,一旦产生数据就收集最新数据。

因此,小型机器学习(TinyML)成为计算机科学中日益增长的领域,旨在将机器学习技术应用于 MCU,从而实现各种应用。一些已建立的 TinyML 应用,如关键词识别、异常检测和唤醒功能,仅涉及一些简单的深度学习算法。一些高端应用,如野生动物检测和食品可食性检测,通常需要强大的深度学习模型。然而,在这些场景中可用的多数只有 MCU,这对 TinyML 提出了新的挑战。

以前,只有在这样的微小设备上部署相对简单的算法或低端应用。如果能够在微控制器上进一步部署更强大的深度神经网络,将大大扩展深度学习应用的范围。但是,MCU 的可用资源受到严格限制。例如,与一些边缘设备(如手机、树莓派)相比,ARM Cortex-M7 只有 1MB 存储(Flash)和 320KB 内存(SRAM)。

image.png

如图 1 所示,深度学习模型所需的资源与微控制器可用硬件容量之间存在很大差距。例如,将拥有 1100 万参数的 ResNet-18部署到具有 1MB 存储的设备上,权重至少有 90% 需要缩减,导致精度显著下降。因此,在这样资源受限的设备上部署强大模型具有挑战性。

近年来,基于Transformer的模型在各种领域(如计算机视觉、语音识别和自然语言处理)中通常取得优异性能。将这些强大的Transformer模型部署在 MCU 上,可以满足 TinyML 中对高端场景的需求。但是,Transformer模型包含大量参数。与移动设备和云平台相比,MCU 的可用内存和存储非常有限。即使对于已经开发出的轻量级Transformer模型,仍难以满足其严格的资源限制。因此,将强大的Transformer模型部署在边缘设备甚至 MCU 上仍然具有困难。

为了将强大的Transformer引入 MCU,作者提出了 TinyFormer,一个用于在资源受限设备上设计和部署稀疏模型的有效框架。TinyFormer 主要由 SuperNAS,SparseNAS 和 SparseEngine 组成。SuperNAS 的目标是从广阔的搜索空间中产生适当的超网络,以便进一步搜索。SparseNAS 在超网络中进行模型搜索,并对模型进行硬件约束和精度评估。最后,SparseEngine 自动优化并在目标 MCU 上部署压缩后的最佳精度模型。

本文的主要贡献如下:

  • 提出了 TinyFormer 框架,以在资源受限设备上开发Transformer。通过在 MCU 上实现极小和高效,将强大的Transformer引入 TinyML 场景。
  • 通过联合搜索和优化稀疏配置和模型架构,TinyFormer 生成了具有最佳精度的稀疏模型,同时满足硬件约束。
  • 提出了 SparseEngine,它是第一个能够在外部 MCU 上执行具有Transformer的稀疏模型推理的部署工具,同时保证延迟。

通过 SuperNAS,SparseNAS 和 SparseEngine 的协同作用,TinyFormer 成功地将强大的Transformer引入了资源受限的设备。在 CIFAR-10 上的实验结果表明,TinyFormer 实现了 96.1% 的精度,同时在 STM32F746 上运行时的推理延迟为 3.9 秒。

与轻量级Transformer CCT-7/3×1 相比,TinyFormer 实现了 1.04% 的精度提升,同时节省了 74% 的存储空间。得益于自动化的 SparseEngine,TinyFormer 在稀疏模型推理方面实现了比 CMSIS-NN[13] 高达 12.2× 的速度提升。

image.png

2、本文方法

A. 概述

image.png

如图 3 所示,TinyFormer 主要由三个部分组成:SuperNAS、SparseNAS 和 SparseEngine。SuperNAS 的目标是自动在大型搜索空间中找到具有 transformer 结构的适当超网络。

在此工作中,超网络被构建为预训练的过度参数化模型,以下Single-path模型从超网络中采样。SparseNAS 用于从超网络中找到具有 transformer 结构的稀疏模型。

具体来说,在卷积和线性层中执行稀疏剪枝,并对所有层应用全整数量化(INT8 格式)。在 SparseNAS 的搜索阶段,同时执行稀疏剪枝配置和压缩操作。最后,SparseEngine 将获得的模型部署到具有稀疏配置的 MCU 上,使稀疏推理能够节省硬件资源。SparseEngine 可以自动为 STM32 MCU 生成二进制代码,并支持高效稀疏推理的多个功能实现。

B. SuperNAS:超网络架构搜索

在设计用于搜索模型并部署在 MCU 上的超网络结构时,作者面临模型稀疏性和容量的权衡。通常,较小密集模型的准确性受到容量的限制,而对较大模型的高稀疏性会导致准确性的急剧下降。稀疏性与容量的平衡应根据硬件资源约束进行调整,挑战超网络设计。

因此,作者提出 SuperNAS 以自动设计超网络。SuperNAS 并不直接输出最佳Single-path模型。相反,它从搜索空间中搜索一个合适的子集,并构建一个较小的超网络。简言之,适当的超网络应满足以下两个条件。

  • 首先,从超网络中获得的绝大多数稀疏模型应严格满足资源约束。
  • 其次,这些模型的平均验证准确性应尽可能高。

针对超网络搜索空间的设计,SuperNAS 首先分析接受设计搜索空间的概率。然后,SuperNAS 从搜索空间中随机抽取超网络配置,并评估超网络中随机抽取的稀疏模型在验证集上的平均准确性。具有最佳准确性的超网络将被发送到 SparseNAS 进行实际Single-path模型搜索。

1 SuperNAS 搜索空间:

SuperNAS 的搜索空间包含与超网络架构设计相关的超参数,包括块的选择和每种选择块中的通道数。超网络架构设计如图 4 所示。

image.png

TinyFormer 中的超网络架构设计类似于Single-path一次性(SPOS)方法。超网络由可变选择块组成,Single-path模型以选择块的粒度采样。作者基于四种类型选择块构建超网络架构:Downsample 块、MobileNetV2 块、Transformer 块和 Pooling 块。四种类型的块分别包含多个不同的架构候选项。

在图 4 中,Conv 表示标准 3×3 卷积,除非另有说明。在 Downsample 块中,Conv-Maxpool 表示标准卷积后跟随 2×2 最大池化。performing downsampling 的架构候选项标记为。MobileNetV2 块是倒置残差块,扩展因子为 。在 Transformer 块中, 表示标准 3×3 卷积,后跟 1×1 卷积,无填充。 与上述表达式类似。编码器是标准 Transformer 编码器,使用 ReLU 作为激活操作以提高 MCU 上的计算效率。SeqPool 和 AvgPool 分别序列池化和 2×2 平均池化。Single-path模型从超网络中以每块仅调用一个架构候选项的粒度采样。

与 CNN 不同,Transformer缺乏空间归纳偏差,并且严重依赖大规模数据进行大规模训练。因此,作者在 transformer 块之前插入 MobileNetV2 块以解决这个问题。内存使用量对编码器输入的大小敏感。为了避免通道数量受编码器输入大小的限制,参考 MobileViT,作者在编码器前后插入 3×3 卷积和 1×1 卷积。这样,作者可以解耦通道与编码器输入之间的关系,从而扩展搜索空间以探索更大规模的候选模型。

作者将 DoT 作为Backbone网络,该网络采用了 Downsample 块、MobileNetV2 块和 Transformer 块堆叠而成。DoT 结构中的 MobileNetV2 块和 Transformer 块是可重复的,这使得 DoT 成为了一种更灵活的特征提取架构。超网络架构采用两个 DoT 作为Backbone,然后是一些后处理操作。

2 搜索空间分析:

超网络搜索空间包含超网络的 hyper-parameters,例如每个选择块中的层数、架构候选者的 hyper-parameters 等。最终Single-path模型是从超网络中采样得到的。

如 III-B 所述,搜索空间设计中模型稀疏性与容量的平衡至关重要,搜索空间的配置决定了超网络和Single-path模型的架构。因此,在采样超网络之前,作者需要评估搜索空间。

image.png

算法 1 展示了作者如何分析搜索空间。在分析之前,作者设置超参数 λ 和 λ 分别为Single-path模型能力的下限和上限。作者随机从搜索空间中采样配置,并构建稀疏Single-path模型。如果稀疏Single-path模型符合硬件约束,作者就评估模型的参数数量,如果数量在给定的边界之间,作者就接受这个模型。

最后,作者计算统计概率,以表示在搜索空间中可接受的Single-path模型数量。如果统计概率高于 90%,作者接受搜索空间并进行进一步部署。否则,作者提前调整搜索空间以避免不必要的搜索。

3 超网络架构搜索:

image.png

超网络架构搜索过程如算法 2 所示。对于从搜索空间中采样得到的每个超网络,作者在实际搜索之前对其进行简单测试(算法 2 中的 TestSupernet)。

具体来说,作者从超网络中随机抽取 100 个Single-path模型,并评估每个模型的内存使用情况。如果一半的模型超过硬件约束的内存限制,作者就跳过超网络的搜索过程。

在超网络的简单测试之后,作者采取两步来评估其对稀疏性的敏感度。首先,作者从超网络中随机抽取Single-path模型。对于每个Single-path模型,作者通过随机生成的稀疏配置进行压缩,以检查模型是否占用更多资源。然后,作者以这些稀疏模型的平均准确度作为Single-path模型的性能指标。同时,所有Single-path模型的平均指标被采纳为超网络的最终性能指标。具有最高性能指标的超网络将被采纳为下一阶段的搜索依据。

为了降低搜索成本,作者对稀疏模型的存储和峰值内存使用情况进行评估,以跳过不满足资源要求的模型。此外,作者采用细粒度的一次性剪枝算法代替精确的迭代剪枝,以降低运行时成本。

C. SparseNAS:硬件感知稀疏网络搜索

SparseNAS 旨在从超网络中提取具有稀疏配置和路径选择编码的优秀Single-path模型。在路径选择编码的基础上,从超网络中提取Single-path模型。通过对稀疏配置进行模型压缩和进行一些轮次的微调,可以将准确性恢复到可接受水平。通过重复上述过程,作者可以获得准确性最高的模型。

Single-path模型搜索方法与 SPOS 方法类似。与原始方法不同的是,在搜索步骤中还包括了压缩过程,如剪枝和量化。此外,为了降低训练和压缩过程的成本,SparseNAS 分为两个阶段,即两阶段 NAS。

  • 在第一阶段,SparseNAS 旨在找到最佳的稀疏Single-path模型,并进行剪枝和量化过程。
  • 在第二阶段,SparseNAS 仅进行细调剪枝和操作,以恢复模型的准确性。

1 两阶段 NAS:

image.png

SparseNAS 包括Single-path模型选择阶段和微调阶段。SparseNAS 的第一阶段在算法 3 中进行了说明,用于Single-path模型选择。在第一阶段,SparseNAS 对随机抽取的稀疏Single-path模型进行几轮训练,然后进行迭代剪枝和准确性评估。仅选择准确性最高模型进入第二阶段进一步训练。作者通过评估存储和内存使用情况跳过不满足硬件约束的模型候选者。

在第二阶段,SparseNAS 仅对从第一阶段选择的模型进行迭代剪枝和微调以提高准确性。第二阶段结束后,微调后的模型将部署到 SparseEngine。双阶段过程可以在降低训练和压缩成本的同时保持获得的Single-path模型的准确性。

2 剪枝方法:

与 SuperNAS 中的一次性剪枝方法不同,SparseNAS 采用了 AGP 迭代剪枝方法。AGP 方法可以避免因剪枝引起的显著准确性下降。作者仅在卷积和线性层中对权重进行剪枝。

image.png

SparseNAS 采用了一种块状剪枝方法,将多个连续权重划分为一个块以进行剪枝。剪枝配置(稀疏度和块大小)在部署中对准确性和支持硬件资源使用有影响,不同层对剪枝配置的敏感性不同。因此,作者在卷积和全连接层采用了一种混合块状剪枝策略,如图 5 所示。在混合块状剪枝过程中,SparseNAS 为每个层选择弹性块大小(2 或 4)进行剪枝。相应地,作者将每个选择块的剪枝配置添加到搜索空间。当抽取Single-path模型时,每个选择块设置为随机稀疏度和块大小配置。

作为例外,深度卷积层的块大小固定为 3。在 SparseEngine 中,作者将块状卷积应用于宽度方向以利用计算的空间局部性。因此,块状卷积的块大小设置为 3,内核大小固定为 3×3。

3 量化方法:

与 MCU 上的浮点计算相比,整数计算在延迟和功率效率方面具有优势。因此,作者通过后训练量化(PTQ)算法将模型权重和激活量化为 INT8。但是,Transformer 中的 LayerNorm 计算不能直接量化。对 LayerNorm 进行线性量化将导致显著的准确性下降。原始 LayerNorm 定义如下:

image.png

为了验证这一观点,作者统计了第一 DoT 架构中 LayerNorm 的分布。如图 6(a)所示,归一化数据映射到 -2.0 至 9.3 的范围内。将这个范围的小的正常化结果四舍五入为 INT16 会导致大量精度损失。另一方面,INT16 的范围并未充分利用 。

为解决这个问题,提出了 Scaled-LayerNorm,用于进行整数唯一推理,而不是 LayerNorm。如图 6(b)所示,作者将归一化结果放大 倍,以减小量化过程中的精度损失。线性变换后的结果存储为 INT16 格式,同时包括了因子。在重新量化阶段,将折叠到缩放因子 S 中,以确保数学等价性。

通过扩大 的数值范围,可以避免因大量精度损失导致的准确性下降。以此方法,作者实现了 LayerNorm 推理速度的大幅提升,同时仅略有精度损失。

D. SparseEngine: Efficient Deployment of Sparse Models

SparseEngine 是一个用于在 MCU 上部署稀疏转换器模型的自动部署工具。图 7 详细介绍了 SparseEngine 的各个方面。

image.png

首先,从 SparseNAS 获得的模型进行分析,以提取所需的信息,包括稀疏配置、模型架构和内存使用等。为了高效地利用 MCU 上可用的内存,采用头尾交替分配策略自动为模型推理分配内存。同时,作者使用块状稀疏策略并采用块状运行长度编码(UINT8),进行自适应稀疏。

具体来说,权重采用格式编码,其中 表示非零块之间的距离作为位置信息, 表示非零块中的第 个权重,其长度为 。在自适应策略下,仅当稀疏编码能减少存储占用时,才将权重存储为稀疏格式。

最后,生成针对 MCU 部署的目标代码。实现了用于部署稀疏转换器模型的各种基本操作,包括缩放层归一化、稀疏卷积和稀疏线性层。

与在其他 MCU 上的部署方法相比,SparseEngine 旨在进一步挖掘 TinyML 部署和模型推理中的稀疏性。稀疏性挖掘包括稀疏编码/解码以及稀疏计算(卷积和全连接层)。此外,针对具有转换器模块的模型推理,还优化了 Softmax 操作以加速 MCU 上的推理。

1 稀疏编码:

image.png

在稀疏编码中,作者采用 8 位块状运行长度编码进行块状修剪。首先将原始 3D 矩阵(张量) 成数组格式。稀疏权重以格式存储,如图 8 所示,其中 表示非零块之间的距离作为位置信息, 表示非零块中的第 个权重,其长度为 。如果 不能用 INT8 表示,作者插入零元素。

与 Coordinate(COO)和 Compressed Sparse Row(CSR)格式相比,块状运行长度编码具有较高的压缩比。作者只需要一个元素来表示相邻 个非零权重的位置。这种编码格式的压缩比可以由以下公式计算:

image.png

其中,η表示压缩比,ρ表示稀疏度, 表示修剪的块大小。因此,随着稀疏度和块大小的增加,块状运行长度编码的压缩比可以变得更大。与 SparseNAS 中的混合块状修剪相结合,块状运行长度编码显著降低了稀疏编码的需求大小。

2 稀疏卷积:

image.png

通常,在密集格式中解码稀疏权重并进行卷积计算会占用大量内存足迹。为了避免不必要的内存使用,作者直接在稀疏格式中进行稀疏卷积计算。图 9 详细介绍了稀疏卷积计算的细节。稀疏权重解码以获取坐标和值。每个权重值对应输入矩阵的一个子矩阵。提取子矩阵后,作者执行元素矩阵乘法并累积结果作为输出。

具体来说,同时解码两个权重值并从子矩阵中提取两个对应元素。然后,将两个 INT8 值符号扩展为 INT16,并作为 INT32 格式连接。因此,上述乘法累加计算可以通过 SIMD 指令执行。同时,尽管维度不同,但稀疏线性层也采用相同的方法实现。

3 Softmax 优化:

根据作者的剖析,Softmax 层的计算非常耗时,因为需要指数运算。Softmax 的计算可以描述为以下公式:

image.png

其中, 表示第 个值, 表示最大值( 表示一个通道中的元素数量)。由于 Softmax 的输入是 INT8 格式,指数范围从 -256 到 0。因此,根据输入大小,会增加冗余计算。为了解决这个问题,作者对 Softmax 操作进行了优化,使用查找表来减少冗余计算。

为了计算负指数函数,SparseEngine 将指数因子的绝对值作为索引查询位图。如果相应的位已存在,SparseEngine 从查找表中获得结果,并在 Softmax 计算中重复使用。否则,计算指数函数并将结果存储在表中,更新位图中的相应位。根据 SparseEngine 的评估,位图和查找表的内存使用通常不超过 1.2KB。由于在执行 Softmax 优化时可以重用卷积的缓冲区内存,因此在计算过程中没有额外的内存成本。

3、实验

3.1 离线验证

image.png

表 I 展示了作者的 TinyFormer 与其他最先进模型之间的比较结果。通过 SuperNAS 和 SparseNAS 的协同优化,作者的 TinyFormer-300K 能够满足硬件约束,并在 CIFAR-10 上实现创纪录的准确率(96.1%)。如图 4 所示,TinyFormer 设计为一种混合模型,包含卷积和 Transformer 编码器层。

与其他轻量级混合模型(如 MobileViT-XS 和 CCT-7/3×1)相比,TinyFormer 更好地结合了 CNN 和 Transformer 的优势,在有限资源下实现更高的准确度。与针对 CIFAR-10 设计的 CCT-7/3×1 相比,TinyFormer-300K 在提高准确度的同时,峰值内存和存储分别减少 41% 和 74%。即使与针对边缘设备部署设计的 MobileNetV2 相比,TinyFormer-300K 在峰值内存、存储和准确度方面也具有优势。

同时,TinyFormer-120K 针对更严格的硬件约束进行设计。与 MobileViT-XS 相比,TinyFormer-120K 在峰值内存和存储更少的情况下,提高了 4.4% 的准确度。此外,TinyFormer-300K 与 ResNet-18 相比,准确度仅略有下降,但存储使用量减少 91%。

1 搜索空间:

image.png

搜索空间设计通常会影响采样的模型大小。不合适的搜索空间会对实验结果产生负面影响。如图 10(a)所示,作者针对三种不同大小的搜索空间进行实验,包括小、正常和大。使用 λ 和 λ 的超参数,只有正常搜索空间的接受概率超过 90%。小和大搜索空间的接受概率均小于 30%。小搜索空间主要包含密集模型,具有较低的容量,而大搜索空间中的模型具有更高的参数计数和更高的稀疏度。

图 10(b)显示了从每个搜索空间获得的最佳模型在准确度和压缩比方面的性能。虽然从小搜索空间搜索到的模型不需要剪枝,但其准确性低于其他模型。从大搜索空间搜索到的模型具有最高的原始准确性。但是,它需要剪去 88% 的权重以满足硬件约束,导致准确性显著下降。另一方面,从正常搜索空间搜索到的模型在模型大小和稀疏度之间具有良好的平衡,并在 MCU 上实现最高的准确性。

2 消融研究:

在此部分,作者从表 II 中展示 TinyFormer 的消融研究,包括三个方面:是否使用 Transformer 模块、DoT 的数量以及是否在搜索阶段采用混合块大小剪枝。表 II 中,TinyFormer 是指表 I 中采用的 TinyFormer-300K 模型,具有 Transformer 模块、两个 DoT 和混合块大小剪枝。

为了了解 TinyFormer 中 Transformer 模块的影响,作者搜索了一个不包含 Transformer 模块的 CNN 模型,并将其标记为 TinyFormer(w/o Tr.)。TinyFormer(w/o Tr.)删除了 DoT 架构中的 Transformer 块,仅保留下采样块和 MobileNetV2 块。与 TinyFormer(w/o Tr.)相比,TinyFormer 在几乎相同的资源使用情况下获得了更好的性能,准确性提高了 1.5%。这些结果表明,将 Transformer 相关块或层引入 TinyML 可以使性能得到改进。

此外,作者还进行了实验以评估 DoT 层数量对模型准确性的影响。TinyFormer(Single DoT)来源于仅包含单个 DoT 架构的超级网络,同时满足相同的水泥硬件约束。在存储方面,TinyFormer(Single DoT)仅占存储限制的 66.8%,导致准确性下降 1.48%。当使用单个 DoT 时,TinyFormer(Single DoT)的主要瓶颈是内存约束。相反,具有两个 DoT 的模型几乎接近存储和内存的限制,有效利用资源。因此,作者的基本实验中采用了两个 DoT。

image.png

最后,作者评估了 SparseNAS 阶段混合块大小策略的有效性。特别是,TinyFormer(Block Size = 2)和 TinyFormer(Block Size = 4)分别表示块稀疏化阶段块大小为 2 和 4 的模型。表 II 显示,较大的块大小可以在给定限制内更高效地存储权重。

然而,将所有Patch大小设置为 4 会损害模型的准确性。基于这些结果,采用混合块大小策略的剪枝方法在块大小和有效权重数量之间达到了最佳平衡,从而获得了具有最优性能的最适合模型。

3.2. Runtime评估

image.png

在运行时层面,作者专门为在 MCU 上进行稀疏推理而开发了 SparseEngine。SparseEngine 的实现成功地将最高精度搜索模型的推理时间降低至 3.8 秒。为了评估 SparseEngine 的性能,作者在 CMSIS-NN 和 SparseEngine 中部署了相同的稀疏模型。如图 11 所示,SparseEngine 在推理延迟和存储占用方面都优于 CMSIS-NN。通过利用稀疏推理支持,SparseEngine 在 MCU 上的存储需求显著降低,范围从 9% 到 78%。

此外,通过专用优化,SparseEngine 实现了推理速度的提升,范围从 5.3×到 12.2×。值得注意的是,为了与 CMSIS-NN 进行公平比较,作者需要确保模型以密集形式适应资源约束。因此,本次实验中的模型无法实现最高精度。

image.png

为了识别推理过程中的瓶颈,作者评估不同层的运行时 breakdown。如图 12(a)所示,作者的发现表明,Softmax 操作负责大部分推理时间。在 Softmax 操作内部,耗时最长的步骤是负指数计算。然而,作者发现随着输入大小的增加,负指数的结果可以被重复使用。利用这一观察,SparseEngine 采用位图查找表来减少冗余计算并优化 Softmax 操作。

图 12(b)提供了 CMSIS-NN 和 SparseEngine 之间 Softmax 操作推理时间的比较,考虑了不同的输入大小。值得注意的是,随着输入大小的增加,SparseEngine 的优化效果更加明显。实际上,当输入形状为 [256×256] 时,SparseEngine 实现了 Softmax 操作的速度提升,高达 19×。

image.png

此外,作者还进行了一项涉及 TinyFormer 中 Scaled-LayerNorm 的实验。作者的 Scaled-LayerNorm 使用整数算术计算,而不是以前的正常 LayerNorm 操作,使其更适合在 MCU 上进行模型推理。此外,Scaled-LayerNorm 通过在舍入操作期间扩展归一化结果的范围,解决了量化过程中精度损失的问题。表 III 展示了 Scaled-LayerNorm 对加速的影响。

值得注意的是,使用 Scaled-LayerNorm 的 TinyFormer 的精度与使用正常 LayerNorm(FP32 格式计算)的精度几乎相同,而推理过程加速了 38.8×至 52.0×。这些实验结果与作者的预期一致,因为 Scaled-LayerNorm 显著提高了 LayerNorm 推理的效率,而没有明显损失精度。总之,Softmax 和 Scaled-LayerNorm 的实验结果验证了作者的观察,并突显了 SparseEngine 实现的显著加速效果。

5、参考

[1]. TinyFormer: Efficient Transformer Design and Deployment on Tiny Devices.

作者:AI视界引擎
来源:AI视界引擎

推荐阅读

本文章著作权归作者所有,任何形式的转载都请注明出处。更多动态滤波,图像质量,超分辨相关请关注我的专栏AIWalker。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
推荐阅读
关注数
6199
内容数
192
夯实深度学习知识基础, 涵盖动态滤波,超分辨,轻量级框架等
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息