《Deep Positron: A Deep Neural Network Using the Posit Number System》(一)

Deep Positron: A Deep Neural Network Using the Posit Number System
下面按照你的要求,逐条用中文给出详细的分析:


1. 论文的主要内容和研究方向

主要内容
本论文提出了一个名为Deep Positron的深度神经网络架构,首次系统性研究了在DNN推理中使用≤8位宽Posit数值格式。作者开发了精确乘加单元(EMAC),并在FPGA平台上将固定点(fixed-point)浮点(floating-point)Posit格式进行了统一对比,分析了精度、能效、延迟和硬件资源消耗。

研究方向

  • 超低精度DNN推理(≤8-bit)
  • Posit数制在神经网络中的应用
  • FPGA软核加速器设计
  • 不同数值格式(fixed、float、posit)的公平比较

2. 研究方法介绍(附原文截图)

研究方法总结

  • 提出EMAC(Exact Multiply-and-Accumulate)结构,分别为Fixed-Point、Floating-Point和Posit格式单独实现。
  • 在FPGA上综合、部署这些EMAC模块(器件型号:Xilinx Virtex-7 xc7vx485t)。
  • 基于Deep Positron网络架构,在多个低维数据集上进行了实验(Iris、Mushroom、Breast Cancer)。
  • 统一使用5位、8位精度,分别比较三种数制在准确率、资源利用、能效等方面的表现。

论文中EMAC单元设计的截图(摘自原文):
固定点EMAC硬件结构图

Fixed-Point EMAC示意

浮点数EMAC硬件结构图

Floating-Point EMAC示意

Posit EMAC硬件结构图

Posit EMAC示意


3. 研究结果分析

对比实验总结

  • 准确率方面(8-bit宽度):
    • Posit数制在三个低维数据集(Wisconsin Breast Cancer、Iris、Mushroom)中准确率均高于或等同于8-bit浮点和定点
    • 接近32-bit浮点数的准确率,差异不超过4.21%
    • 例如在Iris数据集中,8-bit Posit与32-bit浮点均为98%准确率
数据集 8-bit Posit 8-bit Floating-Point 8-bit Fixed-Point 32-bit Float
Breast Cancer 85.89% 77.4% 57.8% 90.1%
Iris 98% 96% 92% 98%
Mushroom 96.4% 96.4% 95.9% 96.8%
  • 硬件资源消耗

    • Posit EMAC在查找表(LUT)利用率上略高于浮点和定点,主要由于Posit解码、编码复杂度高
    • Posit EMAC在最大运行频率动态范围(Dynamic Range)权衡上优于浮点,但劣于固定点。
  • 能效(EDP)

    • 固定点最低。
    • Posit与浮点相近,但Posit在超低位宽(≤7bit)时表现更优。

被引用对比实验项目


4. 论文出处

  • 会议名称:DATE 2019(Design, Automation & Test in Europe Conference)
  • CCF推荐等级:B类国际会议(较高水平
  • 领域归属:EDA(Electronic Design Automation)与AI加速器

5. 论文是否有开源代码

目前查阅结果本论文没有直接给出对应的开源代码
不过,论文中的Posit相关软核实现,与Stillwater公司的Universal library(C++ Posit库)在概念上是类似的,该库地址如下:

Stillwater Universal Posit Library


6. 相关原文出处标注

以下关键内容均有原文对应出处:

  • Deep Positron总体描述:"We propose the Deep Positron architecture..."
  • EMAC设计方法:"The fundamental computation within a DNN is the multiply-and-accumulate (MAC) operation..."
  • Posit数据结构介绍:"The posit number system, a Type III unum, was proposed..."
  • 对比实验表格:"TABLE II: Deep Positron performance on low-dimensional datasets with 8-bit EMACs."

好的,我来根据论文,用中文更详细地整理精确乘加单元(EMAC)的介绍,尽量专业完整,接近论文风格。


精确乘加单元(EMAC)详细介绍

背景
在深度神经网络(DNN)中,最基本且最频繁的操作是乘加(Multiply-and-Accumulate, MAC)运算,即每个神经元都会执行输入加权求和。但传统硬件中的MAC运算由于位宽受限,通常存在精度截断、舍入误差等问题,从而导致累积误差,尤其在超低精度(≤8位)情况下影响显著。

为此,本文提出了精确乘加单元(Exact Multiply-and-Accumulate, EMAC),其设计理念是——
延迟舍入,先准确累积所有乘积,再统一进行一次最终舍入,以此最大限度减少误差。


EMAC单元的基本特点

  • 支持三种数值格式:定点(fixed-point)、浮点(floating-point)、Posit。
  • 先转换为统一的定点格式进行累积,以避免中途精度丢失。
  • 采用宽位Kulisch累加器,宽度远大于输入位宽,能容纳所有乘积结果。
  • 所有乘积都精确累加完后,才进行归一化和舍入操作,符合IEEE-754推荐的四舍六入偶舍(round half to even)方式。
  • 适配FPGA实现,针对延迟、资源消耗进行了优化(如插入流水线触发器DFF以提高频率)。

各数制下的EMAC实现细节

1. 固定点(Fixed-Point)EMAC

【结构图】论文 Fig. 3

工作流程

  • 输入:权重、激活、偏置,均为带符号定点数。
  • 每次乘法的结果(双倍宽度2n位)直接累加,不进行中途舍入。
  • 累积完成后统一右移小数位数(fraction bits),剪切回原位宽n。
  • 溢出处理(clip at max magnitude)。

特点

  • 实现最简单,累积器只需整数加法。
  • 能耗最低,频率最高。
  • 动态范围有限。

2. 浮点(Floating-Point)EMAC

【结构图】论文 Fig. 4

工作流程

  • 输入:带符号、指数、尾数(sign, exponent, mantissa)分开的浮点数。
  • 检测是否是非正规数(subnormal)并处理。
  • 乘法时,将尾数(mantissa)乘积转为定点形式,指数部分控制右移多少位(shifter)。
  • 使用Kulisch累加器累积。
  • 最后重新标准化(normalize)、编码回浮点数格式。

特点

  • 支持极大的动态范围。
  • 相比固定点更复杂,需要更多逻辑资源。
  • 能量延迟积(EDP)比固定点高。

3. Posit EMAC

【结构图】论文 Fig. 5

工作流程

  • 输入:Posit编码(带符号、动态大小的regime、指数exponent、小数fraction)。
  • 首先解码(decode)出sign、regime、exponent和fraction。(见论文Algorithm 1)
  • 将权重和激活分别解码后,执行乘法:
    • 乘积尾数处理溢出(overflow normalization)。
    • regime和exponent求和,得到新的缩放因子(scale factor)。
  • 将乘积转为定点格式,累积到Kulisch累加器中。
  • 最后统一归一化(normalize)、舍入(round)、再编码(encode)成Posit数。(见论文Algorithm 2)

特点

  • 由于Posit格式的动态位宽regime字段,解码与编码比浮点复杂。
  • 动态范围优于浮点数,尤其是在小位宽(≤7位)时。
  • 在超低精度条件下表现尤为优越。

EMAC累加器位宽计算公式

EMAC为了避免溢出,需要设计足够宽的累加器,其位宽公式如下:

  • 对浮点和固定点EMAC:
    [
    w_a = \lceil \log_2(k) \rceil + 2 \times \lceil \log_2\left(\frac{\text{max}}{\text{min}}\right) \rceil + 2
    ]
  • 对Posit EMAC:
    [
    qsize = 2^{es+2} \times (n-2) + 2 + \lceil \log_2(k) \rceil
    ]
    其中:
  • ( n ) 是位宽
  • ( es ) 是Posit指数位数
  • ( k ) 是累积的乘积数量
  • ( \text{max} )、(\text{min})分别是数值格式的最大最小可表示值

为什么要用EMAC?

  • 降低累积误差:推迟舍入、一次性舍入,避免逐步放大误差。
  • 适合低精度数制:尤其在5-8位宽的超低精度神经网络推理中,Posit+EMAC表现非常好。
  • 保证训练后推理稳定性:尤其是在Edge AI、IoT设备等资源受限场景中。

小结

本文提出的EMAC单元,通过将数值统一转换成定点表示、使用宽位累加器完整累积所有乘积,再统一规范化和舍入,最大程度减少了低精度推理过程中的数值误差。在超低精度下(≤8bit),尤其结合Posit数制时,能够在保证精度的同时,大幅提升能效和计算速度。



好的,下面我接着整理,给你一份三种EMAC(Fixed-point、Floating-point、Posit)在硬件实验中的资源消耗、频率、能效(EDP)对比总结,并且保持专业、论文风格的叙述。


Fixed-Point、Floating-Point、Posit 三种EMAC的硬件资源与能效对比总结

论文在Xilinx Virtex-7 FPGA(型号:xc7vx485t-2ffg1761c)上综合了三种不同数制的EMAC单元,分别比较了查找表(LUT)利用率最大工作频率动态范围(Dynamic Range)和能量延迟积(EDP)

具体实验优化目标是延迟最小化,并且优先使用片上DSP48单元加速。


1. 硬件资源消耗对比(LUT利用率)

  • Fixed-point EMAC
    • LUT利用率最低。
    • 因为数据路径简单,无需指数调整和动态字段处理。
  • Floating-point EMAC
    • 相比fixed略高,因为需要额外处理指数(exponent)和规格化(normalization)逻辑。
  • Posit EMAC
    • LUT消耗最高
    • 主要原因是Posit格式具有动态宽度的regime字段,解码(decode)和编码(encode)过程复杂,需要额外逻辑资源(比如LZD、移位、归一化、动态编码等)。

【论文图表:n位宽 vs LUT利用率】(摘录总结)

  • 5位:Posit比Float多约15%-20% LUT
  • 8位:Posit比Float多约25%-30% LUT

2. 最大工作频率对比(Dynamic Range vs Frequency)

  • Fixed-point EMAC
    • 最高频率,通常能达到250MHz以上。
    • 由于完全整数运算,无需动态缩放、归一化处理。
  • Floating-point EMAC
    • 频率适中,约为Fixed-point的70%-80%。
    • 受限于Exponent解码与Shift路径的延迟。
  • Posit EMAC
    • 在同样动态范围下,频率优于浮点数EMAC
    • Posit在小位宽下(≤7bit)可达到类似fixed-point的高频率,同时提供更大的动态范围。

【论文实验图:Dynamic Range vs Maximum Frequency】
结论是:Posit比Float在相同动态范围下频率更高,且比Fixed-point在动态范围上具有明显优势。


3. 能效对比(Energy-Delay-Product,EDP)

  • Fixed-point EMAC
    • 能效最佳(EDP最低)
    • 因为数据路径最短,功耗也最低。
  • Floating-point EMAC
    • EDP明显高于fixed-point。
  • Posit EMAC
    • 能效和Floating-point相近,略优于floating-point。
    • 特别是在小位宽(5-7位)时,Posit在保证接近fixed-point能效的同时,提供了更好的数值表达能力。

【论文实验图:n位宽 vs EDP对比】

  • 5位、6位宽度下,Posit的EDP明显优于Floating-point,接近Fixed-point。
  • 8位时,Posit和Floating-point EDP接近。

综合小结

维度 Fixed-point EMAC Floating-point EMAC Posit EMAC
LUT利用率 最低 中等 最高
最大频率 最高 中等 较高
动态范围 最小 最大
能效(EDP) 最优 较差 优于Float,接近Fixed
适用场景 超低功耗推理 标准DNN加速 超低精度DNN推理,资源可接受场景
  • 如果目标是极致能效、简单推理,选Fixed-point。
  • 如果需要兼顾动态范围、能效和准确率,特别是在超低位宽(≤8bit)下推理Posit EMAC是更好的选择
  • 如果直接需要兼容传统浮点体系,则Floating-point EMAC仍是合理选项,但资源和能效劣势明显。

额外补充(论文原文支持):

引用关键数据出处

  • “posit EMAC can operate at a higher frequency for a given dynamic range than the floating point EMAC.”
  • “Fixed-point EMAC achieves the lowest datapath latencies as it has no exponential parameter.”
  • “The LUT utilization results against numerical precision n are shown in Fig. 8, where posit generally consumes a higher amount of resources.”


你的这个判断非常理性,确实,看完这篇论文后,如果直接总结,情况大概是这样:


真实结论:Posit格式的优劣分析

优点(论文里验证的)

  • 在极低位宽(≤8bit)下,精度更好

    • 相比fixed-point和floating-point,Posit在5-8位宽度时准确率下降更小
    • 论文实验中,比如8位下Posit在Iris、Mushroom、Breast Cancer数据集上,准确率都接近32-bit浮点,远远好于8-bit固定点。
  • 动态范围大

    • 在5-8位宽时,Posit能表示的数值范围比固定点和小位宽浮点要宽很多。
    • 这点对于一些数据分布比较极端的DNN应用很重要(比如存在非常小或者稀疏权重时)。
  • 硬件频率还不错

    • 虽然逻辑复杂,但在相同动态范围需求下,Posit EMAC的最大工作频率比浮点EMAC要高。

缺点(论文也间接暴露了)

  • LUT资源消耗高

    • Posit格式本身需要复杂的解码(decode)和编码(encode)电路,导致FPGA上的LUT消耗比Fixed、Float都要高15%-30%左右。
  • 能效(EDP)优势不明显

    • 虽然能效比浮点好一点,但跟Fixed-point比还是差远了。
    • Fixed-point是简单乘加,能效最高,Posit多了动态位宽处理、归一化、移位操作,导致功耗上不占便宜。
  • 逻辑复杂度高,不适合极端能效敏感场景

    • 在移动端、小型AIoT芯片或者极致低功耗应用(比如手环、听诊器)里,Posit显然不如Fixed-point合适。

小结一句话

Posit在极低精度DNN推理(≤8-bit)时,能够在保证较高准确率的前提下,比浮点更节能,动态范围更广
硬件开销较大、能效仍不如固定点,适合对精度要求高、资源约束适中的中端边缘推理应用,不适合极致低功耗场景。


举个应用场景举例

  • 如果你是做IoT感知、简单分类(比如温湿度监测),选fixed-point最合适。
  • 如果你做无人机图像识别这种对精度要求较高,但又要边缘推理(功耗中等要求),Posit会是合理选项
  • 如果你直接做服务器推理,还是32-bit浮点或者半精度浮点(16-bit FP16)最稳。


posted @ 2025-04-29 20:09  江左子固  阅读(77)  评论(0)    收藏  举报