自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 Paper Reading||Overcoming Oscillations in Quantization-Aware Training

1. 作者发现,在 QAT 过程中使用直通估计器(STE)时,权值似乎会在相邻的量化水平之间随机振荡,这就会为优化过程引入有害的噪声。2. 这种权重振荡,会破坏训练期间收集的批归一化层的参数统计结果,导致较差的推理准确性。这种影响在具有深度可分离层的高效网络(如 Mobilenets 和 EfficientNets )的低比特(≤4比特)量化中表现得特别明显。3. 大多数的 QAT 算法还无法克服这种权重振荡。...

2022-06-23 13:51:41 915 1

原创 PyTorch Python API:FX || Intro

FX 是针对 `torch.nn.module` 而开发的工具,其能动态地获取 model 前向传播的执行过程,以便动态地增加、删除、改动、检查运算操作。其由三个主要组件组成:符号追踪器(Symbolic Tracer)、中间表示(Intermediate Representation, IR)和 Python 代码生成。

2022-02-24 22:30:23 2341 1

原创 Paper Reading||Quantization Networks

现有的低比特量化方法可以分为两类:以近似(Approximation)为基础的方法和以优化(Optimization)为基础的方法。以 Approximation 为基础的方法即在前向传播时使用阶梯函数来离散浮点值,在反向传播时采用 STE 或其他设计来近似创造一个可导的梯度流。但是因为反向传播的梯度流是创造出来的,这就会带来梯度与实际(在前向传播中运用到的)公式不匹配的问题。以 Optimization 为基础的方法即将注意力放在如何间接引导 Weight 往减小量化误差方向更新。如在 Loss 上

2022-02-13 17:37:18 893 1

原创 Paper Reading||Differentiable Soft Quantization:Bridging Full-Precision and Low-Bit Neural Networks

由于量化电平是有限的,当模型量化到极低比特(如 2-bit)时,目前的二值量化和均匀量化仍然会导致非常严重的性能下降。QAT 的反向传播很难获得准确的梯度,在文献中基本都用直通估计器(STE)来近似。但当数据被量化到极低比特时,梯度误差会被放大,导致优化明显不稳定。量化本身不可避免地会导致原始数据与其量化值之间出现较大偏差,从而常常导致性能下降。量化通常由两个操作完成:剪裁(Clip)和取整(Round)。前者将数据限制在较小的范围内,而后者将原始值映射到最近的量化点。

2022-02-09 21:55:26 2588 1

原创 Paper Reading||Distance-aware Quantization

1. 使用 STE,虽然使得Round操作处处可导(梯度为1),但会引入梯度不匹配、不合理的问题。2. 软量化器(Soft Quantizer)方法虽然能有效改进梯度不匹配问题,但从软量化器直接“跳变”为硬量化器会带来 Quantizer Gap 问题。3. 在软量化器中引入能够逐渐增大的 Temperature 参数,虽然能缓解 Quantizer Gap 问题,但又会导致梯度流变得不稳定。

2022-01-27 22:55:28 3701

原创 Paper Reading||DoReFa-Net: Training Low Bitwidth CNNs With Low Bitwidth Gradients

先进的DCNN通常参数多、计算复杂度高,这些缺点不利于嵌入式设备中的应用。 以前的工作还没有成功地在向后传递期间将梯度量化为位宽小于8的离散值并保证性能不严重减少。

2022-01-20 16:03:19 956

原创 Paper Reading||Improving Low-Precision Network Quantization via Bin Regularization

当进行较低比特量化时,PTQ 方法往往会带来显著的性能下降。以前的 QAT 方法试图最小化量化误差,或模拟全精度网络的 Activation 分布。然而,这些方法的最终性能仍然不令人满意。

2021-12-04 21:43:16 3942

原创 Paper Reading||Differentiable Dynamic Quantization with Mixed Precision and Adaptive Resolution

不同的网络架构在不同的层中分配的内存和计算复杂度是不同的,会导致量化处于次优状态,特别是当量化参数(如比特宽度、动态范围和步长)逐层冻结训练时(可以参考 PROFIT)。2. (在没有 STE 之前,)基于梯度的低比特宽度模型训练是困难的,因为先前量化函数的梯度可能会消失,即量化后的 DNN 在反向传播时可能返回零梯度。3. 量化往往会在轻量级架构上表现较差,如 MobileNet 系列。这主要因为这些模型已经是高效和紧凑的,没有太多的量化空间。

2021-12-01 00:08:56 2245

原创 PyTorch Python API:TorchScript || Intro

TorchScript 是 PyTorch 用来创建可序列化和可优化模型的方法。任何 TorchScript 程序都可以从 Python 进程中保存,然乎再导出到生产环境,加载到没有 Python 依赖项的进程中。TorchScript 的强大,在于它的编译机制: 1. 其作用于一个模型,既能记录模型的参数,又能保存计算图(本质上是编译了 torch.nn.Module 的 forward 函数的计算图)。 2. 其作用于一个函数,既能保存函数的有关参数,又能保存运行逻辑(本质上也还是计算图)。

2021-11-15 22:08:44 2486

原创 PyTorch Python API:Quantization || Intro

量化是一种以低于浮点精度的位宽,来执行张量的计算和存储的技术。量化过的模型对部分或全部 Tensor 使用整数,而不是浮点值来执行操作。这允许更紧凑的模型表示,并能在硬件平台上使用高性能 Tensor 运算。需要注意的是,目前 PyTorch 不提供 CUDA 上的量化算子的实现——也即不支持 GPU——量化后的模型将移至 CPU 上运行、测试。但是进行 QAT 时可以在 GPU 上运行。此外,PyTorch 还支持 QAT,该训练使用伪量化模块对前向和后向传递中的量化误差进行建模。

2021-11-11 21:31:06 3063 1

原创 Paper Reading||MQBench: Towards Reproducible and Deployable Model Quantization Benchmark

近年来虽然深度学习模型量化做的越来越好,但其缺乏一个系统的研究与探讨——这些研究工作是否真的可以应用于实践?量化后性能的提升是由量化算法本身带来的,还是由训练的 Tricks 带来的?且目前仍缺乏一个 Benchmark 来统一规范量化的训练流程,并彻底和公正地比较量化算法。作者发现大多数量化相关的学术研究论文没有在实际硬件设备上测试过,也就是说实际在硬件部署时的效果是不清楚的。因为实际部署不仅会进行 Fold BN 操作,还会量化除 Weight、Activation 以外的 Parameters

2021-11-04 21:53:59 1585 6

原创 Paper Reading||Improving low-bit quantization through learnable offsets and better initialization

LSQ 只适用于激活函数为 ReLU 的模型,即只适用于 Activation 为非负分布的模型,不适用于激活函数为 Swish\Leaky-ReLU 等的模型。基于梯度的可学习量化方案其实不太稳定,需要更完美的超参数。

2021-10-03 14:07:58 330

原创 Paper Reading||Learned Step Size Quantization

早期量化器的参数都是固定的。固定映射方案虽然简单、具有吸引力,但它不能保证优化网络性能。量化误差最小化方案可能会完美地最小化量化误差,但如果不同的量化映射实际上没有最小化任务误差,则仍然不是最佳的。QAT量化如何以最佳方式最大化任务性能,仍然是一个悬而未决的问题。

2021-09-29 15:24:36 644

原创 Paper Reading||Network Quantization with Element-wise Gradient Scaling

使用直通估计器 (STE) 来进行QAT是次优的,因为它只是传播相同的梯度,而不考虑离散器的输入和输出之间的离散误差所带来的梯度影响。当然目前也有人做STE的 Soft 版本,即用 Sigmoid 或 Tanh 来近似组成离散化操作。但在较大的温度时会导致消失/爆炸梯度问题。

2021-09-25 16:41:15 768

原创 Paper Reading||Training With Quantization Noise for Extreme Model Compression

这篇论文开头就讲了很多的定义和概念,对量化的理解还是起到一定作用的。作者的核心创新就是Quant-Noise观念,这种观念可以应用到量化、剪枝中。Quant-Noise思想与Dropout、LayerDrop有异曲同工之妙,Quant-Noise减小了元素间相关性、增强了鲁棒性。

2021-08-31 20:31:07 772 2

原创 模型压缩之量化入门笔记||量化基本公式的理解||量化过程可视化||LSQ公式理解

本人初入模型量化的坑,对量化的一些过程还不是很理解,于是做了一些可视化的小实验,来帮助更好地理解公式。

2021-08-20 21:18:35 2892

原创 Paper Reading||Filter Pre-pruning for Improved Fine-tuning of Quantized Deep Neural Networks

Conv层往往和BN层同时出现,实际加速推理时还必须对BN层参数进行量化,然后利用“Fold”操作将BN层参数嵌入到Conv层中。但是这样做可能会增加Weight分布的动态范围,增大量化误差。作者认为应该先“Fold”,然后再对“Fold”结果进行统一量化,这样就能降低量化误差。一些权重对于学习都是不必要的,或者实际上干扰了学习过程,干扰了量化DNN的微调。那么可以通过某

2021-08-17 15:09:44 168

原创 Paper Reading||PROFIT: A Novel Training Method for sub-4-bit MobileNet Models

作者发现在主流模型中,较笨重的模型(AlexNet、ResNet-18、ResNet-34、ResNet-50)在经过ultra low-bit量化后精度损失较少,但紧凑轻型网络(MobileNet-v1、MobileNet-v2)在经过量化后精度损失很严重。对于这个现象,引起了作者的思考。作者发现在微调过程中,Weight量化后会使Activation的统计信息(statistics)发生变化,如mean和variance会发生变化。如何缓解Activation这样的变化称为值得思考的问题。

2021-08-14 17:55:59 553

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除