首页 > 其他分享 >8-bit Optimizers via Block-wise Quantization

8-bit Optimizers via Block-wise Quantization

时间:2024-12-06 11:20:53浏览次数:3  
标签:via mathbf text Quantization 量化 wise bit block

目录

Dettmers T., Lewis M., Shleifer S. and Zettlemoyer L. 8-bit optimizers via block-wise quantization. ICLR, 2022.

本文提出了一种 8-bit 的优化器, 其主要贡献算是 block-wise 的量化 (从我的角度看一点也不 novel)?

8-bit Optimizers

  • 对于 k-bit 量化, 就是找到一个 qmap:

    \[\mathbf{Q}^{\text{map}}: [0, 2^k - 1] \rightarrow D, \]

    通常 \(D = [-1/0, 1]\).

  • 然后, 对于输入向量 \(\mathbf{T} \in \mathbb{R}^n\), 首先是将它 normalize 到区域 \(D\) 上, 比如对于 \(D = [-1, 1]\), 可以:

    \[\mathbf{T} / \max(|\mathbf{T}|) \in [-1, 1]. \]

  • 然后, 我们可以得到 \(\mathbf{T}\) 的量化结果:

    \[\mathbf{T}_i^Q = \mathop{\text{argmin}} \limits_{j=0}^{2^k - 1} \bigg|\frac{\mathbf{T}_i}{\max(|\mathbf{T}|)} - \mathbf{Q}^{\text{map}}(j) \bigg|. \]

  • 反量化则可以通过如下方式得到:

    \[\mathbf{T}_i^D = \mathbf{Q}^{\text{map}}(\mathbf{T}_i^Q) \cdot \max(|\mathbf{T}|). \]

  • 但是呢, 作者发现这种方式在优化器中不太稳定, 所以采用了一种 block-wise 的形式. 对于长度为 \(n\) 的 tensor (如果是多维的就拉成向量), 设定 block-size 为 B (作者推荐 B=2048), 则就有:

    \[\lceil n / B \rceil \]

    个 blocks.

注: 在实际实现中, 可能需要补零.

  • 于是对于每个 block 中的元素, 量化过程如下:

    \[\mathbf{T}_{bi}^Q = \mathop{\text{argmin}} \limits_{j=0}^{2^k - 1} \bigg|\frac{\mathbf{T}_{bi}}{\max(|\mathbf{T}_b|)} - \mathbf{Q}^{\text{map}}(j) \bigg|, \\ b = 0, 1, \ldots, \lceil n / B \rceil - 1, \quad i = 0, 1, \ldots, B - 1. \]

  • 此外, 作者还提出了 stable embedding layer: 在加入位置编码前, 先用一次 layer normalization.

注: 显然, 不论是 block-wise 量化还是 stable embedding layer 都是为了缩小所要量化对象的数值范围, 从而保证结果的一致. 很不优雅.

标签:via,mathbf,text,Quantization,量化,wise,bit,block
From: https://www.cnblogs.com/MTandHJ/p/18590328

相关文章

  • WPF datagrid multiselect via inheritance from behavior
    publicclassDatagridMultiSelectBehavior:Behavior<DataGrid>{protectedoverridevoidOnAttached(){base.OnAttached();}protectedoverridevoidOnDetaching(){base.OnDetaching();}publicIEnumerab......
  • Quantization
    目录引线性量化(LinearQuantization)对称量化非对称量化非线性量化Power-of-XRoundingDeterministicroundingStochasticrounding[1]进击的程序猿-模型压缩-神经网络量化基础.[2]Przewlocka-RusD.,SarwarS.S.,SumbulH.E.,LiY.andDeSalvoB.Power-of-twoqu......
  • AWQ: Activation-aware Weight Quantization for LLM Compression and Acceleration
    目录概AWQ代码LinJ.,TangJ.,TangH.,YangS.,ChenW.,WangW.,XiaoG.,DangX.,GanC.andHanS.AWQ:Activation-awareweightquantizationforllmcompressionandacceleration.MLSys,2024.概随着模型的参数量的增加,推理成本也在显著增加,本文提出一种......
  • 为 Paddle2ONNX 修复 elementwise_floordiv 算子计算错误的问题
    1简介elementwise_floordiv算子在int32/int64的情况下直接转换成了ONNX中的div算子,由于div算子是普通除操作,而不是整除操作,因此无法通过CI的校验。2实现过程原核心实现代码如下voidElementWiseFloordivMapper::Opset7(){autoinput_x_info=GetInput("X"......
  • WPF Datagrid AutoScroll via behavior
    publicclassDataGridAutoScrollBehavior:Behavior<DataGrid>{protectedoverridevoidOnAttached(){base.OnAttached();AssociatedObject.SelectionChanged+=AssociatedObject_SelectionChanged;}privatevoidAssociated......
  • 金蝶Kingdee Wise ERP 12.3物理机迁移到Hyper-V(Windows Server 2008)
    一、系统迁移详细操作步骤1.数据虚拟化:使用Disk2vhd工具转换磁盘格式为VHD下载Disk2vhd工具:访问Sysinternals官方网站下载Disk2vhd工具,下载地址为:Disk2vhd下载链接。安装并打开Disk2vhd:解压下载的Disk2vhd.zip文件,运行Disk2vhd.exe程序。选择源磁盘并转换为VHD:在Dis......
  • 【论文阅读】Zero-Reference Low-Light Enhancement via Physical Quadruple Priors(CV
    概要任务领域:低光增强;零样本/无参考;RGB域针对问题:零参考是成功的,但是缺少光照概念,依赖手工设置。解决方法:基于Kubelka-Munk理论,设计物理四先验作为低光和正常光的不变要素,再利用生成模型将先验转为图像。主要创新:物理四先验的设计;先验到图像的映射。最终表现:优于大多数无监......
  • WPF mouse move via mosuedown,mousemove and mouseup
    <Windowx:Class="WpfApp42.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.......
  • ListWise\PairWise\PointWise
    概念:三种不同的排序模型学习(LearningtoRank)设计思路。主要体现在损失函数不同用户的查询query为Q,候选文档集docs为c1~CN,正确的结果排序假设为C1-CK。候选文档集要一般大于最终返回的集合,因此N>K.例如,给出一个提问句子从候选句子(有10个)中选出最佳的5个的答案,返回的列表......
  • WPF ListBox IsSynchronizedWithCurrentItem True ScrollIntoView via behavior CallM
    <ListBoxGrid.Column="0"ItemContainerStyle="{StaticResourcelbxItemContainerStyle}"ItemsSource="{BindingBooksCollection,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"IsSynchronizedWith......