← 返回 PaperDaily 大模型与智能体

边缘AI福音:FINN框架新优化,低精度推理DSP不“摸鱼”了

FPGA上跑AI模型,是不是总感觉DSP资源不够用?别急,AMD(原Xilinx)联合高校带来新解法:一种能在DSP里动态打包任意精度整数运算的“智能打包”黑科技。LUT减少21%,效率提升36%,还完全开源!

边缘AI福音:FINN框架新优化,低精度推理DSP不“摸鱼”了
🐉 龙哥读论文知识星球来了!
公众号每日8篇拆解不够看?星球无上限更AI领域论文、资讯、招聘、招博、开源代码,一站式干货,每日2分钟刷完即赚! 👇扫码加入「龙哥读论文」知识星球,前沿干货、实用资源一站式拿捏~ xingqiu_header

龙哥推荐理由:
FPGA上跑AI模型,是不是总感觉DSP资源不够用?别急,AMD(原Xilinx)联合高校带来新解法:一种能在DSP里动态打包任意精度整数运算的“智能打包”黑科技。LUT减少21%,效率提升36%,还完全开源!


原论文信息如下:
论文标题:
Arithmetic Packing on Wide Integer Datapaths in DSP Primitives of Modern FPGA Devices
发表日期:
2026年06月
发表单位:
Friedrich-Alexander-Universität Erlangen-Nürnberg, AMD Research and Advanced Development
原文链接:
https://arxiv.org/pdf/2606.11065v1.pdf
开源代码链接:
https://github.com/Xilinx/finn

AI芯片新突破:如何让FPGA的DSP“一芯多用”

闲言少叙,书接上回。刚才咱们聊到了FPGA(现场可编程门阵列)上跑AI模型时,DSP(数字信号处理)资源那叫一个“僧多粥少”,尤其当你用的是4比特、2比特这种“非常规”精度时,一个DSP的运算能力大半都被浪费在了“无用功”上,简直就像开着大卡车去送个U盘,白白烧油。
那怎么破?AMD(就是以前那个Xilinx)和德国埃尔朗根-纽伦堡大学(FAU)的科学家们一拍即合,搞出了一个“黑科技”般的解决方案。他们发明了一种叫做动态算术打包的技术,专门针对FPGA里的DSP硬核。简单说,就是给DSP这位“大力士”安排多个“轻量级”任务,让它一回合能干好几个人的活,效率直接拉满。
这可不是空口画大饼。在UltraNet这个流行的AI模型上实测,直接减少了21%的LUT(查找表)资源消耗,同时每个DSP每秒能处理的帧数(FPS/DSP)提升了36%!关键是,他们还把这套方案完全开源了,集成到了AMD自家的FINN框架里。这波操作,可以说既给力又敞亮。
那么,这到底是怎么实现的呢?别急,龙哥带你们一层一层地往下剥皮。

痛点揭秘:低精度运算如何“榨干”DSP潜能

要理解这个黑科技,咱们得先搞清楚DSP到底是个什么“人”。你可以把FPGA里的DSP切片想象成一个专门做乘法和累加运算的“专用计算引擎”。这个引擎在设计时,就固定了它的“胃口”——比如一个DSP48E2切片,它最擅长的就是计算一个27位和一个18位数字的乘法。在大多数高精度的通用计算里,这自然很香。
但问题来了,AI领域的神经网络,为了追求速度和能效,越来越喜欢用非常低的精度,比如4位甚至2位的整数来运算。这时候,如果你还把每个4位的乘法和这个“大引擎”一对一绑定,那就像你用一个能装十几斤水的大桶,却只装了半碗水进去。桶还是那个桶,但利用率简直低得令人发指。
图1:DSP切片的块级架构。
图1:DSP切片的块级架构。
你看图1里,DSP内部那叫一个复杂,有预加器(Pre-adder)、乘法器(Multiplier)、以及累加器(Accumulator)。整个结构就是为高精度的大运算服务的。之前也有人想过往里面塞多个小运算,但都存在这样那样的问题。
比如,有的方法只支持固定的8位或4位运算,不够灵活;还有的方法虽然做到了任意精度,但是需要在DSP外增加大量的逻辑电路(LUT等)来处理符号位和进位,结果是省了DSP却废了LUT,典型的拆东墙补西墙。更别提一些方法是只针对卷积(Convolution)优化的,用不了在矩阵向量乘(MatVec)上。
为了方便大家有个直观印象,请看下表,比较了当前各种主流DSP打包实现方案的能力差异。可以看到,我们的方法在精度支持、应用场景和符号位处理上实现了全面领先。
表I:不同DSP打包实现方案的关键特性与能力对比。
表I:不同DSP打包实现方案的关键特性与能力对比。
所以,市场的核心痛点就是:如何在不增加复杂外部逻辑的前提下,实现真正的高效、任意精度的动态打包? 这就是本篇论文要解决的灵魂拷问。

核心算法:动态打包与自修复,精准拿捏符号位

好了,痛点讲清楚了,那AMD+FAU团队是怎么做的呢?他们的思路非常巧妙,可以总结为“分道行车,智能纠错”。
首先,把他们要计算的多个小数值(比如4个4位整数),像停车位一样,在DSP那个大数字通道(27位或18位)上排成一排,每个小值之间留出足够的“车道间距”。这个间距就叫做Lane Size(车道大小)。只要这个车道大小选得合适,最终大乘法器算出来的结果,就可以被像切蛋糕一样切开,每个“车道”里的结果就是一个小乘法的积。
核心问题来了:当这些小数值是有符号数的时候,事情就变得棘手。因为负数在计算机里是用补码表示的,高位全是1(也就是符号位扩展)。当几个负数打包在一起时,低位负数的符号位会向上“溢出”,把高位的车道搞得乱七八糟,根本没法直接切开。
之前的方法怎么处理这个问题的?它们不得不在DSP外面加一堆逻辑电路,专门处理这个符号位的“副作用”,又费资源又跑不快。
但这篇论文的方法就非常聪明。他们发现,虽然负数的符号位是乱的,但只要把每个小数值的符号位单独“剥”出来,同时把剩下的“身子”(数值位)打包。最后,利用DSP内部自带的、本来用不上的预加器(Pre-adder),来执行一次“减去符号位”的操作,就能完美抵消负数带来的负面影响。这样一来,所有关于符号位的处理,都被消化在了DSP内部,外部逻辑几乎为零!
图3:通过减去分离出的符号位,使用DSP预加器打包有符号权重。
图3:通过减去分离出的符号位,使用DSP预加器打包有符号权重。这里把符号位分离成一个单独的减数,再用预加器做减法,这招实在精妙。
另外,文章还解决了一个更棘手的“溢出”问题。由于计算过程中可能会出现进位,导致低位车道的结果“溢出”到高位车道。他们发明了一个“模块4参考计算”的小技巧:利用LUT的低位,对每个车道的计算结果进行一个小小的预测,然后与原结果进行比较,就能精确地知道溢出了多少,进而在输出时进行“自修复”,还原出每一个小乘法的正确值。

双剑合璧:SDV与BSEG,不同场景的优化王牌

有了基础算法,接下来就要看怎么用在不同的AI计算场景上了。论文提出了两套架构,分别对应神经网络里最核心的两种运算。

第一招:SDV (Soft Datapath Vectorization,软数据路径向量化)

这一招专门为矩阵-向量乘法(MatVec)量身定做。它的核心思想是:把矩阵的一行中的所有元素(多个小数值)打包成一个“大乘数”,然后和另一个单独的“小向量元素”一次相乘。通过前面说的智能自修复,一个DSP就能在一个时钟周期里,完成原本需要好几个DSP才能完成的工作。
下图清晰展示了SDV的整体架构,虚线抽取的结果用于“模块4参考计算”,有效追踪并修正了车道间的数据溢出。
图4:整体SDV架构。虚线和点线表示对单个比特的提取。
图4:整体SDV架构。虚线和点线表示对单个比特的提取。

第二招:BSEG (Binary Segmentation,二进制分割)

这一招则是为卷积(Conv)运算量身打造的。卷积的特点是,同一个输入数据需要和多个不同的卷积核权重相乘。BSEG则“双管齐下”,同时把卷积核的多个权重和输入的多个数据都打包起来,塞到乘法器的两个输入端。这样,乘法器一发力,就直接算出了多个乘法的部分和,而且这些部分和还在乘法器内部就自动完成了初步累加!
图2:乘法器利用方式:(a)全字乘法,(b)SDV和(c)BSEG。可以看到BSEG在乘法器内部就产生了部分和,其运算密度最高。
这个方法让DSP的运算密度(每个DSP每周期能完成的运算数)呈二次方增长!比如对于2位的运算,一个DSP理论上能一次搞掂几十个小乘法,效果惊人。
下图以具体的例子形象展示了BSEG架构在多个时钟周期内是如何工作的。
图6:逐周期演示BSEG架构的操作过程。
图6:逐周期演示BSEG架构的操作过程。
为了处理更深层次的累加(比如更大的卷积核),BSEG还引入了“车道值切片”技术,如下图所示。它将每个车道的累加结果分为“高部分”和“低部分”,只把“低部分”留在DSP内继续累加,而“高部分”引出到外围的LUT中处理,从而避免了数据溢出。
图7:用于多级累加的车道值切片。
图7:用于多级累加的车道值切片。
下图展示了两种方法理论上能达到的运算密度,精度越低,密度越高,趋势非常喜人。可以说,这就是为低精度AI推理准备的“大力出奇迹”配方。
图5:提出方法的运算密度。
图5:提出方法的运算密度。可以看出,在低精度下,BSEG的运算密度更是高大上了一个台阶。

实战检验:UltraNet模型性能飙升,资源消耗骤降

理论讲得再好,不如跑个分看看。论文选择了UltraNet这个实际的深度神经网络模型,在ZCU104开发板上,使用Vivado 2025.2工具链进行综合测试,目标时钟频率250 MHz。
我们直接看数据。下表对比了BSEG架构(使用LUTRAM或BRAM) 与现阶段的SOTA方法(HiKonv等)以及FINN基准线的对比结果。
表II:全局模型(FM)与仅卷积层(Conv)的对比。
表II:完整UltraNet模型(FM)与仅卷积层(Conv)下,BSEG架构(使用LUTRAM/BRAM)与SOTA系统的对比。
从表II来看,简直“杀疯了”!
LUT使用量:相较于FINN基准线,BSEG架构的LUT使用减少了21%到51%!(从63k降到最低31k)。这意味着LUT资源被大大节约下来,可以服务于更复杂的控制逻辑或外设。
DSP使用量:从FINN基准的586个DSP,降低到了422个,减少了28%。这直接意味着可以用更少的DSP来完成相同的工作。
吞吐效率(FPS/DSP):这是最核心的指标。FINN基准线是1.1,而BSEG达到了1.5,提升了36%!每个DSP的“生产积极性”被充分调动起来了。
再看表III,不同卷积层的资源拆解对比。虽然个别层的DSP使用数可能略微增加(因为打包方案导致并行度更高),但LUT和FF的节约是全方位的,尤其是在LUT上,降幅非常明显。
表III:UltraNet卷积层的资源利用对比:FINN基线 vs 使用BRAM(B1)和LUTRAM(B2)的BSEG架构。
表III:UltraNet卷积层的资源利用对比:FINN基线 vs 使用BRAM(B1)和LUTRAM(B2)的BSEG架构。
这些数据强有力地证明了:论文提出的动态打包方法,不是花架子,是真家伙,能在真实AI模型上带来实打实的效率提升和资源节约。

开源共享:FINN框架集成,开启高效推理新篇章

东西这么好,怎么用呢?好消息是,作者们非常有分享精神,已经将这套打包架构开!源!了!
他们把这套SDV和BSEG的SystemVerilog代码,直接集成到了AMD的开源深度学习推理框架FINN里面。FINN框架可以自动将量化后的神经网络模型(比如用Brevitas量化过的),转换成FPGA可以运行的高效数据流架构。用上这套新打包方案后,FINN生成的加速器性能会更上一层楼。
整个FINN框架由于其模块化的特点,非常适合于学术界和工业界的研究者进行二次开发和自定义。下面图展示了FINN框架的整体软件栈示意图。
FINN框架的整体软件栈示意图,展示了从量化神经网络模型到FPGA数据流架构的完整流程。
FINN框架的整体软件栈示意图,展示了从量化神经网络模型到FPGA数据流架构的完整流程。
也就是说,如果你是FPGA开发者或者AI加速的研究人员,可以直接从GitHub上FINN的官方仓库获取代码,然后在你的自定义DNN模型上部署这套优化,享受它带来的性能红利。这种开放的态度,值得点个大大的赞。

龙迷三问

下面是龙哥对于大家可能的一些问题的解答:

这篇论文解决什么问题?论文解决了FPGA上的DSP切片在处理低精度(如4位、2位)神经网络运算时资源利用率低下的问题。它提出了两种高效的动态打包方法(SDV和BSEG),能够将多个任意精度的低比特运算打包到同一个DSP数据通路上,从而大幅提升DSP的使用效率,减少FPGA其他逻辑资源(如LUT、FF)的消耗。

SDV和BSEG分别有什么含义和使用场景?SDV(软数据路径向量化):是一种只在乘法器的一个输入端打包多个数值的方法,适用于矩阵向量乘法(MatVec)。BSEG(二进制分割):是在乘法器的两个输入端都打包多个数值的方法,适用于卷积计算。它能实现更高的运算密度,因为部分和会在乘法器内部直接累加。

论文方法与之前的方法(如HiKonv)有什么区别和优势?主要区别在于处理有符号数时的态度。之前的方法(如HiKonv)需要在DSP外部增加逻辑来处理符号位。而这篇论文巧妙地利用了DSP内部的预加器,通过“分离符号位再做减法”的方式,把对符号位的处理“内部消化”掉了,从而大大减少了外部LUT资源的消耗,实现了更高的效率。此外,它支持任意精度,且同时覆盖了矩阵向量乘和卷积两种场景。

如果你还有哪些想要了解的,欢迎在评论区留言或者讨论~

龙哥点评

论文创新性分数:★★★★✰

实验合理度:★★★★✰

学术研究价值:★★★★★

稳定性:★★★★✰

适应性以及泛化能力:★★★★✰

硬件需求及成本:★★★★✰

复现难度:★★★★★

产品化成熟度:★★★★✰

可能的问题:论文主要针对AMD Xilinx的DSP48E2和DSP58进行了优化,对Altera(Intel)等其它厂商FPGA的DSP架构考虑有限。此外,文中的“模块4参考计算”修复逻辑,虽然在低精度下有效,但在绝对精度要求极高、且没有软错误保护机制的产品化场景中,其鲁棒性有待进一步验证。SDV对于DSP58(支持原生INT8模式)的增益相对有限。


主要参考文献

[4] M. Blott et al., "FINN-R: An End-to-End Deep-Learning Framework for Fast Exploration of Quantized Neural Networks," ACM Trans. Reconfigurable Technol. Syst., 2018.
[6] Y. Fu et al., "Packing Multiple Operations into a Single DSP Slice," Xilinx Whitepaper, 2021.
[8] S. Liu et al., "HiKonv: High Throughput Convolution on FPGAs with Heterogeneous Kernel Shapes," DAC, 2023.
[10] L. Sommer et al., "Overpacking: Increasing Operations Per DSP for Low-Precision Neural Networks," FPL, 2022.
[13] J. Lee et al., "Analysis of Resource-Efficient DSP Packing for High-Level Synthesis," IEEE Access, 2023.
[20] AMD/Xilinx, "FINN - A Framework for Fast, Scalable Quantized Neural Network Inference on FPGAs," GitHub, 2024. [Online]. Available: https://github.com/Xilinx/finn
[21] T. Borntrager et al., "Arithmetic Packing on Wide Integer Datapaths in DSP Primitives of Modern FPGA Devices," arXiv:2606.11065, 2026.

*本文仅代表个人理解及观点,不构成任何论文审核或者项目落地推荐意见,具体以相关组织评审结果为准。欢迎就论文内容交流探讨,理性发言哦~ 想了解更多原文细节的小伙伴,可以点击"阅读原文",查看更多原论文细节哦!       

end
欢迎加入龙哥读论文粉丝群,扫描下方二维码或者添加龙哥助手微信号加群:kangjinlonghelper。一定要备注:研究方向+地点+学校/公司+昵称(如 图像处理+上海+清华+龙哥),根据格式备注,可更快被通过且邀请进群。
如果你也对FPGA加速和高效AI推理感兴趣,想在FPGA上“压榨”出每一滴性能,那这个群就是你的加速器!快来和一群志同道合的“炼丹师”和硬件控们一起交流吧~
wechat_helper dianzan
转发文章 微博 X LinkedIn Facebook
龙哥读论文 · PaperDaily

本文基于龙哥读论文 PaperDaily 数据库整理,结合论文原文与工程视角进行解读。