首页 > 其他分享 >AWQ: Activation-aware Weight Quantization for LLM Compression and Acceleration

AWQ: Activation-aware Weight Quantization for LLM Compression and Acceleration

时间:2024-12-03 16:35:10浏览次数:4  
标签:Acceleration mathbf Compression Weight cdot text AWQ Delta frac

目录

Lin J., Tang J., Tang H., Yang S., Chen W., Wang W., Xiao G., Dang X., Gan C. and Han S. AWQ: Activation-aware weight quantization for llm compression and acceleration. MLSys, 2024.

随着模型的参数量的增加, 推理成本也在显著增加, 本文提出一种量化方法: AWQ 量化, 以缓解这一问题. 其主要贡献在于对于"重要"权重的特殊处理, 以及 per-channel 的 scaling.

AWQ

  • 作者首先发现, 权重中的元素并不是同等重要的, 大约有 1% 的权重, 如果把他们以更高精度的方式保存 (如, FP16), 就能取得显著的效果提升 (上图 (a) -> (b)).

  • 但是这种方式有一个显著的缺点, 这种混合精度会使得实际的实现变得异常麻烦, 所以需要另外的手段取解决.

  • 一般的对称量化形如:

    \[y = \mathbf{w} \mathbf{x} \longrightarrow y = Q(\mathbf{w}) \mathbf{x}, \]

    其中

    \[Q(\mathbf{w}) = \Delta \cdot \text{Round}(\frac{\mathbf{w}}{\Delta}), \quad \Delta = \frac{\max(|\mathbf{w}|)}{2^{N-1}}. \]

    这里 \(N\) 是量化 Bits.

  • 我们可以采用另外一种更加灵活的方式, 考虑只改变其中的一个元素 \(w\) 的量化方式:

    \[Q(w \cdot s) \cdot \frac{x}{s} = \Delta' \cdot \text{Round}(\frac{ws}{\Delta'}) \cdot x \cdot \frac{1}{s}. \]

    这里 \(\Delta' = \max(|w_1|, |w|_2, \ldots, w \cdot s, \cdots) / 2^{N-1}\). 注意到:

    1. \(\text{Round}(\cdot)\) 所带来的误差是差不多的;
    2. \(\Delta'\) 由于只改变一个元素, 通常 \(\Delta' \approx \Delta\).
  • 当 \(s > 1\) 的时候, 由于 \(w \cdot s\) 的分布更加均匀地分布在量化区间内, 所以 \(w \cdot s\) 相较于 \(w\) 通常能够被更加精准地量化.

  • 于是, 作者最终的 AWQ 为:

    \[\mathbf{s^*} = \text{argmin}_{\mathbf{s}} \mathcal{L}(\mathbf{s}) \\ \mathcal{L}(\mathbf{s}) = \| Q(\mathbf{W} \text{diag}(\mathbf{s})) (\text{diag}(\mathbf{s})^{-1} \cdot \mathbf{X}) - \mathbf{W} \mathbf{X} \|. \]

    其中 \(\mathbf{X}\) 是根据一个比较小的 calibration set 得到的.

代码

[official-code]

标签:Acceleration,mathbf,Compression,Weight,cdot,text,AWQ,Delta,frac
From: https://www.cnblogs.com/MTandHJ/p/18584371

相关文章

  • 你知道字体所拥有的字重的数量和font-weight的数值字重是什么对应关系吗?
    字体字重的数量理论上是无限的,因为font-weight属性接受1到1000之间的任何数字。然而,实际上,并非所有数值都会产生视觉上的差异,并且浏览器和操作系统对这些值的解释也可能不同。大多数字体家族只提供有限数量的字重变体。以下是font-weight数值与常用字重名称的对应关系:100-......
  • Weights & Biases使用教程
    一、W&B简介        W&B是"Weights&Biases"的缩写,它是一个AI开发者平台,其官方链接在此,提供用于训练模型、微调模型以及利用基础模型的工具。W&B由三个主要组件构成:Models、Weave和Core。W&BModels:这是一组轻量级、可互操作的工具,供机器学习实践者用于训练和微调......
  • 织梦dedecms使用weight排序无效怎么办
    织梦CMS(DedeCMS)中使用 weight 排序无效的问题,通常是因为程序内部的排序逻辑存在问题。根据之前提供的信息,这个问题在DedeCMS5.7版本中存在,并且可以通过修改底层代码来解决。下面是解决此问题的一般步骤:解决方法定位代码:首先,找到织梦CMS的 plus 目录下的 listinfo.......
  • LdapSrvWeight和LdapSrvPriority一起使用时,优先级如何确定?
    LdapSrvWeight和LdapSrvPriority一起使用时,LdapSrvPriority的优先级高于LdapSrvWeight。LdapSrvPriority直接决定了域控制器的优先级顺序,值越低表示优先级越高,客户端会优先尝试连接这些域控制器。而LdapSrvWeight则是按照比例来分配客户端连接请求,当LdapSrvPriority相同的域控制器......
  • CF1621G Weighted Increasing Subsequences 题解
    题目链接点击打开链接题目解法这种题就感觉每一步都不难想,但串在一起就不会显然考虑位置\(x\)作为\(lis\)的一部分,合法的\(lis\)的个数合法的约束是:令\(lis\)的最后一个位置为\(last\),满足\(\max\{a_{last+1},...,a_n\}>a_x\)不难发现,合法的\(last\)是一段区间......
  • 设计模式 -- 享元模式(Flyweight Pattern)
    1问题引出        小型的外包项目,给客户A做一个产品展示网站,客户A的朋友感觉效果不错,也希望做这样的产品展示网站,但是要求都有些不同:有客户要求以新闻的形式发布有客户人要求以博客的形式发布有客户希望以微信公众号的形式发布直接复制粘贴一份,然后根据......
  • OpenCV(cv::addWeighted()、cv::threshold())
    目录1.cv::addWeighted()函数定义:参数详解:公式:例子:2.cv::threshold()函数定义:参数详解:返回值:例子:3.总结:1.cv::addWeighted()cv::addWeighted()是OpenCV中用于将两幅图像按指定的权重进行加权求和的函数。主要用途包括图像融合、过渡效果生成等。函数定义:voidcv::add......
  • CSS处理font-weight不生效问题
    如何解决Android系统中文字体字重问题翻找了几天资料,发现NotoSansSC字体能支持中文/数字/英文字体100,300,400,500,700,900的字重,具体如下图所示:<linkrel="stylesheet"href="https://fonts.googleapis.com/css?family=Noto+Sans+SC:300,400,500,600,700"></link>.t......
  • Windows 内存压缩(Memory Compression)是一种内存管理技术,通过压缩内存中的数据来减少物
    内存压缩(MemoryCompression)的起源可以追溯到对内存管理的需求增加的背景下。早期计算机系统主要依赖于物理内存的增加来应对内存压力,但这导致了更高的成本和复杂性。内存压缩技术最初由研究人员和工程师在20世纪80年代和90年代开发,目的是通过软件算法减少内存占用。操作系统和虚......
  • 汉明权重(Hamming Weight)(统计数据中1的个数)VP-SWAR算法
    汉明权重(HammingWeight)(统计数据中1的个数)VP-SWAR算法定义汉明重量是一串符号中非零符号的个数。它等于同样长度的全零符号串的汉明距离(在信息论中,两个等长字符串之间的汉明距离等于两个字符串对应位置的不同字符的个数)。汉明重量在常见的数据位符号串中,它是1的个数。......