精读笔记
Problem Setting
这篇论文真正处理的是 edge-class FPGA 上 ViT 推理的结构不稳定性问题:标准 ViT 主要是 FC,hybrid ViT 混入大量 CONV,且每层 GEMM shape 差异很大。困难不在单个 FC 或 CONV 怎么做快,而在同一块很小的 FPGA 上如何避免为某一类模型过拟合。以前方法常卡在两个极端:专用 attention/FC 加速器在 hybrid ViT 上覆盖不足,hybrid 专用设计又依赖具体模型结构和较大 FPGA 资源。关键矛盾是 flexibility 与 utilization 的冲突:越通用越容易像普通 GEMM engine 一样浪费带宽和 PE,越专用越难覆盖下一代 edge ViT。
Motivation
作者的出发点是现代 edge ViT 不再有稳定的 dominant operator。ViT-T/DeiT-T 的瓶颈更像 dense FC,MobileViT/EfficientViT 则有大量 CONV 和小宽度矩阵;如果硬件数据流固定,某些 layer 会天然低利用率。已有路线缺的是一个在真实 TFLite graph 中可部署、可跨模型复用、又不会因为支持多算子而耗尽 PYNQ-Z2 资源的中间方案。论文选择不追求 full graph acceleration,而是承认 CPU/FPGA 分工:FPGA 只做最规则、最可复用的 INT8 GEMM,CPU 保留不规则控制流和非线性算子。
Core Idea
FlexViT 的核心不是提出新的 ViT 算法,也不是新的 attention 加速,而是把 ViT/hybrid ViT 的可加速部分统一压缩到一个 GEMM 抽象里,并把适配性放在数据流选择上。FC 直接是 GEMM,CONV 通过 runtime im2col 变成 GEMM;之后硬件只需要回答一个问题:当前 layer 更应该复用 input 还是复用 weight。
这个设计的本质区别在于,它不把模型类别作为硬件 specialization 的依据,而把 post-im2col GEMM shape 作为调度依据。这样一来,标准 ViT 与 hybrid ViT 的差异被降维成 N/M/K 的差异,硬件可泛化性来自 shape-adaptive reuse,而不是来自覆盖更多手写算子。直觉上这会有效,因为 edge ViT 的性能损失很大一部分来自矩阵长宽不均导致的阵列空转和重复搬运,而不是 MAC 本身不够复杂。
Method
第一,统一 GEMM 化解决算子异构。它把 FC 和 CONV 都交给同一个 INT8 GEMM engine,避免在小 FPGA 上为 CONV/FC 各自保留专用 datapath;代价是 CPU-side im2col 和非 GEMM 算子仍可能成为系统瓶颈。
第二,dual-mode dataflow 解决维度异构。Input-Broadcast 更适合输出宽度足够大的 FC-like layer,Weight-Broadcast 更适合空间维大但输出通道窄的 CONV-like GEMM。核心变化是复用方向随 layer shape 改变,而不是固定 weight-stationary 或 output-stationary 全局策略。
第三,depth-first tiling 解决片上存储与 DRAM 带宽矛盾。它尽量让 K 维 accumulation 在一次 tile 内完成,把 partial sum 留在寄存器,只写回最终 INT8 输出;这比在低端 FPGA 上扩大 array 更实际,因为 partial-sum traffic 对带宽和能量都很贵。
第四,PPU 支持 FC per-tensor 与 CONV per-channel requantization,保证同一 GEMM 输出能接回 TFLite INT8 graph。这里的贡献更偏工程必要性,不是核心算法创新。
Key Insight / Why It Works
最关键 insight 是:在资源受限 FPGA 上,ViT/hybrid ViT 的“异构性”不一定要通过异构硬件解决,而可以通过统一算子加 shape-aware dataflow 解决。真正有效的部分大概率是 memory reuse 与 partial-sum locality,而不是 PE 结构本身。对于 PYNQ-Z2 这种平台,避免 32-bit partial sum 出片和减少重复 DMA,往往比追求更高峰值 GOPS 更重要。
dual-mode dataflow 的价值在于把同一个小阵列从“只擅长宽矩阵”扩展到“也能处理 tall-skinny CONV GEMM”。这不是新的计算模型,但在 ViT accelerator 语境下是实用的重组:它把模型架构多样性转换成矩阵形状调度问题。它的泛化性也因此有边界——只对能被 GEMM 表达且主要瓶颈在 FC/CONV 的部分有效。
最可能的核心贡献是 unified GEMM + per-layer reuse-mode selection + single-pass accumulation 这一组合。runtime im2col、TFLite delegate、PPU quantization、AXI stream overlap 等更多是让系统跑起来的工程支撑。增益来源不完全清晰,因为论文没有足够消融区分 dual-mode 调度、tiling、INT8 GEMM、DMA overlap 各自贡献。
这篇本质上不是 scaling、不是 retrieval、不是更强表示学习,而是 memory reuse / dataflow adaptation / deployment realism。它的价值在硬件系统层:在很小的 FPGA 上接受不完整 offload,通过更稳健的数据复用拿到有限但真实的端到端收益。
Relation To Prior Work
最接近的是 FPGA 上的 ViT dataflow accelerator、GEMM-based DNN accelerator,以及 hybrid ViT 专用加速器。和 ViTA、ViA 等标准 ViT 加速路线相比,FlexViT 不把 attention/FC 作为唯一目标,因此能覆盖 CONV-heavy hybrid 模型。和 EfficientViT/MobileViT 专用加速器相比,它不绑定具体 block 结构,而是绑定 GEMM primitive,因此模型覆盖更宽但峰值专用优化更弱。
看似新的部分中,im2col-to-GEMM、output-stationary accumulation、banked buffer、INT8 requantization 都是成熟思想;新意主要在于把这些以 SECDA-TFLite 的 end-to-end delegate 方式组合到一个低端 FPGA 可运行系统里,并用 dual-mode broadcast 处理 ViT layer shape variance。它属于“通用 GEMM substrate + runtime shape-aware scheduling”的技术谱系,而不是“新型 Transformer accelerator”。
实质创新不是某个模块,而是设计取舍:放弃 full operator coverage,换取小 FPGA 上 FC/CONV 的统一可部署加速。这一点比单纯报告高 GOPS 更有意义。
Dataset / Evaluation
评估覆盖了标准 ViT、Swin、MobileViT、EfficientViT,任务层面主要是 ImageNet-style INT8 TFLite inference,不是多任务、多输入分辨率或真实应用 workload 的大范围验证。强点是真机 PYNQ-Z2 端到端测量,包含 CPU-FPGA 同步、DRAM、AXI 等系统开销,比只报 synthesis estimate 更可信。
实验基本支持“FlexViT 可以在低端 FPGA 上跨标准/hybrid ViT 获得真实加速”这个 claim。但它没有充分证明“dual-mode dataflow 是主要原因”,因为缺少单模式、无 depth-first、不同 TK/核心数、CPU im2col overhead 的拆解。端到端结果也暴露了 claim 的边界:layer-level 加速可观,但 Other 算子占比高时整体收益很快被 Amdahl 限制。
能量评估更现实但不完全正面:某些 hybrid 模型能量反而略差,说明该系统更适合 offload 比例高、GEMM 密集的模型,而不是所有 edge ViT。
Limitation
第一,方法成立依赖 GEMM-dominant 假设。只要模型中 LayerNorm、Softmax、reshape、memory movement、dynamic token operation 占比升高,FPGA GEMM 再快也难转化为端到端收益。
第二,CPU-side im2col 是明显的问题转移。它让硬件统一了,但可能增加内存 footprint 和 CPU 预处理压力;文中未充分说明这部分在不同 CONV 类型下的成本,也没有细粒度归因。
第三,泛化性主要是对 FC/CONV shape 的泛化,不是对 ViT 全图结构的泛化。若未来模型采用更多 attention variant、sparse/dynamic routing、operator fusion 或非 GEMM token mixing,这个统一抽象会变窄。
第四,资源使用已经很接近 PYNQ-Z2 上限,BRAM 尤其紧张。所谓 flexible 并不意味着易扩展;扩大 TK、core 数或支持更多 operator 都可能直接撞资源墙。
第五,增益来源不清。没有充分消融时,很难判断 dual-mode dataflow 本身贡献多少,哪些只是来自 INT8、并行 GEMM、预加载、DMA overlap 或平台 baseline 较弱。
Takeaway
- 1. 对 edge FPGA ViT 加速,最可迁移的 insight 是把架构异构性降维成 GEMM shape 异构性,再用 runtime dataflow selection 处理,而不是为每种 block 设计硬件。
- 2. 在低端 FPGA 上,partial-sum locality 和数据复用方向往往比峰值算力更决定真实端到端表现;single-pass accumulation 是比大阵列更稳健的优化。
- 3. FlexViT 推动的是部署可信度而不是模型性能:真机、TFLite delegate、INT8 graph 保真,比只在大 FPGA 上报理想吞吐更接近实际 edge AI。
- 4. 下一步真正值得做的不是继续堆 GEMM,而是解决非 GEMM “Other” 的系统瓶颈:operator fusion、CPU-FPGA pipeline、LayerNorm/Softmax/reshape 的低成本 offload,或者从模型设计上提高 GEMM 可覆盖比例。
一句话总结
FlexViT 是一篇偏系统部署的 ViT FPGA 加速工作,它的真正贡献是在低端 FPGA 上用统一 INT8 GEMM 加 shape-aware 双模式数据流,把标准与 hybrid ViT 的 FC/CONV 加速问题组织成可复用的 memory-reuse 方案,而不是提出新的 Transformer 计算范式。
