当前位置: 首页 > article >正文

[NeurIPS 2022] Leveraging Inter-Layer Dependency for Post-Training Quantization

Contents

  • Introduction
  • Method
  • Experiments
  • References

Introduction

  • 作者提出一种端到端的 PTQ 训练策略 Network-Wise Quantization (NWQ),并通过 Annealing Softmax (ASoftmax) 和 Annealing Mixup (AMixup) 改进了 AdaRound,降低了训练收敛难度

Method

  • Activation Regularization (AR). 采用端到端而非 layer/block-wise 优化每个 block 的量化损失
    在这里插入图片描述

  • Annealing Softmax (ASoftmax). 类似于 AdaRound,采用 Adaptive Rounding,但不同的是作者采用 Softmax 而非 Sigmoid,这使得 rounding 范围由 0~1 扩展到了 n n n~ m m m,但相应得训练参数量也增加到了原来的 m − n + 1 m-n+1 mn+1 倍 (不过作者默认采用 n = 0 , m = 1 n=0,m=1 n=0,m=1,所以 ASoftmax 的优势很大可能来自与 AdaRound 的第二点不同,也就是加速模型收敛;如果扩展 m , n m,n m,n,那么随着训练参数量的增加,如果校准数据比较少,模型容易过拟合)
    在这里插入图片描述在这里插入图片描述在这里插入图片描述此外,不同于 AdaRound 采用正则项促使 h ( V ) h(\mathbf V) h(V) 趋近 0/1,而作者认为这个正则项和量化损失其实是冲突的 (量化损失会促使 h ( V ) h(\mathbf V) h(V) 趋近 w s − ⌊ w s ⌋ \frac{\mathbf w}{s}-\lfloor\frac{\mathbf w}{s}\rfloor swsw),这会导致 AdaRound 不容易收敛;对此,作者借助 softmax temperature 帮助模型更好收敛
    在这里插入图片描述其中, τ t \tau^t τt 代表 iter t t t 时刻的 temperature,从 1 线性衰减到 0.01;作者还给出了 V i \mathbf V_i Vi初始化策略 V i = log ⁡ ( σ ′ ( V ) i ) \mathbf V_i=\log(\sigma'(\mathbf V)_i) Vi=log(σ(V)i),这样可以使得初始 rounding 与原始权重尽可能接近,证明可参考附录 A
    在这里插入图片描述

  • Annealing Mixup (AMixup). 采用 mixup 混合全精度模型输出和量化模型输出,作为 AR 中的优化目标 a l a_l al,其中全精度模型输出在 iter t t t 所占比例从 P s = 0.5 P_s=0.5 Ps=0.5 线性衰减到 P e = 0 P_e=0 Pe=0 从而帮助模型更好收敛
    在这里插入图片描述

Experiments

  • Comprehensive Comparison.
    在这里插入图片描述
  • Ablation Study. (1) AR.
    在这里插入图片描述(2) ASoftmax.
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述(3) AMixup.
    在这里插入图片描述在这里插入图片描述

References

  • Zheng, DanDan, Yuanliu Liu, and Liang Li. “Leveraging inter-layer dependency for post-training quantization.” Advances in Neural Information Processing Systems 35 (2022): 6666-6679.

http://www.kler.cn/a/413860.html

相关文章:

  • 以达梦为数据库底座时部署的微服务页面报乱码,调整兼容模式
  • 【pyspark学习从入门到精通22】机器学习库_5
  • 【Linux】线程的互斥和同步
  • docker部署nginx,并配置SSL证书
  • 使用Github Action将Docker镜像转存到阿里云私有仓库,供国内服务器使用,免费易用
  • 一个vue项目如何运行在docker
  • ffmpeg 增亮 docker 使用
  • springboot/ssm餐厅点餐管理系统Java在线点餐美食论坛系统web美食源码
  • uniapp echarts tooltip formation 不识别html
  • 【Linux网络编程】第二弹---Socket编程入门指南:从IP、端口号到传输层协议及编程接口全解析
  • docker arm/amd双架构镜像制作
  • 【JavaEE】多线程(3)
  • ComfyUI节点安装笔记
  • Python 中的 lambda 函数介绍
  • element ui select绑定的值是对象的属性时,显示异常.
  • 无人机:智能飞行控制系统技术与算法
  • python的数据统计与处理
  • 【JS】React与Vue的异步编程对比:深度解析与实战案例全面指南
  • 【MySQL】数据库开发技术:内外连接与表的索引穿透深度解析
  • 浅谈人工智能之基于容器云进行文生图大模型搭建
  • 【JavaEE】Spring Web MVC
  • Redis双活切换平台建设
  • React Native Android 和 iOS 开发指南
  • 51c自动驾驶~合集35
  • (vue)启动项目报错The project seems to require pnpm but it‘s not installed
  • 40分钟学 Go 语言高并发:超时控制与取消机制