首页 > 编程语言 >大模型量化算法之Smoothquant

大模型量化算法之Smoothquant

时间:2024-10-16 18:46:31浏览次数:7  
标签:Smoothquant max Weight text Activation 算法 diag 量化

SmoothQuant: Accurate and Efficient Post-Training Quantization for Large Language Models
发表于 ICML 2023

8-bit weight, 8-bit activation (W8A8) 训练后量化方法(PTQ)

在这里插入图片描述
量化的部分是 线性层 以及 矩阵乘法,LayerNorm 以及 Softmax 还是 以 更高精度 的 半精度浮点数 FP16 进行计算的

Insights:
在这里插入图片描述
大模型中因为 outliers 的存在,其 activation 比较难以量化,而 Weight 相对平坦则更加容易量化;
因此,作者提出将 Activation 的量化困难性部分迁移到 Weight 上,使得 Weight 和 Activation 二者变得都比较容易量化

具体做法也比较简单,
因为,outlier 是出现在 Activation 的 部分 channel 中。因此,作者首先对 Activation 除以一个 per-channel 的 缩放因子,同时将该因子的倒数乘到相应的 Weight 上,确保 “Smooth” 对于模型来说是一个恒等变换。
矩阵形式的公式如下所示:
Y = ( X diag(s) − 1 ) ⋅ ( diag(s) W ) = X ^ W ^ Y=(X\text{diag(s)}^{-1})\cdot(\text{diag(s)}W)=\hat X \hat W Y=(Xdiag(s)−1)⋅(diag(s)W)=X^W^

达到的效果如下图所示
在这里插入图片描述
缩放因子 s 是通过 预训练数据上取得 的 校准数据估计得到的
具体地,第 j 个 输入channel 的缩放因子 s j s_j sj​ 以如下的方式计算:
s j = max ( ∣ X j ∣ ) α / max ( ∣ W j ∣ ) 1 − α s_j=\text{max}(|X_j|)^\alpha/\text{max}(|W_j|)^{1-\alpha} sj​=max(∣Xj​∣)α/max(∣Wj​∣)1−α

实验结果

实验配置及 Baselines
在这里插入图片描述

  1. 精度
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  2. 推理速度以及显存占用
    在这里插入图片描述

  3. 消融实验
    α \alpha α 的 选取
    在这里插入图片描述

标签:Smoothquant,max,Weight,text,Activation,算法,diag,量化
From: https://blog.csdn.net/qq_42047140/article/details/142988701

相关文章

  • Javascript算法——二分查找
    1.数组1.1二分查找1.搜索索引开闭matters!!![left,right]与[left,right)/***@param{number[]}nums*@param{number}target*@return{number}*/varsearch=function(nums,target){letleft=0;letright=nums.length-1;//[left,right],相等时......
  • leetcode算法题 437.路径总和
    题目描述给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。 示例示例1:输入:root=[10,5,-3,3,2,null,1......
  • 算法iITCGP的数值试验结果
    试验一:试验二: ......
  • 算法-中缀转后缀表达式(C++)
    因为操作数在后缀表达式中它们的顺序与中缀表达式一致,所以操作数不需要进行特殊处理,所以遇到数字就输出,遇到符号就经过处理再输出所以需要用一个存储结构存符号为什么用栈存储:要利用后进先出的特性出栈也就是加入到后缀表达式中,一部分一部分处理,处理完一部分,要处理他邻近的......
  • <Leetcode:算法题及解析>最大子数组和(Javascript版)
    题目描述:给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组是数组中的一个连续部分。本题可以使用Kadane's算法实现,这是一种用于解决最大子数组和问题的高效算法。它由JosephBornKadane在1984年提出。这个算法的核......
  • ssm果蔬销售商城vue 协同过滤算法 echart可视化springboot
    目录项目介绍系统实现截图协同过滤算法B/S架构技术介绍核心代码部分展示论文结构其他springboot项目推荐系统测试详细视频演示果蔬销售商城源码获取项目介绍ssm果蔬销售商城果蔬销售系统—便于商家记录销售情况同时方便消费者购买水果蔬菜的电商平台前台用户模块:......
  • 智能车摄像头开源—1.2核心算法:自适应八向迷宫(下)
    一、前言     本篇将详细讲述自适应八向迷宫的算法原理,优势以及弊端。     同样在此声明:此系列开源均由本人实践和经验得出,并不保证完全正确,仅供参考和入门学习。二、自适应八向迷宫优势具备极快的速度优势,在双核主频200MHz英飞凌TC264主控上,单核运算......
  • C++ 排序算法(选择、冒泡、插入)
    八、选择排序(从小到大): 选择排序的基本思想是:每一趟从待排序的数据中,通过“打擂台”比较选出最小元素,放在这些数据的最前面。这样,第一趟把n个数中(第1个到第n个)最小的放在第一个位置,第二趟把剩余的n-1个数中(第2个到第n个)最小的放在第二个位置,第三趟把剩余的n......
  • AbMole|基于主客体液体门控机制的通用定量化学检测
    定量检测方法在环境和生物体内化学分子的量化和分析中起着至关重要的作用,为环境评估、食品安全、健康监测、临床药物测试和国土安全等领域提供评估指导。来自厦门大学化学化工学院的HuimengWang,YiFan,YaqiHou等多名研究人员发表了题为《Host-guestliquidgatingmecha......
  • 【关联规则挖掘算法‌】基于聚类的关联规则挖掘算法
    目录一、基于聚类的关联规则挖掘算法概述1.1K-Means算法1.2K-Means++算法1.3DBSCAN算法1.4层次聚类算法二、基于聚类的关联规则挖掘算法优缺点和改进2.1  基于聚类的关联规则挖掘算法优点2.2  基于聚类的关联规则挖掘算法缺点2.3  基于聚类的关联规则挖掘算......