《On-Device Qwen2.5》论文详解:KV260 上的 Qwen2.5-0.5B AWQ + FPGA 加速架构

面向你正在考虑的 Qwen2.5-0.5B FPGA 硬化/加速路线,本报告拆解论文中的软硬件协同思想、AWQ_MACRO 数据格式、4 通道 AXI 数据流、MACRO_MAC 微结构、性能结果与可复现风险。

论文:arXiv:2504.17376 平台:AMD/Xilinx Kria KV260 / K26 SOM 模型:Qwen2.5-0.5B 方法:AWQ + PL MAC 加速 生成日期:2026-06-17

0. 来源与授权说明

本文分析对象为 Maoyang Xiang、Ramesh Fernando、Bo Wang 的论文 On-Device Qwen2.5: Efficient LLM Inference with Model Compression and Hardware Acceleration。arXiv 摘要页显示该论文于 2025-04-24 提交,主题为硬件架构与机器学习,摘要称其在 Xilinx Kria KV260 上部署 Qwen2.5-0.5B,并使用 AWQ 与 FPGA 加速执行流水线提升压缩率和吞吐。

原文链接:arXiv 摘要页arXiv HTMLPDF。arXiv 页面给出的许可证链接为 Creative Commons Attribution 4.0 International,CC BY 4.0 允许分享和改编,但需要署名并说明改动。

本 HTML 报告中的中文译文、图注翻译和架构解释为基于原文的中文整理与改编;原始论文图表来自 arXiv:2504.17376,按 CC BY 4.0 署名使用。图 2 在原论文中注明改编自 AWQ 相关工作。

目录

1. 一页结论

55.1%模型体积下降:988 MB -> 443.81 MB,来自 AWQ GS=64。
5.10 token/s*论文给出的吞吐,星号表示基于 co-simulation,不是完整上板闭环实测。
384 DSP4-MAC_MACRO 加速器综合资源,占 K26 约 30% DSP。
91.61%PS baseline 中 MAC 相关操作占总延迟比例,是论文选择加速矩阵计算的直接依据。
核心判断:这篇论文不是“把 Qwen2.5-0.5B 全部硬化到 FPGA 片上”的方案,而是一个权重压缩后放外部 DDR,PL 负责高频矩阵乘/矩阵向量乘核心,PS 负责轻量算子和调度的软硬件协同加速路线。它对你最有价值的是:证明 Qwen2.5-0.5B 在 KV260 这种 4GB DDR4 + 1000+ DSP + URAM 的低价边缘 FPGA 平台上,可以用 AWQ + 自定义 MAC 数据通路做出一个合理的研究型系统。
关键限制:论文结果里 5.10 token/s 带有脚注,说明是 co-simulation 结果。论文没有给出完整开源代码、完整 prompt 长度/生成长度设置、功耗、DDR 实测带宽利用率,也没有给出所有算子上板后的端到端 profile。因此它降低了架构路线风险,但不能等价为“买 KV260 就能直接跑到 5 token/s”。

2. 论文定位:它到底做了什么

论文的目标是把 Qwen2.5-0.5B 部署到 Xilinx Kria KV260 这类边缘异构平台。KV260 的 K26 SOM 同时包含 ARM Cortex-A53 PS 和 FPGA PL,SOM 上有 4GB DDR4。AMD 官方 K26 文档列出 K26 PL 资源包括 117,120 LUT、144 个 36Kb BRAM、64 个 UltraRAM 和 1,248 个 DSP slices;这比 PYNQ-Z2/Zynq-7020 的 PL 资源大得多。

论文做了三层优化:

  1. 模型压缩:用 Activation-aware Weight Quantization(AWQ)把权重量化到 INT4,并选择 GS=64,以降低模型体积和 DDR 带宽压力。
  2. 数据布局:把 qweight、scale、zero 打包成 AWQ_MACRO,让 DDR 传输到 PL 的数据天然适合解包、反量化和 MAC 流水线。
  3. 硬件加速:在 PL 中设计 4 个并行 MACRO_MAC 单元,通过 4 个 128-bit AXI 通道喂入 AWQ_MACRO,在 PL 内进行 unpack、dequantize 和 FP32 MAC。

这条路线的本质是“压缩权重流式加速矩阵计算”,不是把 Transformer 所有层、所有权重和所有控制逻辑完全固化到片上。

3. Qwen2.5-0.5B 的硬件含义

Qwen2.5-0.5B-Instruct 的官方模型卡说明:它是 0.49B 参数、非 embedding 参数 0.36B、24 层、GQA 中 Q 头 14 个、KV 头 2 个、上下文 32,768 token、生成 8,192 token 的 decoder-only 语言模型;架构包含 RoPE、SwiGLU、RMSNorm、QKV bias 和 tied word embeddings。官方 config 还给出 hidden_size=896、intermediate_size=4864、vocab_size=151936、num_hidden_layers=24、num_attention_heads=14、num_key_value_heads=2。

模型属性数值对 FPGA 的影响
参数量0.49BBF16/FP16 约 1GB 级,必须外存流式;INT4 后仍是数百 MB。
层数24decode 时每 token 都要重复 24 层,调度开销和权重读取次数高。
hidden size896矩阵维度对小 FPGA 较友好,但仍需要高效 GEMV。
intermediate size4864FFN gate/up/down 是主要计算量,论文表 I 也显示 FFN 相关 MAC 占大头。
GQA14 Q heads / 2 KV headsKV cache 压力小于 MHA,但线性投影仍占显著计算。
vocab size151,936embedding/LM head 很大,若每 token 全量输出 logits,会造成额外 DDR 和计算压力。

论文采用的优化重点很自然地落在 MAC 上:Qwen2.5 的 prefill 阶段主要是并行矩阵-矩阵乘,decode 阶段主要是顺序矩阵-向量乘;对于边缘 FPGA 设备,decode 的每 token 延迟通常更关键。

4. 软件侧:AWQ 与 AWQ_MACRO

4.1 为什么选 AWQ

AWQ 的基本思想是:并非所有权重对输出同等重要,和激活分布强相关的少数 salient weights 对模型质量影响很大。直接保留一小部分 FP16 权重虽然有助于精度,但对硬件不友好;AWQ 采用按通道 scaling,让原本重要的权重在低比特量化时更不容易丢失信息。

论文强调 AWQ 不依赖重新训练或重建,通常使用 group size 共享 scale 参数。原 AWQ 默认 GS=128,但该论文最后采用 GS=64,原因是他们在 WNLI benchmark 上取得了更好的准确率。

4.2 AWQ_MACRO 数据块

论文不是简单地保存常见 AWQ 格式,而是修改权重映射结构,把量化权重、scale 和 zero 放到一个更适合 AXI streaming 和 PL 端流水线处理的数据块中,称为 AWQ_MACRO

AWQ_MACRO 的工程目标:让外部 DDR 中的数据排列方式,和 PL 内部的 unpack -> dequantize -> MAC 顺序一致。这样可以减少随机访存、减少 PS 预处理、提高 4 个 AXI 通道的有效利用率。

按论文描述,一个 AWQ_MACRO 会打包 GS × 8 个 INT4 qweights、8 个 scale 和 8 个 zero。scale 保留 FP16;qweights 以 32-bit 整数形式打包,每个 32-bit 包含 8 个 4-bit 权重;zero 也拆成 INT4 小块。论文还提到,对 8 个 INT4 zero 只需要 32 bit,但为了匹配 128-bit strip,会填充剩余 96 bit。

AWQ_MACRO 逻辑结构(概念化):
  scales:   8 × FP16  -> 128 bits
  zeros:    8 × INT4  -> 32 bits + 96 bits padding
  qweights: 多个 32-bit packed groups,每组包含 8 个 INT4 权重
  group:    GS=64,因此每组 scale/zero 服务一个小块内的反量化

5. 硬件侧:AXI、Unpack、Dequant、MACRO_MAC

5.1 整体平台

论文中的 KV260/K26 SOM 简化架构可以概括为:PS 侧 ARM Cortex-A53 执行 C 语言推理框架、模型加载、非线性算子和调度;DDR4 由 PS DDR controller 管理;PL 侧部署自定义加速器,通过 AXI control 接受控制信号,通过多个 AXI memory channel 从 DDR 流式读取 AWQ_MACRO。

Kria K26 SOM 简化硬件架构
原论文图 1:Kria K26 SOM 简化架构。红色箭头表示控制 AXI,蓝色箭头表示内存传输 AXI。来源:arXiv:2504.17376,CC BY 4.0。

5.2 数据通路

PS / Cortex-A53 tokenizer、调度、非线性 DDR4 AWQ_MACRO 权重块 4 × AXI 128-bit/channel Unpack Unit qweight / zero / scale Dequantize (q - zero) × scale 4 × MACRO_MAC 8×8 PE array FP32 MAC Adder Tree p_sum accumulation PS 收回结果 RMSNorm / RoPE / SiLU 采样 / 控制下一层 本图为报告重绘:反映论文 Fig.1、Fig.3、Fig.4 的组合数据流,而非原论文图片。

5.3 Unpack 与 PE 运算

Unpack Unit 把 AWQ_MACRO 拆成 scale、zero 和 qweight。qweight 原本是 32-bit packed integer,硬件用 shift + bit mask 拆成 8 个 INT4;zero 也进行类似拆解;scale 在该阶段保持 FP16。

PE 中的核心计算可以写成:

weight_diff       = qweight_int4 - zero_int4
scaled_activation = input_activation * scale_fp16
partial_sum      += weight_diff * scaled_activation

论文说,由于 KV260 平台本身并不原生支持更低精度浮点格式,最终所有 MAC 均按 FP32 实现。这一点非常关键:它降低了数值实现风险,但会显著增加 DSP 和 LUT 压力。

MACRO_MAC 硬件结构
原论文图 4:4 个 AXI 通道加载 AWQ_MACRO、Unpack Unit、MACRO_MAC PE 阵列、PE 内部运算。来源:arXiv:2504.17376,CC BY 4.0。

6. 端到端数据流

  1. 离线量化:在 PC/服务器上使用 AutoAWQ 处理 Qwen2.5-0.5B,导出 qweight、scale、zero。
  2. 重新打包:将 AWQ 的权重映射转换成论文的 AWQ_MACRO 顺序,保存为 binary 权重文件;模型结构保存为 JSON。
  3. PS 端加载:KV260 上的 C 程序读取 binary 与 JSON,准备输入 token、KV cache、临时 activation。
  4. PL 端线性层加速:当执行 Q/K/V projection、FFN gate/up/down、output projection 等矩阵计算时,PS 触发 PL 读取 DDR 中对应 AWQ_MACRO。
  5. AXI streaming:4 个独立 AXI 通道同时搬运 128-bit 数据块,喂给 4 个 MACRO_MAC 单元。
  6. PL 内流水:Unpack -> dequantize -> PE array MAC -> adder tree -> partial/full sum。
  7. PS 端非线性:论文描述中,一个输出通道累加完成后,总和会传回 PS 执行非线性操作,例如 RoPE、RMSNorm、SiLU、element-wise multiplication 以及后续控制。
工程风险点:第 7 步如果过于频繁,会造成 PS/PL 往返开销。实际复现时,应尽可能把线性层的输出块化,减少单输出通道级别的小粒度交互;进一步优化时可把 RMSNorm、SiLU/SwiGLU、RoPE 的一部分也下沉到 PL,至少减少 DDR 中间激活写回。

7. 结果、性能和瓶颈

7.1 论文的 PS baseline profile

论文表 I 给出在 KV260 PS 上运行 Qwen2.5-0.5B 的延迟拆解,编译使用 -Ofast 与 SIMD 优化,并使用四个 ARM Cortex-A53 核。表中 MAC 操作合计占 91.61%。其中 FFN Gate Projection + Up Projection 占 51.08%,FFN Down Projection + Residual Add 占 29.15%,Q/K/V Projection MAC 占 11.38%。这解释了为什么论文的硬件优化几乎全部围绕矩阵乘/矩阵向量乘展开。

论文表 I 延迟拆解
原论文表 I:PS 侧推理延迟拆解。来源:arXiv:2504.17376,CC BY 4.0。

7.2 加速器资源

论文的 4-MAC_MACRO accelerator 综合频率为 200 MHz,资源为 384 DSP、110,405 FF、96,553 LUT。按论文表述,分别约占 K26 的 30%、47%、82%。LUT 占用达到 82% 是一个明显警号:这说明该设计已经接近 K26 的逻辑资源上限,后续再塞更多非线性算子或更多 AXI 逻辑并不轻松。

论文表 II 资源利用
原论文表 II:加速器综合资源。来源:arXiv:2504.17376,CC BY 4.0。

7.3 精度、模型体积和 token/s

指标BaselineAWQ GS=64变化
Accuracy64.79%61.97%下降 2.82 个百分点,约 4.35% 相对下降。
Model Size988 MB443.81 MB降低约 55.1%。
Tokens/s2.805.10*约 1.82×,但 * 表示基于 co-simulation。
Total Score0.400.55论文自定义综合评分提升。
论文表 III 评估结果
原论文表 III:评估结果。注意 5.10 tokens/s 的脚注为 based on co-simulation results。来源:arXiv:2504.17376,CC BY 4.0。

7.4 主要瓶颈判断

  1. DDR 带宽:Qwen0.5B decode 每 token 都要流过大量权重,AWQ 只是把权重流量降低,不会消除外存带宽瓶颈。
  2. LUT 占用:该设计 LUT 82%,说明控制、unpack、FP32 dequant/MAC 和 adder tree 的逻辑成本不低。
  3. FP32 MAC:FP32 运算安全但昂贵;更极致的实现可能要用定点、BF16、自定义 FP 或 mixed-precision,但验证成本会升高。
  4. PS/PL 粒度:如果每个输出通道都回 PS 做非线性,系统会被边界开销拖慢;实际工程应尽可能批量化交互。
  5. 大 vocab 输出层:论文没有展开 LM head/top-k 的硬件处理细节,而 Qwen2.5-0.5B 的 vocab=151,936,对端到端 token loop 很重要。

8. 需要谨慎看待的地方

不能过度解读:这篇论文提供的是一个很有价值的架构线索,但篇幅只有 5 页,很多工程细节没有展开。如果把它当作可直接复刻的完整工程蓝图,会低估实现难度。
问题为什么重要复现时如何处理
5.10 tokens/s 是 co-simulation联合仿真不等同于完整板上系统实测,Linux、DMA、cache、DDR 争用、PS/PL 中断和驱动都会影响结果。先定义固定 prompt 长度、生成长度、温度/top-k,做纯 PS、PS+PL kernel、完整 loop 三层 profile。
只给 WNLI accuracyWNLI 很小,不能代表中文对话、代码、数学、长文本能力。补充 C-Eval/CMMLU 子集、中文指令集、自定义任务集的 PPL 或准确率。
表 I 单位与 token/s 难以直接对应表 I 总延迟 15,952 微秒与 2.8 token/s 不易直接互推,可能是某个片段/层/子流程 profile。只把表 I 当作比例依据,不直接用于端到端 token/s 估算。
没有开源 RTL/HLS 仓库AWQ_MACRO 布局、AXI 调度、PE 累加时序、PS 驱动等仍要自己实现。先做单 linear 层 bit-accurate golden test,再集成到完整模型。
非线性仍在 PSPS/PL 边界可能成为新瓶颈。阶段一照论文做;阶段二把 SiLU/SwiGLU、RMSNorm、RoPE 的块化实现逐步下沉到 PL。

9. 对你复现/改造的建议

9.1 如果你买 KV260

KV260 是这篇论文的原目标平台,最值得围绕它做复现。建议不要一开始就实现完整 Transformer,而是按“单算子 -> 单层 -> 多层 -> 端到端”的路径推进。

  1. 软件 golden:在 PC 上用 PyTorch/AutoAWQ 导出 Qwen2.5-0.5B AWQ GS=64;再写一个 C/Python golden loader 解析 qweight/scale/zero。
  2. AWQ_MACRO packer:严格定义 binary 格式,包括矩阵维度、row/column order、group order、padding、endianness。
  3. 单 linear 层加速:先只做一个矩阵向量乘,输入 activation 固定,输出与 PyTorch 反量化结果逐元素比对。
  4. 多 AXI 读带宽测试:在不接 MAC 的情况下测 4×128-bit AXI 的实际 sustained bandwidth,再接 unpack/dequant/MAC。
  5. 完整 decode loop:先限制上下文到 256/512 token,禁用复杂采样,只做 greedy,保证 token-by-token 跑通。
  6. 优化:减少 PS/PL 往返,把输出缓存、top-k、部分非线性逐步下沉。

9.2 如果继续用 PYNQ-Z2

这篇论文的 4-MAC_MACRO 加速器用 384 个 DSP,而 PYNQ-Z2 的 Zynq-7020 总 DSP 只有 220,且 LUT/BRAM/DDR 都更弱。因此原设计不能直接移植。PYNQ-Z2 上最多参考它的思想,缩成 1 个 MACRO_MAC、1-2 个 AXI HP 通道、低频率、低上下文长度、低吞吐 demo;如果你的目标是 Qwen2.5-0.5B 的严肃性能实验,KV260 比 PYNQ-Z2 合理得多。

9.3 我建议你重点复刻的三个模块

AWQ_MACRO packer决定 DDR 访问效率,是软件和硬件的接口合同。
Unpack + Dequant决定是否能把 INT4 权重流顺滑转换成 MAC 输入。
MACRO_MAC GEMV决定 decode token/s,是最核心、最值得单独 benchmark 的模块。

附录 A:论文全文中文译文

以下为原论文主体内容的中文翻译与术语统一版。为了便于工程阅读,少量句子采用意译,表格标题和图注同步翻译。原文作者、题名、图表来源和 CC BY 4.0 授权见本报告开头。

题名:On-Device Qwen2.5: Efficient LLM Inference with Model Compression and Hardware Acceleration
中文题名:端侧 Qwen2.5:结合模型压缩与硬件加速的高效 LLM 推理
作者:Maoyang Xiang、Ramesh Fernando、Bo Wang,Singapore University of Technology and Design。星号表示共同贡献。

摘要

基于 Transformer 的大语言模型显著推动了人工智能能力的发展,但在边缘设备上部署时,会面临高计算需求、内存带宽受限以及能耗较高等挑战。本文针对这些问题,提出了一个在 Xilinx Kria KV260 边缘平台上部署 Qwen2.5-0.5B 模型的高效框架。该平台是一个异构系统,集成了 ARM Cortex-A53 CPU 与可重构 FPGA 逻辑。

通过结合 Activation-aware Weight Quantization(AWQ)与 FPGA 加速执行流水线,本文方法同时提升了模型压缩率和系统吞吐。此外,本文提出了一种混合执行策略:将计算密集型操作智能卸载到 FPGA,同时使用 CPU 执行较轻量的任务,从而平衡计算负载并最大化整体性能。

该框架相对于原始模型实现了 55.08% 的模型压缩率,并达到 5.1 tokens/s 的输出速度,超过了 baseline 的 2.8 tokens/s。

索引词:大语言模型,边缘 AI,FPGA,加速。

I. 引言

近年来,大语言模型在多个领域带来了大量机会,吸引了医疗、机器人、生物医学、音乐等行业的用户。然而,模型应用的增长也带来了巨大的计算需求,尤其是 GPT-4、DeepSeek-V3、PaLM 2 等前沿模型,通常只能部署在高功耗数据中心。

相比之下,人们越来越需要在边缘设备上部署轻量级 LLM,以便在无法无线联网的环境中实现实时响应,并增强隐私保护。在本文中,我们提出了一个用于加速端侧 Qwen2.5-0.5B 推理的高效框架。

为了实现该目标,我们首先识别在资源受限边缘设备上部署该模型的关键挑战,然后选择 Xilinx Kria KV260 板卡作为目标平台。该板卡包含 Kria K26 System-on-Module(SOM)。具体来说,我们通过对 Qwen2.5-0.5B 模型中的线性与非线性操作进行详细分析,识别出降低 Kria KV260 上推理效率的主要挑战。

挑战 1:Programmable Logic(PL)侧的存储容量和带宽有限,例如 Block RAM 与 URAM。这限制了可加载模型参数的数量,也限制了模型加载效率,从而显著阻碍端侧 LLM 推理部署。

挑战 2:由 Multiply-and-Accumulate(MAC)实现的矩阵乘法主导了推理计算负载,使其成为边缘设备上 LLM 推理的性能瓶颈。

本文针对这些挑战,在准确率、压缩率与每秒 token 数之间取得了良好平衡。本文的主要贡献如下:

II. 背景与相关工作

本节概述 Qwen2.5 模型架构以及基于 AWQ 的模型压缩技术。

II-A. Qwen2.5 模型与 Transformer 架构

Transformer 架构已经成为现代大语言模型的基础,这主要归功于其 encoder-decoder 结构。具体而言,Qwen2.5 模型系列采用 decoder-only 架构,并使用自回归方式进行顺序文本生成。然而,这种天然顺序的解码过程会带来显著计算挑战。

更具体地说,Qwen2.5 模型中的 decoder 架构包含 prefill 阶段和 decode 阶段。prefill 阶段以高度并行的矩阵-矩阵操作为特征,而 decode 阶段主要由顺序矩阵-向量乘法主导。因此,加速矩阵乘法对于优化计算效率和降低延迟非常关键,尤其是在需要实时推理能力的应用中。

II-B. 使用 AWQ 进行模型压缩

Activation-aware Weight Quantization(AWQ)是一种强大的模型压缩技术,可以显著降低内存占用和内存带宽需求。如图 2 所示,仅有 1% 的权重就可能对模型性能产生显著影响。因此,谨慎保护这些 salient weights 可以保持性能并最小化量化误差。

具体来说,AWQ 根据激活分布进行按通道 scaling,使整个权重矩阵可以被量化到更低精度,例如 INT4 和 INT3,同时仍保持较高性能。AWQ 不依赖模型训练或重构。它使用分组机制共享 scaling 参数,默认 Group Size(GS)为 128。

这种分组机制让 AWQ 能够准确捕捉不同通道权重分布的变化,即便使用低精度表示,也能有效降低量化误差并保持较高模型准确率。

我们认为这类模型压缩在边缘部署场景中特别有优势,例如 KV260 平台的内存带宽限制为 19.2 GB/s。我们的实现通过定制权重打包方案扩展了 AWQ 的优势,确保量化权重 qweights、scaling factors 和 zero values 能高效传送到 Processing Elements。该打包方案支持 on-the-fly 反量化,同时优化性能和计算效率。

II-C. 相关工作

由于 FPGA 具备良好的能效、可重构性和灵活性,利用 FPGA 加速 LLM 推理已经引起学术界和工业界的广泛兴趣。近期研究提出了专门用于高效 FPGA LLM 推理的空间加速器,显示了 FPGA 平台提供定制化高性能解决方案的潜力。

特别是,有工作在 Xilinx ZCU102 平台上部署 TinyLlama 1.1B 模型后,在性能和功耗效率上获得显著提升,证明了基于 FPGA 的部署在边缘推理应用中的可行性。

III. 提出的软硬件协同优化

我们深入分析了 Qwen2.5-0.5B 模型的计算负载和延迟。表 I 展示了当模型部署在 KV260 平台 PS 上时的推理延迟拆解;该部署使用编译器优化,以利用全部四个 ARM Cortex-A53 核。结果表明,91.6% 的推理时间由 MAC 主导,而 MAC 是矩阵-矩阵与矩阵-向量乘法的基本操作。

需要注意的是,表 I 中报告的时间同时包含计算和内存访问延迟。该观察揭示了两个提升推理效率的关键机会:(1)使用加速器加快计算密集型操作;(2)将权重参数压缩成数据块,使其能够在内存中最优存储并以最小带宽传输到加速器,从而提高内存带宽利用率。

表 I. Qwen2.5-0.5B 在 KV260 PS 上推理的延迟拆解

描述时间(μs)占比(%)
线性操作
Token Embedding copy + Layer init.320.20
Q/K/V Projection MAC operations181511.38
Q/K/V Bias addition350.22
Output projection + Residual Add8395.26
MHA computation (Concatenation)420.26
FFN Gate Projection + Up Projection814851.08
FFN Down Projection + Residual Add465129.15
Overall MAC operations14,65091.61
非线性操作
Rotary Positional Encoding (RoPE) for Q/K870.54
Root Mean Square Normalization (RMSNorm)250.16
SiLU Activation + Element-wise Multiplication2781.74
Total15,952100

III-A. 软件优化

我们利用 AWQ 框架提高推理期间的内存带宽利用率。如图 3 所示,我们将量化权重、scale 和 zero 打包成一个数据块。当通过 4 个通道、每通道 128-bit 数据向 PL streaming 数据时,这可以提高内存带宽利用率。PL 中的加速器可以通过流水线结构解包权重、反量化权重并执行 MAC 操作,以利用并行性。

我们进一步修改了 AWQ 的原始权重映射结构,以适配 AWQ_MACRO。如图 3 所示,一个 AWQ_MACRO 打包了量化权重、8 个 scale 和 8 个 zero,这些数据用于在 prefill 和 decode 阶段之前把 INT4 权重反量化为 FP32。由于只需要 8 个 INT4 精度的 zero values,也就是 32 bits,来反量化一个 AWQ_MACRO,因此每个 macro 中 128-bit strip 里剩余的 96 bits 用零填充。

我们的模型压缩方案包含几个关键特征。第一,AWQ_MACRO 中的数据被流式传输到 PL,在 PL 中反量化和 MAC 操作以流水线方式执行,从而提高效率。第二,打包方案确保量化权重与对应 zero values 和 scale factors 存放在一起,从而支持高效按通道反量化。

最后,由于我们在 WNLI benchmark 上相比 GS=128 获得了更高准确率,因此打包过程采用 GS=64。Qwen2.5 的端侧推理由 C 语言实现。模型参数,例如权重,保存为 binary 文件;模型架构保存为 JSON 文件。

我们的方法是全自动的,能够通过 AutoAWQ library、binary 文件和 JSON 文件,在 KV260 平台上无缝部署推理。

III-B. 硬件优化

我们优化硬件以支持 AWQ 实现并加速矩阵计算。为了高效处理数据传输,我们使用四个 Advanced eXtensible Interface(AXI)通道,将数据直接流入定制设计的 MACRO_MAC 单元。图 4(a) 展示了内存访问模式,这种模式确保 AXI 通道中具有高吞吐和结构化数据流。

AWQ_MACRO 会按照 III-A 节中的方式谨慎排列在内存中,从而确保反量化后的值与其在原始权重矩阵中的位置一一对应。由于 4 个 AXI 通道彼此独立,4 个 MACRO_MAC 单元可以并行处理数据。

Unpacking Unit(图 4(b))分别将 scale、zero 和量化权重 qweight 解包为 128-bit 格式。qweight block 已经被打包为 32-bit integer 格式,随后通过 shift operation 和 bit mask 被分解为 8 个独立 INT4 chunk。zero block 也会执行类似的拆解过程。值得注意的是,在该阶段 scale 始终保持原始 FP16 格式。

解包后的 qweight、zero 和 scale 会被发送到 MACRO_MAC 单元,在与输入 activation 相乘之前进行权重反量化。我们在 PL 中设计了 Processing Elements(PE)array,使乘法能够并行执行。图 4(d) 展示了一个 PE 内部的操作:从 qweight 中减去 zero value,并将 input activation 与 scale value 相乘。来自 PE array 的 partial sums 随后通过 adder tree 累加。

当某个输出通道的累加完成后,总和会传输到 Processing System(PS),用于非线性操作计算。

表 II. 加速器综合资源利用率

设计DSPFFLUT
4-MAC_MACRO accelerator384(30%)110,405(47%)96,553(82%)

表 II 给出了加速器综合结果,该加速器工作在 200 MHz。由于 KV260 平台并不原生支持更低精度浮点格式,所有 MAC 操作均以 FP32 执行。

IV. 评估

我们从准确率、模型大小、吞吐和 benchmark score 方面,将所提出的软硬件协同优化框架与 baseline 模型进行了比较。结果总结在表 III 中。我们的压缩方法显著降低了模型大小。具体而言,模型大小从 baseline 的 988 MB 降到 443.81 MB,内存占用降低 55.1%。

此外,推理性能从 baseline 的 2.8 tokens/s 提高到 5.1 tokens/s,吞吐几乎翻倍。

表 III. 评估结果

Accuracy(%)Model Size(MB)Tokens/sTotal Score
Baseline64.799882.800.4
Ours(AWQ GS=64)61.97443.815.10*0.55

* 基于 co-simulation results。

此外,我们采用公式(1)生成 benchmark score,以进行综合评估。具体而言,accuracy ratio 表示模型在 WNLI benchmark 上的准确性能;memory ratio 表示相对于原始模型大小的压缩效果;prefill stage 和 decode stage 的 throughput 分别表示各阶段 token 处理效率。

Total score = 0.4 × normalized accuracy ratio
            + 0.2 × normalized memory ratio
            + 0.2 × normalized prefill throughput ratio
            + 0.2 × normalized decode throughput ratio

我们获得了 0.55 的 score,高于 baseline 的 0.4。

V. 结论

本文提出了一个端到端推理框架,利用 FPGA 平台上 Processing System 和 Programmable Logic 的协同优势,实现 Qwen2.5-0.5B 模型的高效部署。该框架实现了较高压缩率,降低内存占用,并在模型参数从片外内存传输到 PS 时提高内存带宽利用率。

此外,我们提出了一个硬件加速器,使用 PE array 和 adder tree accumulation 加快矩阵乘法性能。模型大小和吞吐方面的收益,使该方法非常适合资源受限环境中的 LLM 推理部署。

参考文献说明

原论文包含 20 条参考文献,涵盖基础模型综述、医疗/机器人/生物医学/音乐等 LLM 应用、GPT-4/DeepSeek-V3/PaLM 2 技术报告、边缘 AI、Kria K26 SOM 数据手册、AWQ、Transformer、Qwen2/Qwen2.5、Llama 2、FPGA LLM 加速、TinyLlama、llama2.c 以及 WNLI 相关文献。为避免误改 bibliographic 信息,本报告不逐条翻译作者名、会议名和 URL;请以原论文 PDF 的 References 为准。

附录 B:原论文图片与表格

以下图片为从原论文 PDF 渲染后裁切得到,用于对照阅读。来源:Maoyang Xiang、Ramesh Fernando、Bo Wang,On-Device Qwen2.5: Efficient LLM Inference with Model Compression and Hardware Acceleration,arXiv:2504.17376,CC BY 4.0。

Figure 1
图 1:Xilinx Kria K26 SOM 简化硬件架构。
Figure 2
图 2:AWQ 思路示意。左侧为保留 1% salient weights 的混合精度方案,右侧为量化前按激活感知 scaling。原论文注明该图改编自 AWQ 工作。
Table I
表 I:Qwen2.5-0.5B 在 KV260 PS 上的推理延迟拆解。
Figure 3
图 3:AWQ_MACRO 内存压缩布局,包含 scale、zero、INT4 qweights 和 padding。
Figure 4
图 4:AWQ_MACRO 加载顺序、Unpack Unit、MACRO_MAC PE 阵列与 PE 内部操作。
Table II
表 II:4-MAC_MACRO 加速器综合资源。
Table III
表 III:准确率、模型大小、tokens/s 与综合分数评估。
Equation 1
公式 1:论文使用的综合评分公式截图。