基于 Kolmogorov-Arnold Networks 的 FPGA 超快速机器学习

在现场可编程门阵列 (FPGAs) 上实现的 Kolmogorov-Arnold Networks (KANs) 能够实现亚微秒级的机器学习推理和在线学习。通过将多层感知器 (MLPs) 的固定激活函数替换为映射到硬件查找表 (LUTs) 的可学习一元函数,该方法比之前的 KAN-FPGA 实现实现了 2700 倍的加速,并在延迟和资源效率方面超越了最先进的 FPGA 加速器。

KANs 作为可训练的查找表神经网络

在 FPGAs 上实现 KANs 可以让神经网络直接作为数字逻辑执行,而不是作为处理器上的指令序列。这消除了 CPU 和 GPU 中固有的调度和内存访问开销,这对于需要纳秒级延迟的应用至关重要。

基于 LUT 的方法

在标准的 MLP 中,可学习的权重是标量,而激活函数是固定的。KANs 通过在网络的边缘使用可学习的一元函数反转了这一点。这些函数在 FPGAs 上使用查找表 (LUTs) 表示,查找表存储了每个二进制输入组合的输出值。

虽然由于指数级缩放,将多元函数表示为 LUTs 在计算上是不切实际的,但 KANs 通过对一元激活函数求和来实现。这种设计允许:

  • 线性缩放: 资源使用量随输入维度线性缩放,而不是指数级缩放。
  • 高效剪枝: 可以通过消除接近于零的激活函数来移除不重要的网络组件,从而减少所需的 LUTs 和加法器数量。
  • 全定义域覆盖: 由于 KAN 激活函数是在小的有限定义域上定义的,因此在量化过程中可以覆盖整个输入范围。

推理实现

对于固定模型推理,KANs 在软件(例如 PyTorch)中进行训练,然后部署到 FPGAs。该架构使用定点量化方案,其中激活函数通过 LUTs 并行计算,然后使用加法器树进行求和。这个过程允许前向传播进行极高速的执行。

实时 FPGA 在线学习

在线学习允许模型在数据到达时实时调整其行为,这对于核聚变或量子控制等非静态系统至关重要。通过将前向传播、反向传播和梯度更新直接实现为 FPGA 上的并行电路,系统可以在亚微秒的时间尺度上更新模型参数。

B-Spline 局部性与稀疏更新

为了实现片上学习,系统将 B-spline 基函数存储在 LUTs 中,而不是最终学习到的激活函数。这是必要的,因为系数在训练期间是动态更新的。

B-splines 提供了一个关键优势,称为 局部性:对于任何给定的输入,只有一小部分基函数(由样条阶数 $k$ 决定)是非零的。因此,前向和反向传播的硬件逻辑随 $k$ 而缩放,而不是随网格单元总数 $G$ 缩放。这允许模型通过增加网格大小来提高表达能力,而不会按比例增加硬件资源使用量。

通过有界激活函数实现稳定性

定点量化在处理 MLP 梯度和权重中发现的宽范围量级时往往很吃力。KANs 减轻了这个问题,因为 B-splines 是有界的。对于任何输入 $x$,输出始终被限制在最小和最大系数之间:$\min(c_i) \le \sum B_i(x)c_i \le \max(c_i)$。

这种有界性确保了激活函数和梯度都保持在可预测的范围内,降低了量化误差并提高了硬件上基于梯度的学习的稳定性。

性能与硬件缩放

基于 KAN 的在线学习器可以扩展到超过 50,000 个参数,同时保持亚微秒级的延迟。与 MLPs 相比,KANs 在扩展网格大小时表现出近乎恒定的资源使用量,并在包括量子比特读取、非平稳控制和函数近似在内的基准测试中表现出卓越的收敛性。

社区洞察与约束

虽然延迟方面的性能提升非常显著,但该架构并不打算用于像大语言模型 (LLMs) 这样的大规模、高吞吐量模型。技术观察者之间的讨论强调了重点是延迟而非吞吐量:

"I've been trying to hit 100,000tokens/s with a 3.28m dumb model, and even this is an order of magnitude too large to benefit. It appears to be focussed more on latency, than throughput."

此外,该方法的实际效用在专门的、小型模型任务中最为明显,其中亚微秒级的响应时间是硬性要求。

Sources