优化Transformer神经网络在FPGA上的实时异常检测
摘要
本文探讨了在FPGA上优化Transformer神经网络推理以实现金融时间序列的实时异常检测,并在PYNQ-Z2开发板上展示了高效的实现。
arXiv:2607.22786v1 公告类型: 新
在这项工作中,我们探讨了如何高效优化Transformer神经网络的推理时间,并将其应用于金融时间序列的实时异常检测。金融时间序列是价格序列,例如资产价格。不幸的是,这些数据常常包含错误或异常值,使得下游数据处理任务变得无用、不稳定甚至有害。此外,金融时间序列数据的数量正在显著增加。因此,在准确性和处理速度方面,需要更好的数据清洗方法。
Transformer作为一种神经网络架构,在自然语言处理和计算机视觉等许多任务中取得了卓越的性能。时间序列建模,尤其是异常检测任务,可以从Transformer架构的特性中受益,包括捕获长距离依赖和交互的能力。
近年来,现场可编程门阵列(FPGA)等日益强大的硬件因其可重构性和高性能而得到越来越多的使用。它们可以有效地用于加速Transformer架构的计算。
我们探索了用于时间序列建模的不同Transformer架构,以及如何将它们高效地实现在FPGA开发板(PYNQ-Z2)上。特别是,我们考察了Transformer在时间序列异常检测中的应用,并展示了如何高效地在FPGA开发板上实现以最小化延迟。
代码可在 https://github.com/thxi/icl_thesis 获取
查看缓存全文
缓存时间: 2026/07/28 06:21
# 优化 Transformer 神经网络以实现 FPGA 上的实时异常检测
来源:https://arxiv.org/html/2607.22786
###### 摘要
在本工作中,我们探索如何高效优化 Transformer 神经网络的推理时间,并将其应用于金融时间序列的实时异常检测。金融时间序列是价格序列,如资产价格。不幸的是,这些数据常常带有误差或异常值,使得下游数据处理任务变得无用、不稳定甚至有害[1 (https://arxiv.org/html/2607.22786#bib.bib1)][2 (https://arxiv.org/html/2607.22786#bib.bib2)]。此外,金融时间序列数据的量正在显著增加[3 (https://arxiv.org/html/2607.22786#bib.bib3)]。因此,需要更准确且处理速度更快的数据清洗方法。Transformer 作为一种神经网络架构,在自然语言处理和计算机视觉等许多任务中已展现出卓越的性能[4 (https://arxiv.org/html/2607.22786#bib.bib4)]。时间序列建模,尤其是异常检测任务,可以从 Transformer 架构的多项特性中受益,包括捕获长距离依赖和交互的能力[5 (https://arxiv.org/html/2607.22786#bib.bib5)]。日益强大的硬件,例如现场可编程门阵列(FPGA),由于其可重构性和高性能,近年来得到了越来越多的使用[6 (https://arxiv.org/html/2607.22786#bib.bib6)]。它们可以被有效地用于加速 Transformer 架构的计算。我们探索了用于时间序列建模的不同 Transformer 架构,以及如何将它们高效地实现在 FPGA 板(PYNQ-Z2)上。特别地,我们研究了 Transformer 在时间序列异常检测中的应用,并展示了如何将其高效实现在 FPGA 板上以最小化延迟。代码可在 https://github.com/thxi/icl_thesis 获取。
## 1 引言
金融时间序列数据的快速增长给保持数据质量和处理速度带来了重大挑战。在本研究中,我们通过提出基于 Transformer 的神经网络实现来应对这些挑战,该实现在异常检测任务中取得了良好性能,同时具有较低的推理时间。金融时间序列数据常常存在数据不准确、错误和异常值,使得下游数据处理任务无效甚至对决策过程有害。不断增长的金融时间序列数据量进一步凸显了这一问题的紧迫性。因此,迫切需要更准确且更快的数据清洗方法。Transformer 作为一种强大的神经网络架构,已在包括自然语言处理(NLP)和计算机视觉在内的多个领域持续展现出卓越的性能。利用 Transformer 架构的能力进行时间序列建模,尤其是在异常检测领域,具有诸多优势,包括捕获数据中的长距离依赖和复杂交互的能力。硬件的发展,例如现场可编程门阵列(FPGA)的日益普及,由于其可重构性、高性能和确定性延迟,带来了更高的计算能力。这些 FPGA 可有效用于加速与 Transformer 架构相关的计算。
### 1.1 大纲
在第2节 (https://arxiv.org/html/2607.22786#S2)中,我们将描述异常检测任务的问题陈述。在第3节 (https://arxiv.org/html/2607.22786#S3)中,我们将描述 Transformer 架构中使用的主要概念和思想。在第4节 (https://arxiv.org/html/2607.22786#S4)中,我们将描述 FPGA 编程的主要概念以及可用于加速计算的具体优化。在第5节 (https://arxiv.org/html/2607.22786#S5)中,我们将描述为评估所提出架构性能而进行的实验。第6节 (https://arxiv.org/html/2607.22786#S6)将总结本工作并提供未来工作的一些想法。
### 1.2 贡献
本文的主要贡献如下:
1. 1. 在 FPGA 板上实现原始 Transformer 架构。
2. 2. 在 FPGA 板上实现线性注意力 Transformer。
3. 3. 分析所提出架构的延迟/资源利用权衡。
4. 4. 比较分析所提出架构在异常检测任务中的准确率性能。
## 2 问题陈述
在本节中,我们将描述异常检测任务的问题陈述。
### 2.1 定义与示例
###### 定义 2.1。 我们考虑一个时间序列 \(\mathcal{T}\),它只是一个带时间戳的观测序列 \(x_i \in \mathbb{R}^n\),可能带有一些元数据 \(y_i\)。大多数情况下我们将考虑单变量情况,即 \(n=1\)。一个例子是单只股票的价格时间序列。然而,多变量情况也很重要,我们将在实验中考虑。例如,可以考虑多只股票的价格时间序列得到多变量时间序列,或者也可以在原始时间序列上创建特征(例如,通过计算差分时间序列)来得到多变量时间序列。
###### 定义 2.2。 差分时间序列是一个时间序列 \(\mathcal{T}\),其中每个观测 \(x_i\) 就是当前观测与前一个观测的差值。即,\(x_i = x_{i-1} - x_i\)。
图 1:苹果股价的多变量时间序列样本。蓝线是收盘价,红线是收盘价的差分。
###### 定义 2.3。 异常检测任务:对于任意长度为 \(n\) 的时间序列 \(\hat{\mathcal{T}}\),我们需要预测 \(\mathcal{Y} = \{y_1, ..., y_n\}, y_i \in \{0,1\}\),即第 \(i\) 个时间戳的数据点是否异常(按照惯例,我们使用 1 表示异常,0 表示非异常)。在本工作中,我们将限定于有监督情况,即标签 \(y_i\) 在数据集“已见”(或训练)部分已知。
### 2.2 不同异常类型
尽管没有普遍接受的异常定义,但对合成异常存在一种常见的分类,分为不同类型。如需全面综述,读者可参考[8 (https://arxiv.org/html/2607.22786#bib.bib8)]、[9 (https://arxiv.org/html/2607.22786#bib.bib9)]。在本工作中,我们只考虑点异常类型,因为本工作的主要焦点不是展示 Transformer 架构在不同类型异常上的卓越性能,而是展示它可以被高效地实现在 FPGA 板上。
###### 定义 2.5。 点异常是相对于其余数据被视为异常的个别数据点。例如,点异常可以是股票价格的突然尖峰。见图 1 (https://arxiv.org/html/2607.22786#S2.F1)。数学上,我们可以将点异常定义如下:
\[
x_i = \begin{cases}
x_i^{\text{original}} + S & y_i = 1 \\
x^{\text{original}} & \text{otherwise}
\end{cases}
\tag{2.1}
\]
其中 \(x^{\text{original}}\) 是原始时间序列(如同没有异常值),\(S\) 是尖峰。
图 2:苹果股票修改后的时间序列,注入了点异常。上方面板:价格时间序列及其分布。下方面板:差分价格时间序列及其分布。
## 3 Transformer
在本节中,我们将描述 Transformer 架构中使用的主要概念和思想,以及如何将它们用于时间序列异常检测任务。我们将描述 Transformer 架构的主要构建块,并对首先在[10 (https://arxiv.org/html/2607.22786#bib.bib10)]中引入的注意力机制给予特别关注。
### 3.1 通用架构
在[11 (https://arxiv.org/html/2607.22786#bib.bib11)]中,作者引入了原始 Transformer 架构,这是一种在自然语言处理任务中占主导地位的神经网络架构。该架构的主要特点是依赖于注意力机制,并完全消除了循环层和卷积层。
图 3:Transformer 的模型架构[11 (https://arxiv.org/html/2607.22786#bib.bib11)]
图 3 (https://arxiv.org/html/2607.22786#S3.F3) 展示了 Transformer 的主要架构。该架构由一个编码器和一个解码器模块组成。出于本工作的目的,我们将只考虑架构的编码器部分(在这方面,其思想类似于用于语言处理的 BERT 模型[12 (https://arxiv.org/html/2607.22786#bib.bib12)],它仅使用 Transformer 编码器,以及本工作使用 BERT 进行异常检测[13 (https://arxiv.org/html/2607.22786#bib.bib13)])。编码器之前有一个位置编码层,用于将位置信息“注入”到输入向量 \(x_i\) 中,因为注意力机制是置换不变的,这将在第 3.2 节 (https://arxiv.org/html/2607.22786#S3.SS2) 中解释。
#### 3.1.1 位置编码
由于注意力机制是置换不变的(即,它不考虑输入的顺序,参考第 3.2 节 (https://arxiv.org/html/2607.22786#S3.SS2)),我们需要将位置信息注入到输入向量 \(x_i\) 中。简而言之,位置编码通常是一个与输入向量 \(x_i\) 维度相同的向量,可以是固定的(例如,不同位置有相同的向量)也可以是学习的。有关不同位置编码技术的全面概述,读者可参考[14 (https://arxiv.org/html/2607.22786#bib.bib14)]和[15 (https://arxiv.org/html/2607.22786#bib.bib15)]。原始 Transformer 架构使用正弦位置编码技术,这是一种固定的位置编码方案。假设有一个长度为 \(T\) 的时间序列。那么对于维度为 \(d\) 的第 \(i\) 个输入向量 \(x_i\),其位置编码定义如下:
\[
\begin{array}{rll}
PE_{i,2j} & = \sin\left(\frac{i}{10000^{2j/d}}\right) \\
PE_{i,2j+1} & = \cos\left(\frac{i}{10000^{2j/d}}\right)
\end{array}
\tag{3.1}
\]
请参考图 4 (https://arxiv.org/html/2607.22786#S3.F4) 了解使用此方法获得的嵌入向量示例。这种正弦和余弦函数的组合使得位置编码能够以独特的方式生成位置的嵌入。然后将该嵌入加到输入向量 \(x_i\) 上,但也可以简单地将其与输入向量 \(x_i\) 堆叠起来,得到一个维度为 \(2d\) 的向量。在本工作中,我们将使用前一种方法。
图 4:对于最大长度为 100 且嵌入维度为 48 的序列的位置编码示例嵌入。嵌入是使用正弦位置编码技术生成的。列代表我们将加到输入向量 \(x_i\) 上的嵌入。
#### 3.1.2 编码器模块
编码器由 \(N\) 个相同的层组成。每一层有两个子层:一个多头自注意力层(在第 3.2.1 节 (https://arxiv.org/html/2607.22786#S3.SS2.SSS1) 中详细描述)和一个前馈(FF)层。前馈(FF)层 \(\text{FFN}(\cdot)\) 是一个简单的神经网络,包含两个全连接(FC)线性层以及它们之间的一个激活函数。具体来说,[11 (https://arxiv.org/html/2607.22786#bib.bib11)] 的作者使用了一个带 ReLU 激活函数 \(\text{ReLU}(x)=\max(0,x)\) 的 FC 层,后面再跟一个没有激活函数的 FC 层,即
\[
\text{FFN}(x) = W_2 \cdot \text{ReLU}(W_1 \cdot x + b_1) + b_2
\]
其中 \(W_1, W_2, b_1, b_2\) 分别是 FC 层的权重矩阵和偏置向量。Add & Norm 层是一个残差连接[16 (https://arxiv.org/html/2607.22786#bib.bib16)],后面跟一个层归一化层[17 (https://arxiv.org/html/2607.22786#bib.bib17)]。即
\[
\text{Add \& Norm}(x) = \text{LayerNorm}(x + \text{Sublayer}(x))
\]
其中 \(\text{Sublayer}(x)\) 可以是多头自注意力层或前馈层(参考图 3 (https://arxiv.org/html/2607.22786#S3.F3))。残差连接(即将输入加到层的输出上),也称为跳跃连接,通常用于避免梯度消失问题[16 (https://arxiv.org/html/2607.22786#bib.bib16)]。在这种情况下,残差连接用于避免当模型很深时(即顺序层数 \(N\) 很大时)模型性能的退化。虽然在本工作中我们没有使用很深的模型,但我们仍按照原始架构使用残差连接,以使训练更稳定(参考第 5.1.1 节 (https://arxiv.org/html/2607.22786#S5.SS1.SSS1))。此外,残差连接用于将位置信息传播到后续层,因为注意力机制是置换不变的(参考第 3.2 节 (https://arxiv.org/html/2607.22786#S3.SS2))。层归一化层[17 (https://arxiv.org/html/2607.22786#bib.bib17)],即 LayerNorm,用于归一化残差连接的输出。归一化用于稳定训练过程(然而,并非严格必要,关于我们的实验发现请参考第 5.1.1 节 (https://arxiv.org/html/2607.22786#S5.SS1.SSS1))。这构成了 Transformer 编码器架构的主要构建块。下一节将详细描述注意力机制。
### 3.2 注意力机制
本节将描述注意力机制、其变体及其背后的直觉。此外,我们将比较不同注意力机制实现在计算复杂度方面的差异,这对于快速计算非常重要。最重要的是,我们将描述多头注意力机制,它在原始 Transformer 架构中使用,作为第 3.1 节 (https://arxiv.org/html/2607.22786#S3.SS1) 的延续。
#### 3.2.1 点积注意力与多头注意力
Transformer 架构[11 (https://arxiv.org/html/2607.22786#bib.bib11)] 中引入的注意力机制使用了缩放点积注意力。点积注意力机制的主要思想是计算每个输入向量 \(x_i\) 的查询 \(q_i\) 到一组键值对 \((k_j, v_j)\) 的映射。查询 \(q_i\)、键 \(k_i\) 和值 \(v_i\) 向量只是输入向量 \(x_i\) 的线性变换,即
\[
q_i = W_Q \cdot x_i, \quad k_i = W_K \cdot x_i, \quad v_i = W_V \cdot x_i
\]
其中 \(W_Q, W_K, W_V\) 是权重矩阵。注意力机制是对值 \(v_j\) 的加权和,其中权重是查询 \(q_i\) 和键 \(k_j\) 的函数。即
\[
\text{Attention}(x_i) = \sum_j \alpha_{ij} v_j
\]
其中 \(\alpha_{ij} = \text{softmax}(\frac{q_i \cdot k_j}{\sqrt{d_k}})\),\(d_k\) 是键向量的维度。缩放因子 \(\sqrt{d_k}\) 用于防止当 \(d_k\) 很大时点积过大导致 softmax 进入梯度极小的区域。多头注意力通过使用多个独立的注意力头来增强模型的能力,每个头都有自己的 \(W_Q, W_K, W_V\) 矩阵。所有头的输出被拼接起来,然后通过一个线性层进行投影。相似文章
超越 FP16 + ONNX 的 Transformer 体积与推理优化(剪枝/图优化收效甚微)[P]
作者分享在 162 MB Transformer 上把 FP16 + ONNX + 剪枝用到极致却收益递减的经历,求教下一步该选量化、蒸馏、低秩分解还是硬件级技巧。
RF-DETR:面向实时检测Transformer的神经架构搜索
RF-DETR提出了一种轻量级检测Transformer,通过权重共享神经架构搜索实现最先进的实时目标检测,在COCO和Roboflow100-VL上优于先前方法,同时运行速度快达20倍。
通过Kolmogorov-Arnold网络在FPGA上实现超快机器学习
本文介绍了作者的硕士论文,该论文利用Kolmogorov-Arnold网络(KAN)在FPGA上实现超快机器学习,通过自定义硬件架构实现亚微秒级推理和在线学习。文章引用了两篇已接收的论文:基于LUT评估的KANELÉ(FPGA 2026最佳论文奖)以及一种在FPGA上进行在线学习的方法(ICML 2026)。
可重构计算挑战:在Versal AI引擎上使用Transformer进行喷注标记
本文提出了一种在AMD Versal AI引擎上用于喷注标记的量化、纯整数Transformer实现,包括一个可重用的开源框架,该框架将Transformer层映射到AIE瓦片上,用于CERN LHC的低延迟触发系统。
面向金融欺诈检测的多流时序融合
提出用于金融欺诈检测的多流欺诈Transformer(MSFT),该模型使用Transformer独立编码交易、登录和风险事件流,并通过时间感知位置编码和门控融合进行融合,在大型数据集上实现了0.9961的AUROC。