HAWQ:基于 Hessian 的混合精度神经网络量化

article/2025/9/18 17:40:42

HAWQ:基于 Hessian 的混合精度神经网络量化

      • 摘要
      • 动机
      • 方法
        • 海森方法的有效性分析
        • 海森矩阵方法推导
          • 根据幂迭代求海森矩阵的最大特征值
          • 根据海森矩阵最大特征值确定量化精度与顺序
      • 实验结果
        • ResNet20 On CIFAR-10
        • ResNet50 on ImageNet
        • SqueezeNext on ImageNet
        • Inception-V3 on ImageNet
      • 消融实验
        • 海森混合精度量化的有效性
        • Block-Wise微调的有效性

本文为 UC Berkeley 大学发表在 ICCV 2019上的混合精度量化论文。旨在利用Block块的 Hessian 最大特征值选择各层的相对量化精度与量化微调 Block 块的顺序,在不同网络下测试获得了不错的精度提升。

  • 论文题目:HAWQ: Hessian AWare Quantization of Neural Networks with Mixed-Precision

  • 论文链接:https://arxiv.org/pdf/1905.03696v1.pdf

  • 代码链接:https://github.com/Zhen-Dong/HAWQ

摘要

在许多应用程序中部署神经网络时,模型大小和推理速度/功率已成为主要挑战。解决这些问题的一种有前途的方法是量化。但是,将模型统一量化为超低精度会导致精度显着下降。一种新颖的解决方案是使用混合精度量化,因为与其他层相比,网络的某些部分可能允许较低的精度。但是,没有系统的方法来确定不同层的精度。对于深度网络,蛮力方法不可行,因为混合精度的搜索空间在层数上是指数级的。另一个挑战是在将模型量化到目标精度时用于确定逐块微调顺序复杂度是阶乘级别的。本文介绍了 Hessian AWare 量化(HAWQ),这是一种解决这些问题的新颖的二阶量化方法。 HAWQ 根据Block块的 Hessian 最大特征值选择各层的相对量化精度。而且,HAWQ基于二阶信息为量化层提供了确定性的微调顺序。本文使用 ResNet20 在 Cifar-10 上以及用Inception-V3,ResNet50 和 SqueezeNext 模型在 ImageNet 上验证了方法的结果。将HAWQ 与最新技术进行比较表明,与 DNAS 相比,本文在 ResNet20 上使用 8 倍的激活压缩率可以达到相似/更好的精度,并且与最近提出的RVQuant和HAQ的方法相比,在ResNet50 和 Inception-V3 模型上,当缩小 14% 模型大小的情况下可以将精度提高 1%。此外,本文证明了可以将 SqueezeNext 量化为仅 1MB 的模型大小,同时在 ImageNet 上实现 Top-1 精度超过 68%。

动机

量化方法需要对NN参数(即权重)和激活都进行量化,以减少推理期间模型的总内存占用量。但是,这里的主要挑战是传统的量化方式会导致准确性的显著下降。尤其是,不可能将普通卷积网络的所有权重/激活的位数减少到超低精度,而又不显著降低精度。这是因为并非卷积网络的所有层都允许相同的量化级别。解决此问题的一种可能方法是使用混合精度量化,其中较高的精度用于网络的某些“敏感”层,而较低的精度用于“非敏感”层。但是,为每一层找到正确精度的搜索空间在层数上是指数级的。此外,为了避免准确性损失,需要对模型进行微调(即重新训练)。正如后面要讨论的,一次量化整个模型然后进行微调并不是最佳的。取而代之的是,需要执行多阶段量化,其中在网络的每个阶段将部分量化为低精度,然后进行量化感知的微调以恢复准确性。但是,用于确定首先要量化哪些层的搜索空间是层数的系数大小。为解决上述搜索空间大的问题,本文提出了一种Hessian指导的方法来应对这些挑战。本文贡献如下:

  • 选择混合精度量化的搜索空间的层数是指数级的。因此,提出了一种新颖的确定性方法,用于根据每层的Hessian 频谱确定各层的相对量化级别。

  • 模型的量化感知微调的搜索空间是块/层数的系数。因此,提出了一种基于 Hessian 方法来确定不同NN块的微调顺序。

  • 最后进行了HAWQ的消融研究,并在 CIFAR-10 上使用 ResNet20 以及在 ImageNet 上使用 Inception-V3 / ResNet50 / SqueezeNext 提出了新颖的量化结果。与最新技术的比较表明,本文的方法实现了更高的精度(高达1%),更小的模型尺寸(高达20%)和更小的激活尺寸(高达8)。

方法

海森方法的有效性分析

基于最小描述长度(MDL)理论,在给定的阈值下,指定一个平坦区域所需的比特数较少,反之,指定一个具有尖锐曲率的区域所需的比特数较多。更通俗的解释,平坦区域的不精确位置所产生的噪声不会被放大,使得它更容易被量化。而尖锐区域则相反,即使是小的舍去误差也会被放大。因此,预计具有较高 Hessian 频谱的层(即较大的特征值)对量化更敏感。下图显示了CIFAR-10上的ResNet20和ImageNet上的Inception-V3的这些特征值对不同块的分布。可以发现,不同的区块表现出数量级的差异。例如,ResNet20第 9 个 block 相比于最后一个 block 的扰动更为敏感。
不同 Hessian 频谱下的 3D Loss分布

为了进一步说明这一点,本文提供了以下的一维损失可视化示意图。 首先计算出每一个 Block 的海森特征向量,然后对每一个 Block 沿着特征向量分别计算损失的变化,如下图所示分别展现了 ResNet20(在Cifar-10上)和 Inception-V3(在ImageNet上)的结果。可以清楚地看到,具有较大的 Hessian 特征值(即曲率更尖锐)的 Block 表现出较大的损失波动。
ResNet20 的 1D Loss分布

Inception-V3 的 1D Loss分布

海森矩阵方法推导

假设 NN 被划分为 b 个block { B 1 , B 2 … , B b } \left\{B_{1}, B_{2} \ldots, B_{b}\right\} {B1,B2,Bb} , 对应的权重参数表示为 { W 1 , W 2 … , W b } \left\{W_{1}, W_{2} \ldots, W_{b}\right\} {W1,W2,Wb}

根据幂迭代求海森矩阵的最大特征值

首先了解幂法求矩阵特征值的具体流程,如下Python代码:


# 参考代码:https://www.cnblogs.com/qizhou/p/12271287.htmlimport numpy as np#矩阵A
A = np.matrix([[-5.6,2.,0.],[3.,-1.,1.],[0.,1.,3.]])
L0=2#范数类型
v = np.matrix([[-2.],[-7.],[1.]])#v0(随机值)
u = v/(np.linalg.norm(v,L0))#u0#迭代函数
def iterate_fun(A,u,final,L):i=0while i<final:v = A*uu = v/(np.linalg.norm(v,L))i=i+1print("幂法特征值:")print(np.linalg.norm(v,L))print("numpy特征值:")print(np.linalg.eig(A)[0])print("幂法特征向量:")print(u)print("numpy特征向量:")print(np.linalg.eig(A)[1])iterate_fun(A,u,1000,L0)

根据下图算法1可以了解幂迭代求海森矩阵的最大特征值的具体流程,这里需要注意的是for循环的i与 W i W_{i} Wi中的i是没有关系的,另外,算法1的巧妙之处是无需求解海森矩阵就可以求出海森矩阵的特征值。根据幂迭代的算法可以求解出海森矩阵的特征值 λ i = ∥ H v ∥ 2 \lambda_{i} = \|H v\|_{2} λi=Hv2,而$ H_{i} v$ 根据下面公式推导得出恰好为 g i T v g_{i}^{T} v giTv 关于 W i W_i Wi 的偏导数。

∂ ( g i T v ) ∂ W i = ∂ g i T ∂ W i v + g i T ∂ v ∂ W i = ∂ g i T ∂ W i v = H i v \frac{\partial\left(g_{i}^{T} v\right)}{\partial W_{i}}=\frac{\partial g_{i}^{T}}{\partial W_{i}} v+g_{i}^{T} \frac{\partial v}{\partial W_{i}}=\frac{\partial g_{i}^{T}}{\partial W_{i}} v=H_{i} v Wi(giTv)=WigiTv+giTWiv=WigiTv=Hiv

根据海森矩阵最大特征值确定量化精度与顺序
  • 量化精度由 S i = λ i / n i S_{i}=\lambda_{i} / n_{i} Si=λi/ni 决定。

  • 量化Block的微调顺序由 $ \Omega_{i}=\lambda_{i}\left|Q\left(W_{i}\right)-W_{i}\right|_{2}^{2} $ 决定。

实验结果

ResNet20 On CIFAR-10

ResNet20 On CIFAR-10

ResNet50 on ImageNet

ResNet50 on ImageNet

SqueezeNext on ImageNet

SqueezeNext on ImageNet

Inception-V3 on ImageNet

Inception-V3 on ImageNet

消融实验

海森混合精度量化的有效性

海森混合精度量化消融实验

Block-Wise微调的有效性

Block-Wise微调消融实验


更多内容关注微信公众号【AI异构】


http://chatgpt.dhexx.cn/article/tfvQGdfe.shtml

相关文章

HAWQ技术解析(二) —— 安装部署

一、安装规划1. 选择安装介质 HAWQ的安装介质有两种选择&#xff0c;一是下载源码手工编译&#xff0c;二是使用Pivotal公司提供的HDB安装包。源码的下载地址为 http://apache.org/dyn/closer.cgi/incubator/hawq/2.0.0.0-incubating/apache-hawq-src-2.0.0.0-incubating.tar.…

HAWQ取代传统数仓实践(二)——搭建示例模型(MySQL、HAWQ)

一、业务场景 本系列实验将应用HAWQ数据库&#xff0c;为一个销售订单系统建立数据仓库。本篇说明示例的业务场景、数据仓库架构、实验环境、源和目标库的建立过程、测试数据和日期维度的生成。后面陆续进行初始数据装载、定期数据装载、调度ETL工作流自动执行、维度表技术、事…

HAWQ从0.5开始安装说明.包含hadoop和hawq

文档是从自己的云笔记中复制,格式什么的可能有问题.已修复了一遍. 零.前提 一.安装hadoop 1.1下载并复制hadoop2.6.5 1.2编辑系统配置文件 1.3创建hadoop的tmp临时目录 1.4开始修改配置文件 1.5复制hadoop到其他所有节点上 1.6开始初始化hadoop 1.7 如果服务器重启了,…

开源数据库HAWQ,架构调研

hawq的简介 https://cloud.tencent.com/developer/article/1433137 HAWQ&#xff0c;全称Hadoop With Query&#xff08;带查询Hadoop&#xff09;。HAWQ使企业能够获益于经过锤炼的基于MPP的分析功能及其查询性能&#xff0c;同时利用Hadoop堆栈。HAWQ是一个Hadoop原生大规模…

apache hawq

为什么80%的码农都做不了架构师&#xff1f;>>> 资料地址&#xff1a; 导航页 What is HAWQ? HAWQ Architecture How HAWQ Manages Resources Understanding the Fault Tolerance Service Table Distribution and Storage Choosing the Table Distribution Pol…

HAWQ技术解析(一) —— HAWQ简介

一、SQL on Hadoop 过去五年里&#xff0c;许多企业已慢慢开始接受Hadoop生态系统&#xff0c;将它用作其大数据分析堆栈的核心组件。尽管Hadoop生态系统的MapReduce组件是一个强大的典范&#xff0c;但随着时间的推移&#xff0c;MapReduce自身并不是连接存储在Hadoop生态系统…

《HAWQ-V3: Dyadic Neural Network Quantization》论文阅读

HAWQ-V3阅读笔记 Abstract 混合精度量化&#xff0c;integer-only&#xff0c; Methodology 只采用均匀量化 权重对称量化&#xff0c;激活非对称量化&#xff0c;对量化步长S采用静态量化&#xff0c;采用per-channel的量化方式 3.1量化矩阵的乘法与卷积&#xff08;核心…

HAWQ手动安装

HAWQ手动安装及使用手册 1 HAWQ简介 HAWQ 是 Pivotal 设计的一个大规模并行 SQL 分析处理引擎&#xff0c;支持事务处理。HAWQ 将复杂的查询分割成简单的任何&#xff0c;并分发到并行处理系统中的处理单元执行。包括查询规划器、动态管道、前沿互联和查询执行优化器等等。提…

HAWQ上安装PXF插件,并访问HDFS文件数据

1、说明 HAWQ在github上的地址为&#xff1a;https://github.com/apache/hawq 在安装pxf插件之前&#xff0c;可以先查看一下基础软件对应的版本信息&#xff1a;在hawq目录下的pxf/gradle.properties文件中 因我在安装pxf之前&#xff0c;已经把hadoop及hawq安装完&#xff…

HAWQ技术解析(五) —— 连接管理

服务器启动后&#xff0c;还要经过一系列配置&#xff0c;才能被客户端程序所连接。本篇说明如何配置客户端身份认证&#xff0c;HAWQ的权限管理机制&#xff0c;HAWQ最常用的命令行客户端工具psql及与mysql命令行常用命令类比&#xff0c;最后还将列举一些客户端连接HAWQ数据库…

HAWQ-V3: Dyadic Neural Network Quantization论文学习

论文链接 https://arxiv.org/abs/2011.10680 摘要 目前的低精度量化算法往往具有从浮点值到量化整数值的来回转换的隐藏代价。这种隐藏的成本限制了通过量化神经网络所实现的延迟改进。为了解决这个问题&#xff0c;我们提出了HAWQ-V3&#xff0c;一个新的混合精度纯整数量化框…

HAWQ取代传统数仓实践(一)——为什么选择HAWQ

一、HAWQ取代传统数仓实践&#xff08;一&#xff09;——为什么选择HAWQ 为了跟上所谓“大数据”技术的脚步&#xff0c;从两年前开始着手实践各种SQL-on-Hadoop技术&#xff0c;从最初的Hive&#xff0c;到SparkSQL&#xff0c;再到Impala&#xff0c;进行了一系列ETL、CDC、…

在centos 7.3上进行Apache HAWQ集群安装部署

一、前期准备工作 1、准备三台物理机&#xff0c;master&#xff08;192.168.251.8&#xff09;,dataserver1&#xff08;192.168.251.9&#xff09;,dataserver2&#xff08;192.168.251.10&#xff09;&#xff1b; 2、目前最新版本是2.4.0&#xff0c; 官网下载地址&…

HAWQ

为了跟上所谓“大数据”技术的脚步&#xff0c;从两年前开始着手实践各种SQL-on-Hadoop技术&#xff0c;从最初的Hive&#xff0c;到SparkSQL&#xff0c;再到Impala&#xff0c;进行了一系列ETL、CDC、多维数据仓库、OLAP的实验。作为一名从业20年以上的DBA&#xff0c;从数据…

HAWQ技术解析(三) —— 基本架构

HAWQ是一个Hadoop原生的SQL查询引擎&#xff0c;它结合了MPP数据库的关键技术和Hadoop的可扩展性。HAWQ在原生的HDFS上读写数据&#xff0c;MPP架构使HAWQ表现出超越其它SQL on Hadoop解决方案的查询性能&#xff0c;Hadoop又为HAWQ提供了传统数据库所不具备的线性扩展能力。 一…

HAWQ技术解析(十三) —— 资源管理

一、HAWQ如何管理资源 HAWQ使用多种机制管理CPU、内存、I/O、文件句柄等系统资源&#xff0c;包括全局资源管理、资源队列、强制资源使用限额等。 1. 全局资源管理 Hadoop通常使用YARN全局管理资源。YARN是一个通用的资源管理框架&#xff0c;为MapReduce作业或其…

HAWQ个人学习笔记(一)——HAWQ介绍

一、什么是HAWQ&#xff1f; HAWQ是Hadoop原生SQL查询引擎&#xff0c;针对分析性的应用。它具有大规模并行处理很多传统数据库以及其他数据库没有的特性及功能&#xff0c;结合了MMP数据库的关键技术优势和Hadoop的可扩展性和便利性。读写依赖于HDFS。 注&#xff1a;Hadoop…

全面讲解光纤、光模块、光纤交换机、光模块组网设计与案例

光纤组网已是当今建筑智能化弱电行业里一种常见的组网方式&#xff0c;组建远距离无线、监控网络时&#xff0c;往往需要使用光纤进行连接通信&#xff0c;使用光纤收发器是经济适用型做法&#xff0c;尤其是在室外的使用。其实光纤收发器不仅可以成对使用&#xff0c;还可以配…

400G光模块的相关知识

现在的高速光模块市场慢慢从100G向400G转移&#xff0c;未来400G必定是主流的高速光模块&#xff0c;目前这个阶段占领主流的还是100G&#xff0c;之前100G的相关知识已经讲述过了&#xff0c;400G与100G的传输速率由各种因素导致&#xff0c;我们讲讲400G与100G的信号传输。 4…

QSFP28-100G-LR4光模块有什么特点及优势?

100G以太网的迅速发展给100G光模块带来了巨大的市场需求&#xff0c;在众多100G光模块中&#xff0c;QSFP28光模块以其较小的尺寸和低功耗的特点成为最受欢迎的光模块。下面易天光通信&#xff08;ETU-LINK&#xff09;将从定义&#xff0c;工作原理&#xff0c;应用场景和常见…