Optimizing Transformer Neural Network for Real-Time Outlier Detection on FPGAs
本文提出并论证了一种在 PYNQ-Z2 FPGA 上实现的优化后的 Transformer 神经网络架构,旨在实现金融时间序列数据中高效、低延迟的实时异常检测。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下你是一名正在拥挤城市中搜寻小偷的侦探。这座城市是一条由数字组成的河流,不断流动着股票价格、服务器温度或出租车排队人数。大多数时候,这条河流流动平稳,但偶尔会有一块巨大的岩石——一个“故障”或“离群值”——跳入溪流,造成水花溅起,可能毁掉下游的一切。在金融和数据科学的世界里,这些水花是危险的;它们会误导计算机做出错误的决策。长期以来,捕捉这些水花非常缓慢,就像试图靠手工在干草堆里找一根针。但最近,科学家们制造出了一个超级聪明的侦探,叫做“Transformer”。把 Transformer 想象成一位天才图书管理员,他可以同时阅读一百万本书,并能瞬间记住第一页的故事是如何与第一千页联系在一起的。这位图书管理员非常擅长发现异常模式,但有一个问题:这位图书管理员太重、太慢了,所以跑得不够快,无法实时抓住小偷。
于是有了 FPGA,它就像是一个可以随时重新配置的定制化、超高速赛车引擎。这个研究课题要解决的核心问题是:我们能否将这位天才、沉重的图书管理员(Transformer)教会驾驶这辆赛车(FPGA),从而让他们能够瞬间发现坏数据?作者 Ilia Sobakinskikh 和 Paul Alexander Bilokon 试图研究,是否可以将这个巨大的大脑缩小,使其能够装进一个小型、可重构的芯片中,且不损失其聪明才智。他们想要证明,你不需要一台庞大的超级计算机来寻找这些金融故障;你可以在一块微小的板卡上实现这一点,速度快到足以在灾难发生前将其阻止。
捕捉故障的竞赛
作者首先研究了“异常检测”问题。简单来说,这只是在寻找列表中的奇特数字。他们专注于“点异常”(point anomalies),这就像是股价的突然飙升——想象一下,当不该发生时,某只股票在瞬间从 100 美元跳到了 101 美元。为了捕捉这些异常,他们使用了一种特定类型的 AI,叫做 Transformer。与那些一次只能读一个步骤的旧型 AI 不同(就像逐字阅读书籍),Transformer 会同时观察全局,理解今天的价格与几周前的价格之间的关系。
然而,运行这些 Transformer 通常既慢又昂贵。作者决定尝试在 FPGA 上运行它们,具体使用的是一块名为 PYNQ-Z2 的板卡。为了实现这一目标,他们必须在编程方式上非常巧妙。他们将 Transformer 内部的数学运算视为一条工厂流水线。他们没有等待一个计算完成后再开始下一个,而是使用了名为“流水线”(pipelining)的技术。想象一下洗车场,第一辆车还在涂肥皂时,第二辆车已经进入了冲洗环节;这能让流水线保持快速运转。他们还使用了“展开”(unrolling)技术,这就像是有十个工人同时执行同一项任务,而不是一个工人连续做十次。
结果:速度 vs. 智能
团队测试了两个版本的 AI 侦探。第一个是“标准 Transformer”(Vanilla Transformer),即标准的、沉重的版本。第二个是“线性 Transformer”(Linear Transformer),这是一个更轻量、更快速的版本,它跳过了一些繁重的数学运算。他们在 FPGA 上运行了这些模型,并将其与标准计算机处理器(CPU)进行了对比。
结果展示了两种不同的权衡。经过优化的标准 Transformer 在 FPGA 上变得极其迅速。它处理数据仅需 37.14 微秒(也就是 0.000037 秒!)。如果没有这些特殊的优化,同样的工作需要 347.45 微秒,即慢了十倍。线性 Transformer 则更快,时钟频率达到了 29.86 微秒。
但速度是有代价的。为了获得这种速度,芯片必须工作得更加辛苦。优化后的 Transformer 使用了 90% 的可用“LUT”(芯片内部微小的逻辑开关)和 30% 的“FF”(存储位),而未优化的版本分别仅使用了 10% 和 2%。这就像把自行车升级为摩托车:你跑得更快了,但你需要更大的引擎和更多的燃料。
侦探是否依然胜任工作?
速度固然重要,但侦探是否依然聪明?作者在现实世界的数据上测试了他们的模型,包括纽约市出租车需求、服务器性能日志以及高频股票价格。他们将他们的 AI 与一个简单的“线性回归”(Linear Regression)模型进行了对比,后者就像是一个只看最近一个数字并据此进行猜测的侦探。
结果显示,Transformer 在识别异常方面通常比简单模型要好得多。在 KPI 数据集(服务器日志)上,标准 Transformer 在训练数据上的准确率达到 0.98,在验证数据上达到 0.97,F1 分数(平衡了捕捉坏事与“虚警”能力的指标)分别为 0.71 和 0.76。线性 Transformer 的准确率略低,但表现依然强劲。然而,在股票市场数据(FI2010)上,这些模型表现得有些吃力,F1 分数降至 0.06 和 0.09,这表明虽然它们很快,但在识别每种类型数据的每一个细微故障方面并非完美。
有趣的是,作者发现一些通常被认为对 Transformer 至关重要的特征,例如“位置编码”(positional encoding,一种告诉 AI 数字顺序的方法),在他们的特定设置下反而导致了训练不稳定并降低了效果。他们不得不关闭这些特征才能让模型在芯片上正常工作。
总结
本文并不声称已经永久解决了异常检测之谜。相反,它表明我们可以成功地将这些强大的 AI 模型缩小,使其适配在小型、快速的芯片上。作者通过展示使用流水线和展开等巧妙的编程技巧,可以让 Transformer 在 FPGA 上的运行速度提升 10 倍。虽然这种速度是以消耗大量的芯片资源为代价,但它证明了实时、高速的异常检测是不需要依赖庞大数据中心的。这是一个概念验证,证明了捕捉金融故障的未来可能不在于巨大的服务器机房,而是在于在数据中以闪电般速度穿梭的微小、可重构的芯片之中。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。