专栏名称: 极市平台
极市平台是由深圳极视角推出的专业的视觉算法开发与分发平台,为视觉开发者提供多领域实景训练数据库等开发工具和规模化销售渠道。本公众号将会分享视觉相关的技术资讯,行业动态,在线分享信息,线下活动等。 网站: http://cvmart.net/
目录
相关文章推荐
王者荣耀  ·  国色锦绣新版本2月13日开启!【西施-续相思 ... ·  7 小时前  
叶子猪游戏网  ·  三法都能秒伤百万!这枚大话2水炮为何如此暴力 ·  3 天前  
叶子猪游戏网  ·  把梦幻西游当单机玩,这个天科五庄真有想法! ·  3 天前  
51好读  ›  专栏  ›  极市平台

不懂就问,DiT能量化到只有4位吗?HQ-DiT:高效的 FP4 混合精度量化 DiT

极市平台  · 公众号  ·  · 2024-08-23 22:00

正文

↑ 点击 蓝字 关注极市平台
作者丨科技猛兽
编辑丨极市平台

极市导读

本文介绍了一种新颖的高效混合精度量化方法HQ-DiT,该方法使用4位浮点数对扩散变换器(DiT)进行量化,显著改善了其在推理过程中的性能和资源使用效率。 >> 加入极市CV技术交流群,走在计算机视觉的最前沿

本文目录

1 HQ-DiT:高效的 FP4 混合精度量化 DiT
(来自纽约大学)
1 HQ-DiT 论文解读
1.1 在 DiT 中使用浮点数量化
1.2 扩散模型简介
1.3 扩散模型中的激活值是如何分布的?
1.4 给激活值乘以 Hadamard 变换
1.5 权重量化的 FP 格式选择
1.6 实验结果

太长不看版

本文提出了一种对 Diffusion Transformer (DiT) 的混合浮点数量化技术,属于是后训练量化 (Post-Training Quantization),把权重量化为 4-bit 的浮点数以完成推理。因为 DiT 这种模型最近在工业和学术领域获得了极大的关注,因为其良好的视觉生成能力优于以 U-Net 为代表的传统扩散模型。但是,DiT 也伴随着较高的参数计数和实现成本,严重限制了它们在手机等资源有限设备上的使用。与定点量化 (例如 INT8) 相比,浮点数量化,再加上本文提出的裁剪范围选择机制,这个机制可以自然地与 DiT 中的数据分布对齐,使得量化误差最小。本文的结果表面:DiT 可以实现极低的精度量化 (4 位),对性能的影响可以忽略不计。

本文做了什么工作

  1. 提出了一种为 DiT 设计的高效的 PTQ 方法,能使用 4-bit 浮点数 (FP4) 量化 DiT,并实现与全精度模型相当的性能。据作者所知,HQ-DiT 首次尝试使用 FP 数据格式量化 DiT。
  2. 提出了一种新的算法,该算法可以根据数据分布自适应地选择最佳 FP 格式,能够节约计算开销。
  3. HQ-DiT 使用 FP4 量化 DiT 中的权重和激活值,与全精度模型相比,加速 5.09 倍,内存节约 2.13 倍。HQ-DiT在低精度量化方面取得了 SOTA 的结果,FP4 模型在 Inception Score (IS) 和 Frechet Inception Distance (FID) 方面都优于全精度的 latent diffusion model (LDM)。

1 HQ-DiT:高效的 FP4 混合精度量化 DiT

论文名称:HQ-DiT: Efficient Diffusion Transformer with FP4 Hybrid Quantization

论文地址:

http://arxiv.org/pdf/2405.19751

1.1 在 DiT 中使用浮点数量化

Diffusion Transformers (DiTs [1] ) 因其卓越的性能而备受学术界和工业界的关注,比较引人关注的应用是 OpenAI 的 SoRA [2] 。最近的研究 Lumina-T2X [3] 也已经证明了它在不同模式的令人印象深刻的生成能力。但是,迭代去噪步骤和巨大的计算需求会减慢其推理速度。而且,在每个 Denoising timestep 上,DiT 模型大量参数和复杂的网络结构仍会带来很大的计算负担,阻碍了它们在资源有限的实际场景中的适用性。

模型量化通过将权重和激活值压缩到低位表示,来减少内存和计算负担。在各种量化方法中,后训练量化 (Post-Training Quantization, PTQ) 是一种无训练的方法,用于快速有效的量化。与需要多轮微调的量化感知训练 (Quantization-Aware Training, QAT) 相比,PTQ 可以显著降低计算成本。这使得量化像 DiT 这样的大模型成为一个很有吸引力的解决方案。现有的对于扩散模型的 PTQ 方法主要采用定点数量化 (即 INT 量化)。但是这在低比特的情况下会带来比较大的量化误差。为了验证这点,作者将几个为大语言模型设计的量化方法用在 DiT 上,包括 SmoothQuant [4] , FPQ [5] , 和 GPTQ [6] 。如图 1 所示,将权重和激活量化为 4 位精度会导致严重的性能下降,导致 FID 的增加高达 100。此外,由于搜索最优量化方案所需的校准过程,这些方法所涉及的量化过程也会产生较高的计算成本。

图1:ImageNet 256 × 256 上不同量化策略的比较结果。权重和激活值都被量化到4位

浮点数 (FP) 量化为整数 (INT) 量化提供了一种更灵活的替代方案。相比整数使用固定的 scaling factor,FP 包含指数,对不同范围的数据自适应。这种适应性使其能够保持不同量级的精度,使 FP 成为各种商业硬件平台的理想数据格式选择,如 Nvidia 的 Blackwell (H200)。

但是,与 INT 量化通过截断和舍入得到量化值不同,FP 量化的难点在于选择适当的组合:有多少位被分配给指数,有多少位被分配给尾数。如果选择没选好,可能会导致性能不佳。为了解决这个问题,作者基于 channel 数据分布来确定 FP 组合。与之前的 LLM-FP4 [7] 相比,本文方法通过定制每个 channel 中数据的独特特征来优化性能。由于较高的通道间方差和较低的通道内方差,量化激活值是一个挑战 [8]

1.2 扩散模型简介

扩散模型 (DM) 因其生成各种逼真图像的显著能力而备受关注。在 DM 前向过程, 给定输入图像 , 生成一系列高斯噪声并将其添加到 中, 从而产生一系列噪声样本

式中, 是控制每一步高斯噪声强度的超参数。

在反向过程中,给定一个随机采样的高斯噪声 。合成图像通过以下过程逐步生成:

式中, 通过下式来定义:

上式中, 表示使用 DNN 生成的预测噪声。DiT 模型用 Transformer 替换经常使用的 U-Net。DiT 在视觉生成能力方面被认为超过了传统的扩散模型。

Classifier-free Guidance

在 DiT 中,用户可以提供一个额外的类标签 cc 作为图像生成的指导。在这种情况下,反向过程变为:

Classifier-free Guidance [9] 使用隐式分类器替换显式分类器,调整引导权重来控制生成图像的真实性和平衡多样性。根据贝叶斯公式,分类器的梯度可以表示为:

CFG 可以控制生成样本的真实性和多样性的平衡,广泛应用于 DALL·E 等生成模型。

1.3 扩散模型中的激活值是如何分布的?

图2:DiT 不同时间步的激活值分布

为了了解 DiT 中输入激活的分布,作者在 50 个 Denosing Step 中收集了 DiT Block 的输入激活值,如图 2 所示。然后在特定时间步分析激活矩阵的分布,如图 3 所示。

与 Q-Diffusion [10] 观察到的模式类似,Outlier 存在于整个 channel 级别。具体而言,激活中的异常值规模大约是激活值其余部分的 100 倍。因此,每个 token 量化时不可避免地会引入大量错误。鉴于激活在不同 channel 中表现出高方差,但 channel 内的方差较低,Outlier 会被限制在有限数量的 channel 中。因此,作者认为 "Per-Channel Quantization" + 最小化异常值可能可以实现较低的量化误差。

图3:Hadamard 变换前后 DiT 线性层输入激活的幅度分布

1.4 给激活值乘以 Hadamard 变换

之前的工作 已经证明 Hadamard 变换可以应用于消除数据中存在的异常值。本文引入随机 Hadamard 变换来消除 DiT 的输入激活 中存在的异常值, 方法是将其与正交 Hadamard 矩阵 相乘,其中 是 DiT 的 Embedding Dimension, 满足 。矩阵 就会表现出更平滑的分布, 即:大多数异常值被消除, 如图 3 的右侧所示。为了保持 DiT Block 内线性层的数学等价性, 需要将每个 DiT Block 的 Self-Attention 层和 FFN 层中的相应权重矩阵应用 Hadamard 矩阵。

为了数学上的等价性, Query, Key 和 Value 矩阵乘以 : 。这个过程在推理之前进行, 不会产生额外的在线计算成本。这样子一来,输出就不会因为 Hadamard 矩阵而发生改变: 。而且, 把输入激活值从 修改为了 ,相当于我们去量化后者, 量化误差要小得多, 如图 3 右侧所示。

图4:SA 模块和 FFN 模块的量化流程

然后, Attention 和 Value 的乘积这里还需要再量化一下, SA 的输出这里可以表示为 , 这里的 不是 Value 矩阵, 而是应该写成 ,这里 是 head 的数量。这里面的 才是 Value 矩阵。

那么现在要把 量化之后, 再与 相乘, 那么会产生上述的 Outlier 的问题。因此, 就有了下面的操作:

通过引入这两个 矩阵, 可以克服 Outlier 对量化引入的问题: 可以有效减轻 内的异常值, 而不需要任何额外的计算开销。但是要注意这里的 , 其中 是 Identity 矩阵。

此外, 在 FFN 模块里面, 也是用的 Hadamard 矩阵。这里面包含两个线性映射矩阵 还有一个 GELU 激活函数。第一个线性矩阵可以 , 因为输入 会变为 。该操作可以离线执行, 在推理过程中没有任何额外的成本。第1个线性层 的输出还包含异常值, 需要额外的 Hadamard 变换来去除异常值。由于 GELU 激活函数的存在, Hadamard 变换需要在线执行。为了减轻这种成本, 本文设计了一个高效的 Hadamard 变换, 其计算复杂度如下:

如果 的维度 是 2 的幂, Walsh-Hadamard 变换时间复杂度计算 的时间复杂度是 。如果 不是 2 的幂, 通过利用 Kronecker 乘积的性质, 时间复杂度可以变为 。因此可以通过 Kronecker 方法构建一个新的 Hadamard 矩阵(比如 , 这里 为 28)。

1.5 权重量化的 FP 格式选择

权重量化的目的是找到满足下式的权重:

选择合适的 FP 组合进行权重量化是至关重要的,因为指数和尾位宽的选择不当会导致显著的量化误差。

选择 FP 数据格式的简单方法涉及详尽地搜索每个可能的组合,但这会导致很高的计算开销。作者提出了一种简单高效的 FP 格式选择方法。本文方法基于一个简单的事实,即对于具有固定总位宽的 FP 格式,更多的指数位允许更大的可表示的值的范围,如下图5所示。但是,较大的指数位宽 (例如 E2M1) 也会导致表示数据的分布不均匀,使得长尾现象更加明显。比如下图 E2M1 的最大值表示 12 (bias=0 的情况下),E1M2 的最大值表示 3.5 (bias=0 的情况下)。

图5:FP 格式的 E2M1 和 E1M2 的分布,偏差设置为 0

对于 DiT 模型中权重矩阵,可以通过以下指标分析它们的数据分布来确定最佳 FP 格式:

式中, 是一个表示分位数的超参数 (作者使用 25)。通过上式, 基本上能够得到一个表示权重中的最大值与最小值关系的指标 。本文的目标是用低误差表示该区间内的所有元素值。另一方面, 对于给定的指数和尾宽分别为







请到「今天看啥」查看全文