[翻译] Log2 量化

RepQ-ViT 中提到了 l o g 2 log 2 log2量化和 l o g 2 log \sqrt{2} log2 量化,找来看下公式

1. FQ-ViT 部分

Log2 量化公式翻译自:

Fq-vit: Post-training quantization for fully quantized vision transformer

介绍模型量化基本概念. 假定量化位宽 b b b, 量化器 Q ( X ∣ b ) \textrm{Q}(\textrm{X}|b) Q(Xb) 能被形式化一个函数, 能将一个浮点数 X ∈ R \textrm{X}\in \mathbb{R} XR 映射为最近的 quantization bin:

(quantization bin 我自己一般翻译为量化值, 诸君自己看怎么翻译)
Q ( X ∣ b ) : R → q , \begin{equation} \textrm{Q}(\textrm{X}|b): \mathbb{R} \rightarrow \textrm{q}, \end{equation} Q(Xb):Rq,
q = { { − 2 b − 1 , ⋯   , 2 b − 1 − 1 } S i g n e d , { 0 , 1 ⋯   , 2 b − 1 } U n s i g n e d . \begin{equation} \textrm{q}= \left\{\begin{aligned} & \{-\textrm{2}^{b-1},\cdots ,\textrm{2}^{b-1}-\textrm{1}\} & Signed, \\ & \{\textrm{0}, \textrm{1} \cdots ,\textrm{2}^{b}-\textrm{1}\} & Unsigned. \end{aligned}\right. \end{equation} q={{2b1,,2b11}{0,1,2b1}Signed,Unsigned.
已有的文献存在许多量化器 Q ( X ∣ b ) \textrm{Q}(\textrm{X}|b) Q(Xb), 比如均匀量化1和 log2量化2

均匀量化 量化器 Q ( X ∣ b ) \textrm{Q}(\textrm{X}|b) Q(Xb) 定义为:
Q ( X ∣ b ) = clip ⁡ ( ⌊ X s ⌉ + z p , 0 , 2 b − 1 ) , \begin{equation} \textrm{Q}(\textrm{X}|b)=\operatorname{clip}(\lfloor\frac{\textrm{X}}{s}\rceil+zp, \textrm{0}, \textrm{2}^{b}-\textrm{1}), \end{equation} Q(Xb)=clip(⌊sX+zp,0,2b1),
其中 s s s~(scale, 量化缩放系数) 和 z p zp zp~(zero-point, 量化零点) 由 X \textrm{X} X 的上下界 l l l u u u决定, 通常是其最大最小值:

l = min ⁡ ( X ) , u = max ⁡ ( X ) , s = u − l 2 b − 1 , z p = clip ⁡ ( ⌊ − l s ⌉ , 0 , 2 b − 1 ) . \begin{align} l= & \min(\textrm{X}), u=\max(\textrm{X}), \\ s= & \frac{u-l}{\textrm{2}^b-\textrm{1}},zp=\operatorname{clip}(\lfloor-\frac{l}{s}\rceil, \textrm{0}, \textrm{2}^{b}-\textrm{1}). \end{align} l=s=min(X),u=max(X),2b1ul,zp=clip(⌊sl,0,2b1).

Log2 量化 将量化过程从线性转换为指数.
量化器 Q ( X ∣ b ) \textrm{Q}(\textrm{X}|b) Q(Xb) 定义为:
Q ( X ∣ b ) = sign ⁡ ( X ) ⋅ clip ⁡ ( ⌊ − log ⁡ 2 ∣ X ∣ max ⁡ ( ∣ X ∣ ) ⌉ , 0 , 2 b − 1 − 1 ) . \begin{equation} \textrm{Q}(\textrm{X}|b)=\operatorname{sign}(\textrm{X})\cdot \operatorname{clip}(\lfloor -\log_\textrm{2}\frac{|\textrm{X}|}{\max(|\textrm{X}|)}\rceil, \textrm{0},\textrm{2}^{b-1}-\textrm{1}). \end{equation} Q(Xb)=sign(X)clip(⌊log2max(X)X,0,2b11).

在本文中, 为了实现完全量化的视觉变压器, 我们量化了所有模块, 包括Conv、Linear、MatMul、LayerNorm、Softmax等

2. RepQ-ViT 部分

均匀量化器是硬件支持良好的最流行的选择之一,其定义如下:
Quant : x ( Z ) = clip ( ⌊ x s ⌉ + z , 0 , 2 b − 1 ) DeQuant : x ^ = s ( x ( Z ) − z ) ≈ x \begin{align} \text{Quant} & : \bm{x}^{(\mathbb{Z})} = \text{clip}\left(\left\lfloor \frac{\bm{x}}{s} \right\rceil+z, 0, 2^b-1 \right) \\ \text{DeQuant} & : \hat{\bm{x}} = s\left(\bm{x}^{(\mathbb{Z})}-z\right) \approx \bm{x} \end{align} QuantDeQuant:x(Z)=clip(sx+z,0,2b1):x^=s(x(Z)z)x
其中 x \bm{x} x x ( Z ) \bm{x}^{(\mathbb{Z})} x(Z)分别是浮点和量化值, ⌊ ⋅ ⌉ \left\lfloor\cdot\right\rceil 表示四舍五入函数, b ∈ N b \in \mathbb{N} bN是量化位宽。

反量化值 x ^ \hat{\bm{x}} x^近似地恢复了 x \bm{x} x

重要的是, s ∈ R + s\in \mathbb{R}^+ sR+是量化缩放比, z ∈ Z z \in \mathbb{Z} zZ是零点,两者由 x \bm{x} x的下限和上限确定,如下所示:

s = max ⁡ ( x ) − min ⁡ ( x ) 2 b − 1 , z = ⌊ − min ⁡ ( x ) s ⌉ \begin{equation} s = \frac{\max(\bm{x})-\min(\bm{x})}{2^b-1}, \quad z = \left\lfloor-\frac{\min(\bm{x})}{s} \right\rceil \end{equation} s=2b1max(x)min(x),z=smin(x)

l o g 2 log2 log2量化器是另一种常见且面向硬件的选择。由于它仅在本文中应用于后Softmax激活,我们只考虑正值的量化,如下所示:
Quant : x ( Z ) = clip ( ⌊ − log ⁡ 2 x s ⌉ , 0 , 2 b − 1 ) DeQuant : x ^ = s ⋅ 2 − x ( Z ) ≈ x \begin{align} \text{Quant} & : \bm{x}^{(\mathbb{Z})} = \text{clip}\left(\left\lfloor -\log_2 \frac{\bm{x}}{s} \right\rceil, 0, 2^b-1 \right) \\ \text{DeQuant} & : \hat{\bm{x}} = s\cdot 2^{-\bm{x}^{(\mathbb{Z})}} \approx \bm{x} \end{align} QuantDeQuant:x(Z)=clip(log2sx,0,2b1):x^=s2x(Z)x
其中log2函数和基于2的幂函数都可以使用快速而高效的位移操作来实现34


  1. Quantization and training of neural networks for efficient integer-arithmetic-only inference ↩︎

  2. A deep look into logarithmic quantization of model parameters in neural networks ↩︎

  3. Lognet: Energy-efficient neural networks using logarithmic computation ↩︎

  4. Fq-vit: Post-training quantization for fully quantized vision transformer ↩︎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值