Training Transformers with 4-bit Integers

news/2025/1/8 15:52:10/文章来源:https://www.cnblogs.com/MTandHJ/p/18659940

目录
  • 符号说明
  • 4-bit FQT
    • Learned Step Size Quantization
    • Hadamard Quantization
    • Bit Splitting and Leverage Score Sampling
  • 代码

Xi H., Li C., Chen J. and Zhu J. Training transformers with 4-bit integers. NeurIPS, 2023.

本文针对 4-bit 中训练中一些特点 (针对 transformers) 提出了一系列解决方法.

符号说明

  • 本文主要考虑 transformer 的 4-bit 量化训练, 其中主要涉及如下的矩阵乘法操作:

    \[\mathbf{Z} = \mathbf{XW}^T, \quad \mathbf{Z} \in \mathbb{R}^{N \times C}, \mathbf{X} \in \mathbb{R}^{N \times D}, \mathbf{W} \in \mathbb{R}^{C \times D}. \]

4-bit FQT

Learned Step Size Quantization

  • 首先, 作者采用 learned step size quantizer (LSQ):

    \[\text{int}_{s_X} (\mathbf{X}) := \lfloor \text{clamp}(\mathbf{X} / s_X, -Q_N, Q_P) \rceil, \]

    其中 \(s_X\) 是可学习的参数, 旨在保证将输入的范围放缩到 \([-Q_N, Q_P]\). 量化后的值属于: \(\{-Q_N, -Q_N + 1, \ldots, Q_P\}\), 对于 4-bit 量化, \(Q_N = Q_P = 7\).

  • 反量化过程为:

    \[\text{float}(\text{int}_{s_X} (\mathbf{X})) = s_X \text{int}_{s_X}(\mathbf{X}) \approx \mathbf{X}. \]

  • 给定 LSQ, 量化后的矩阵乘法可以用如下方式近似:

    \[\mathbf{Y} = \mathbf{XW}^T \approx s_X s_W \text{int}_{s_X} (\mathbf{X}) \text{int}_{s_W} (\mathbf{W})^T. \]

Hadamard Quantization

  • 但是, 单纯使用 LSQ 会产生很大的误差, 主要原因是, 数据的分布如上图 (a) 所示极不均匀, 所以提出用 Hadamard matrix 来进行一个 smooth.

  • Hadamard matrix 是一个 \(2^k \times 2^k\) 大小的正交矩阵:

    \[\mathbf{H}_0 = [1], \quad \mathbf{H}_k = \frac{1}{\sqrt{2}} \left [\begin{array}{cc}\mathbf{H}_{k-1} & \mathbf{H}_{k-1} \\\mathbf{H}_{k-1} & -\mathbf{H}_{k-1}\end{array} \right ]. \]

    容易证明 \(\mathbf{H}_k \mathbf{H}_k = \mathbf{I}\). 如 (b) 所示, 明显分布更加均匀了.

  • 而且, 这种方式下的量化矩阵乘法的计算也是方便的:

    \[\mathbf{Y} = \mathbf{XW}^T \approx s_X s_W \text{int}_{s_X} (\mathbf{XH}) \underbrace{\mathbf{HH}^T}_{=\mathbf{I}} \text{int}_{s_W} (\mathbf{WH})^T. \]

Bit Splitting and Leverage Score Sampling

  • 在 Backpropagation 过程中, 作者发现, transformers (但是卷积网络不行) 的梯度呈现出明显的结构稀疏性, 经常一整行为 0. 作者选择抛弃对很小的梯度的量化, 用省下的空间去建模那些较大的值. 这些操作通过 bit splitting 和 leverage score sampling 实现. 感兴趣的请回看原文.

代码

[official-code]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/865924.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python SQLAlchemy ORM——从零开始学习 02简单的增删查改

02 简单的增删查改 前情提要:承接了01中的engine以及User类 2-1 了解会话机制个人理解 在SQLAlchemy 增删查改中是依赖会话(Session)这个机制进行操作的,我个人的理解是用“会话“进行连接数据库周期的一系列管理操作(以下是ai生成对此会话的理解)ai理解 在 SQLAlchemy 中…

YASKAWA机械手维修DX100示教器通电无反应

安川机器人DX100示教器通电无反应可能由多种原因导致,以下是一些常见的原因及对应的解决方法:可能原因电源问题:电源线破损或电源插座接触不良。 硬件故障:示教器内部电路板或元件(如内存条、处理器或显示屏等)损坏。 软件问题:软件发生错误或版本不匹配。 其他故障:…

春节电商爆单背后的协作黑科技!

每到春节,电商平台的交易额都会迎来新一轮爆发。但你是否思考过,支撑这一庞大运作的团队如何在高压之下确保高效协作?答案或许就藏在你忽略的细节里:在线文档协作。 春节购物高峰的背后:团队协作挑战重重 春节期间,消费者习惯于提前囤年货、抢促销,购物高峰往往集中爆发…

Transformer、编码器、解码器、全连接FFN、自注意力机制、嵌入向量、残差连接层归一化

一.提出背景 Transformer最早是Google在2017年的Attention Is All You Need论文中提出,用于解决解决传统的序列到序列(Seq2Seq)模型在处理可变长序列时遇到的问题。(序列到序列:指的是模型的输入是一段序列,模型输出也是序列;比如语音识别中给模型一段中文语音序列,让模…

JS-22 字符串的方法_concat()

concat方法用于链接两个字符串,返回一个新字符串,不改变原字符串 var s1=zifuchuan var s2=tow s1.concat(s2)//"zifuchuantow" s1//"zifuchuan" 该方法可以接受多个参数 two.concat(zifuchuan,three)//"zifuchuanthreetwo" 如果参数不是字符串…

年货抢购狂潮来袭,协作效率如何提升?

每年春节,都是电商企业竞争最激烈的战场。从年前的大促销到年后的物流爆单,作为电商团队的一员,你是否为节日期间高强度的工作节奏而焦虑?特别是在跨部门协作时,沟通不畅、任务延误、文档混乱等问题是否成为了团队效率的致命瓶颈? 在这一背景下,在线文档协作成为了提升春…

ASE100N10-ASEMI中低压N沟道MOS管ASE100N10

ASE100N10-ASEMI中低压N沟道MOS管ASE100N10编辑:ll ASE100N10-ASEMI中低压N沟道MOS管ASE100N10 型号:ASE100N10 品牌:ASEMI 封装:TO-220 批号:最新 最大漏源电流:100A 漏源击穿电压:100V RDS(ON)Max:8.8mΩ 引脚数量:3 芯片个数: 沟道类型:N沟道MOS管、低压MOS管 …

raylib U1S05 - 添加一个开始页面

先来看效果 看之前让我吐个槽。刚才编辑一半,结果我手贱点了个退出登录,然后都没了˃̣̣̥᷄⌓˂̣̣̥᷅开始按钮的图片是用豆包AI生成的,然后用美图秀秀抠图,改颜色。懒得自己搞素材的同学保存下面的三个图,注意改名字。普通状态 鼠标放上去 鼠标点击start_normal.png …

KES(KingBaseES)集群部署实战

今天我们将探讨关于KES(KingBaseES)的集群部署方案。作为示例,我们将以读写分离(RWC)集群为例,快速在本地进行部署和安装,并深入了解KES的部署流程。在本章中,我们将采用Windows平台上的可视化部署工具来进行集群的安装和配置。然而,由于硬件资源有限,本次演示仅展示…

测试图片功能

博客园的链接:123图床的链接: