LLM大模型量化技术原理-ZeroQuant系列

ZeroQuant与SmoothQuant量化总结 ZeroQuant SmoothQuant量化总结 阅读详情

近年来,随着Transformer、MOE架构的提出,使得深度学习模型轻松突破上万亿规模参数,从而导致模型变得越来越大,因此,我们需要一些大模型压缩技术来降低模型部署的成本,并提升模型的推理性能。 模型压缩主要分为如下几类:

  • 剪枝(Pruning)
  • 知识蒸馏(Knowledge Distillation)
  • 量化

而本文主要针对大模型量化技术 ZeroQuant 系列进行讲述。

  • ZeroQuant: Efficient and Affordable Post-Training Quantization for Large-Scale Transformers
  • ZeroQuant-V2: Exploring Post-training Quantization in LLMs from Comprehensive Study to Low Rank Compensation
  • ZeroQuant-FP: A Leap Forward in LLMs Post-Training W4A8 Quantization Using Floating-Point Formats
  • ZeroQuant-HERO: Hardware-Enhanced Robust Optimized Post-Training Quantization Framework for W8A8 Transformers

文章较长,建议先点赞收藏,后续再慢慢观看。另外,我撰写的大模型相关的博客及配套代码均整理放置在Github:llm-action,有需要的朋友自取。

ZeroQuant

背景

由于内存/计算要求过高,即使对于强大的云服务器来说,如何在实践中有效地服务越来越大的模型也变得异常具有挑战性。在这项工作中,我们提出了一种高效且经济实惠的训练后量化方法来压缩基于 Transformer 的大模型,称为 ZeroQuant。

ZeroQuant量化方案

将 INT8 PTQ 应用于 BERT/GPT-3 模型会导致准确性显著下降。关键的挑战是 INT8 的表示无法完全捕获权重矩阵中不同行和不同激活Token的不同数值范围。解决这个问题的一种方法是对权重矩阵(激活)使用group-wise(token-wise)量化。

用于权重矩阵的分组量化:

分组量化最先在Q-BERT中提出,其中权重矩阵 W∈Rn×mW \in R^{n \times m}W∈Rn×m被划分为 g 个组,每个组单独量化。然而,在Q-BERT中,作者仅将其应用于量化感知训练。更重要的是,他们没有考虑硬件效率约束,也没有系统后端支持。因此,它们缺乏真正的降低延迟。

在我们的设计中,考虑了 GPU Ampere 架构(例如: A100)的硬件约束,其中计算单元基于 Warp Matrix Multiply and Accumulate (WMMA) 的分片(Tiling)大小,以实现最佳加速。与单矩阵量化相比,我们的分组量化由于其更细粒度的量化而具有更好的精度,同时极大的降低了延迟。

用于激活的按token量化:

现有 PTQ 中对激活进行量化常见做法是使用静态量化,其中最小/最大范围是在离线校准阶段计算的。

对于激活范围方差较小的小模型来说,这种方法可能就足够了。然而,GPT-3 和 BERT 等大 Transformer 模型的激活范围存在巨大差异。因此,静态量化方案(通常应用于所有tokens/样本)将导致准确度显著下降。

克服这个问题的一个办法就是采用更细粒度的token-wise量化并动态计算每个token的最小/最大范围,以减少激活引起的量化误差。评估结果表明针对激活的 token-wise 量化显著提高了 类GPT-3 和 BERT 模型的准确性。

然而,使用现有的深度学习框架(例如:PyTorch 量化套件)直接应用 token-wise 量化会导致显著的量化和反量化成本,因为 token-wise 量化引入了额外的操作,导致 GPU 计算单元和主存之间产生昂贵的数据移动开销。

为了解决这个问题,ZeroQuant 构建了一个高度优化的推理后端,用于Transformer模型 token-wise 量化。例如,ZeroQuant 的推理后端采用所谓的核融合(kernel fusion)技术将量化算子与其先前的算子(如:层归一化)融合,以减轻 token-wise 量化的数据移动成本。类似地,在将最终 FP16 结果写回到下一个 FP16 算子(如:GeLU)的主存之前,使用权重和激活量化 scales 缩放 INT32 accumulation,可以减轻不同 GeMM 输出的反量化成本。

Token-wise 量化可以显著减少量化激活的表示误差,它不需要校准激活范围,对于ZeroQuant 的量化方案(INT8 权重和 INT8 激活)不存在与量化相关的成本(例如,激活范围校准)。

逐层知识蒸馏

知识蒸馏(KD)是缓解模型压缩后精度下降的最有力方法之一。然而,KD 存在一些局限性,特别是对于大语言模型上的隐藏状态 KD:

  • 1)KD 需要在训练过程中将教师和学生模型放在一起,这大大增加了内存和计算成本;
    1. KD 通常需要对学生模型进行充分训练。因此,需要在内存中存储权重参数的多个副本(梯度、一阶/二阶动量)来更新模型;
    1. KD 通常需要原始训练数据,有时由于隐私/机密问题而无法访问。

为了解决这些限制,我们提出了逐层蒸馏(LKD)算法缓解精度损失,原网络做老师,量化后的网络做学生。

量化优化的 Transformer kernel

优化推理延迟和模型大小对于在实践中服务大Transformer 模型至关重要。在推理过程中,batch size往往比较小,因此模型的推理延迟主要取决于从主存加载推理所需数据的时间。通过将权重和激活量化到较低的精度,我们减少了加载这些数据所需的数据量,从而可以更有效地使用内存带宽和更高的加载吞吐量。

然而,简单地将权重/激活转换为 INT8 并不能保证延迟的改善,因为存在与量化/反量化操作相关的额外数据移动开销,如图 2(红色框)所示。这样的开销很昂贵,并且在某些情况下超过了使用低精度的性能优势。

image.png

为了从 token-wise 量化中获得准确性提高,同时获得更低的延迟,作者针对性提做了优化,可以最大限度地提高内存带宽利用率,以加快 ZeroQuant 的推理延迟。

  • CUTLASS INT8 GeMM:为了支持 INT8 计算,我们使用针对不同批量大小进行调整的 CUTLASS INT8 GeMM 实现。与标准 GPU 后端库(例如:cuDNN)不同,使用 CUTLASS 允许我们在 GeMM 之前和之后更灵活地融合量化操作,以减少kernel启动和数据移动开销。
  • 融合 Token-wise 激活量化:Token-wise量化/反量化引入了许多额外的操作,从而导致额外的数据移动成本。为了消除这些成本,我们使用核融合将激活的量化操作与其之前的 element-wise 归约操作(例如: bias-add、GeLU 和 LayerNorm)融合到单个算子中,如图 2(绿色框)所示。对于反量化操作(例如,对 GeMM 算子的整数输出进行反量化),我们同样将其与自定义 GeMM 融合,以避免对主存进行额外的读/写访问,如图 2(蓝色框)所示。

ZeroQuant 小结

ZeroQuant 是一个端到端量化和推理管道,具有三个主要组件:

  • 1)针对权重和激活的细粒度硬件友好量化方案;
  • 2)一种新的、经济实惠的逐层知识蒸馏算法(LKD),即无需访问原始训练数据;
    1. 提供了一个高度优化的量化系统后端,以消除量化/反量化开销。

实验结果显示:

  • ZeroQuant 可以将 BERT 和 类GPT-3 等模型的权重和激活精度降低到 INT8,对模型准确率的影响最小,同时,与 FP16 推理相比,这些模型的推理速度提高了 5.19 倍/4.16 倍;
  • ZeroQuant 加上 LKD 可将全连接模块中的权重量化为 INT4,以及注意力模块中的INT8权重和INT8激活,与FP16模型相比,内存占用减少了3倍;
  • ZeroQuant可以直接应用于GPT-J和GPT-NeoX等,其中我们的INT8模型达到了与FP16模型相似的精度,但效率提高了5.2倍。

image.png

ZeroQuant-V2

背景

训练后量化 (PTQ) 已成为一种有前途的技术,可减少大语言模型中的内存消耗和计算成本 (LLMs)。然而,目前缺乏对各种量化方案、模型族和量化位精度的系统检查。

本文将舍入到最近(RTN)、GPTQ、 ZeroQuant 及其变体方法应用于参数范围从 125M 到 176B 的两个不同的模型系列进行了系统性分析。

文本的贡献如下:

  • 1)敏感性分析表明,相比于权重量化,激活量化精度更容易受到的影响,较小的模型在激活量化方面通常优于较大的模型; (2) 对现有 PTQ 方法进行评估和比较,使模型的尺寸减小,同时最大限度地减少对精度的影响,揭示当前的方法使用 INT4 权重 或 INT4 权重和INT8激活 进行量化都无法达到原始模型质量; (3)基于以上见解,本文提出了一种称为低秩补偿(LoRC)的优化方法,该方法采用低秩矩阵以最小的模型参数大小的增加来提升模型质量的恢复。

不同的模型系列在量化方面的表现是否相似?

针对不同的模型系列进行敏感性分析发现:

  1. INT8纯权重量化可以作为标准一种降低LLM内存成本的方法,其准确性的下降可以忽略不计。
  2. 小模型的 INT4 仅权重量化会导致精度大幅下降(Class-3),但这种影响会随着模型大小的增加而减弱 (Class-2)。
  3. 与2相反,INT8 激活导致小型模型的准确度下降最小(Class-1),但较大的模型表现出更大的下降(Class-3)。
  4. 对于 INT8 激活,BLOOM 在模型大小达到 176B 时没有出现差异,而 OPT 从 6.7B 模型大小起表现不佳。

image.png

现有的量化方法是否以最佳方式利用了最小化LLM大小的潜力?

人们已经提出了许多轻量级优化的方法,这些方法在量化期间更新模型权重。这些方法(如:zeroquant、gptq等),与量化感知训练不同,只需要一小部分训练数据和有限的训练时间。并且 GPTQ 和 ZeroQuant 已被证明在 GPU 资源、时间成本等方面是有效和高效的。本文重点关注 GPTQ 和 ZeroQuant 的变体以及最直接的基线舍入到近邻(RTN) 。

  • RTN 直接对训练数据应用 PTQ,即Q(x)=INT((x−Z)/S)−ZQ(x) = \text{INT}\big({(x-Z)}/{S}\big)-ZQ(x)=INT((x−Z)/S)−Z。具体来说,对于对称量化,我们设置 S=max(abs(x))S=max(abs(x))S=max(abs(x)) 和 Z=0Z=0Z=0;对于非对称量化,我们设置 S=max(x)−min(x)S=max(x)-min(x)S=max(x)−min(x) 和 Z=min(x)Z=min(x)Z=min(x)。
  • GPTQ 扩展了 OBQ,它尝试优化以下非线性最小二乘问题,min⁡W∥Wx−Wx∥22\min_{\hat W} |Wx - \hat Wx|_22minW​∥Wx−W^x∥22​ ,其中 W 是权重,x 是激活值,W^\hat WW^ 是量化权重。 GPTQ 采用二阶方法来求封闭式解。此外,每个权重矩阵的量化是按列/行方式执行的,并且先前列的量化误差将传递到尚未量化的那些列。
  • ZQ-Global 是ZeroQuant中提出的原始方法,作者将每一层视为一个小型神经网络(也称为子网络),并使用 FP16 子网络作为教师模型,通过数百次迭代来提取量化的模型,即min⁡θ∣fθ(x)−fθ(x)∣22, \min_{\hat \theta} |f_{\theta}(x) - f_{\hat\theta}(x)|22,minθ​∣fθ​(x)−fθ^​(x)∣22, ,其中 θ\thetaθ 是一组权重,θ^\hat \thetaθ^ 是量化版本,fθf{\theta}fθ 是具有参数 θ\thetaθ 的子网络,x 是输入。因此,它可以显著降低GPU资源需求和时间成本。
  • ZQ-Local是ZQ-Global的扩展模式,用于进一步降低GPU需求和降低训练成本。我们不使用每个transformer层作为子网络,而是将每个线性层视为子网络。该方法可以看作是一种迭代一阶优化方法(例如:SGD)用于求解 min⁡W∥Wx−Wx∥22\min_{\hat W} |Wx - \hat Wx|_22minW​∥Wx−W^x∥22​ 。

通过实验发现:

  1. GPTQ 通常在仅权重量化方面表现更好,而 ZeroQuant(包括 ZQ-Global 和 ZQ-Local)在权重和激活量化方面产生优异的结果。
  2. 除了 OPT-30B 上使用仅权重量化的 GPTQ 之外,测试的其他的量化方法(仅 INT4 权重或 W4A8)均无法实现 Class-1 量化误差。

低秩补偿(LoRC)的优化方法

LoRC 的灵感来自于对量化误差矩阵 E:=W−W^E:=W- \hat{W}E:=W−W^ 进行低秩矩阵分解,其中 WWW 表示原始权重,W\hat{W}W 是量化权重。

LoRC 通过使用两个低秩矩阵 U\hat{U}U 和 V\hat{V}V 来近似误差 E=UV\hat{E}=\hat{U}\hat{V}E=UV。这样可以通过 Wlorc=W+E^\hat{W}{\text{lorc}} = \hat{W} + \hat{E}Wlorc​=W+E^ 更准确地近似原始权重矩阵 W,从而减少量化误差:∥W−W∥≥∥W−Wlorc∥|W-\hat{W}|\geq |W-\hat{W}{\text{lorc}}|∥W−W∥≥∥W−Wlorc​∥。

LoRC 包含两个步骤:

步骤一:在误差矩阵 E=UΣVE = U \Sigma VE=UΣV 上实现奇异值分解(SVD),其中 U∈Rdin×dinU \in\mathbb{R}^{d_\text{in}\times d_\text{in}}U∈Rdin​×din​ 和 V∈Rdout×doutV \in \mathbb{R}^{d_\text{out} \times d_\text{out}}V∈Rdout​×dout​ 是酉矩阵,Σ∈Rdin×dout\Sigma \in\mathbb{R}^{d_\text{in}\times d_\text{out}}Σ∈Rdin​×dout​ 是一个对角矩阵,其对角元素按降序方式排列。

步骤二:公式表示矩阵 E=UV^\hat{E} = \hat{U} \hat{V}E=UV^ ,其中,U^=Um(Σm)12\hat{U}= U_m(\Sigma_m){\frac{1}{2}}U=Um​(Σm​)21​ ,V^=(Σm)12Vm\hat{V}= (\Sigma_m)^{\frac{1}{2}} V_mV^=(Σm​)21​Vm​

  • Um=U:,1:m∈Rdin×mU_m = U_{:, 1:m} \in\mathbb{R}^{d_\text{in}\times m}Um​=U:,1:m​∈Rdin​×m
  • Vm=V1:m,:∈Rm×doutV_m = V_{1:m, :} \in\mathbb{R}^{ m \times d_\text{out}}Vm​=V1:m,:​∈Rm×dout​
  • Σm=Σ1:m,1:m∈Rm×m\Sigma_m = \Sigma_{1:m, 1:m} \in\mathbb{R}^{ m \times m}Σm​=Σ1:m,1:m​∈Rm×m

LoRC 的目标是使用低秩矩阵实现误差矩阵 EEE 的近似,同时对模型参数大小的增加影响最小。

例如,对于标准transformer模型,其中每一层都由多头注意力(MHA)模块和 MLP 模块组成。令 h 表示隐藏维度,l 表示层数。参数总数为 12lh212lh^212lh2,每层包含 4h24h^24h2 用于 MHA(用于K、Q、V和投影矩阵)和 8h28h^28h2 用于 MLP(两个大小为 h × 4h 和 4h × h 的矩阵)。在每层6个矩阵中添加低秩LoRC后,l层参数总数将达到 18hml(6 * 3hm * l) 。因此,向现有模型添加参数的比例为3m/2h。需要注意的是,低秩维度 m 可以小到 4 或 8,而标准隐藏维度 h ≥ 768,使得数字 3m/2h ≤ 0.016。

评估结果

LoRC 可以被视为现有量化方法(例如:RTN、GPTQ 和 ZeroQuant-Local/Global)的补充功能,并且可以与 FGQ 无缝集成。我们进行了实验来评估 LoRC 在 OPT 和 BLOOM 上的性能,通过将激活设置为 FP16 来应用 4 比特、3 比特和 2 比特权重量化。

本文利用 GPTQ量化策略,为了全面了解 LoRC,包含了应用和不应用 FGQ 的结果。结果如表 7 所示,分为两部分:粗粒度权重量化(每行)和细粒度量化(块大小 256)。值得注意的是,我们观察到两个低秩矩阵 U\hat{U}U 和 V\hat{V}V 可以量化为 8 比特,而不会出现任何性能差异(表 8)。

image.png

image.png

得出几个关键的观察结果。

  • 首先,LoRC 始终如一地提高所有比特大小和块大小的性能。
  • 其次,LoRC带来的增强随着比特大小的减小而变得更加显著,尤其是对于W2A16来说更为明显,在大多数场景下与W4A16和W3A16相比,其影响明显更大。
  • 最后,细粒度量化与 LoRC 的结合产生了最令人印象深刻的结果,强调了 LoRC 与 FGQ 集成时的效果。

总体而言,结果显示出使用 LoRC 增强了权重量化性能及其与 FGQ 的兼容性。

ZeroQuant-V2 小结

本文使用不同的 PTQ 方法(例如:RTN、GPTQ、ZeroQuant)和不同的量化覆盖范围(仅权重、权重和激活)对大语言模型的训练后量化 (PTQ) 进行了全面的研究。发现PTQ方法对于提高量化模型质量至关重要,而细粒度量化(FGQ)可以带来可接受的精度和模型大小的权衡。

最后,作者引入了一种称为低秩补偿(LoRC)的优化技术,它与 PTQ 和 FGQ 协同工作,以最小的模型参数大小的增加来改善整个模型质量的恢复。

本文存在的局限性。尽管量化了 10,000 多个实验,但我们的研究仍受到计算资源的限制。这种限制使我们在模型大小多样化和任务多样化之间做出选择。我们战略性地将数据集限制为 WikiText、PTB 和 C4,以专注于更广泛的量化方法的对比。因此,对于本文中检查的两个模型系列和三个数据集,总体来说都更加稳健。然而,将这些发现推广到与本研究所涵盖的任务不同的任务上应谨慎。

ZeroQuant-FP

背景

在大语言模型领域,在计算效率和保持模型质量之间取得平衡是一项艰巨的挑战。为了克服多数量化固有的局限,特别是在处理异常值时,并受到 NVIDIA H100 硬件推出的推动,本研究深入探讨了浮点 (FP) 量化的可行性,特别关注 FP8 和 FP4 作为潜在解决方案。

通过调查显示:

  • 对于 LLMs,FP8 激活始终优于其INT8激活 ,并且在参数超过 10 亿的模型中,性能优势变得更加明显。
  • 对于权重量化,FP4 表现出与 INT4 相当(即使不是更优)的性能,从而简化了在 H100 等支持 FP 的硬件上的部署。

为了减轻权重和激活之间的差异引起的精确对齐的开销,本文提出了两个权重量化的缩放建议,与标准 W4A8 模型相比,它们对模型性能的影响可以忽略不计。同时还通过集成低秩补偿(LoRC)策略来增强我们的量化方法,并且在较小的模型中也有提升。

ZeroQuant-FP 优化方案

本文选择使用的方法与 GPTQ 保持一致。根据 ZeroQuant-V2 ,本文应用了细粒度权重量化(FGQ),并对激活进行 token-wise 量化。此外,我们还将研究ZeroQuant-V2中提出的附加特征 LoRC(低秩补偿) ,其目的是通过采用低秩矩阵分解来减少权重的量化误差。

LoRC涉及两个主要步骤:

  • 首先,它对误差矩阵进行奇异值分解(SVD),误差矩阵是原始权重与量化权重之间的差值。因此,误差矩阵被分解为两个酉矩阵和一个对角矩阵。
  • 其次,该方法使用从第一步中的矩阵导出的两个低秩矩阵来制定新的误差近似。然后将该近似值添加到量化权重中,以产生对原始权重的更准确的估计,从而减少量化误差。

将 FP4 转换为 FP8 方案:

本文探索了 FP4 权重和 FP8 激活量化的潜力。但由于对权重 (W) 和激活 (A) 使用不同的精度级别,出现了一个独特的挑战。 W4A8 在 H100 NVIDIA 硬件中的实际软件实现是需要转换 W 的 FP4 以匹配 A 中使用的 FP8 精度。直接反量化然后再次量化的方法可能会对推理效率产生不利影响,因此不是一个可行的解决方案。

为了解决这个问题,我们提出了位移方法。这意味着,我们不让等式(Q(x) = INT(x − Z)/S − Z)中定义的 S 为任何实值比例因子,而是将 S 限制为 2 的幂,即 S=2nS = 2^nS=2n,n ∈ N(当n为负数时,S仍然可以表示分数;当n不为负数时,S仍然可以表示整数。)。

本文实现了两种方法:

  • (M1) 映射到由 2 的幂表示的最接近的值,即让新的scale为 S^=2⌈log⁡2(S)⌉\hat{S} = 2^{\lceil \log_2(S)\rceil}S^=2⌈log2​(S)⌉
  • (M2) 首先收集scales形成向量 S=[S1,S2,…,Sn]\mathbf{S} = [S_1, S_2, \ldots, S_n]S=[S1​,S2​,…,Sn​] 。然后取组(group)中的最大值(通常,该集合由矩阵的(多)行组成),记为Smax⁡S_{\max}Smax​,将这些元素Smax⁡/SiS_{\max}/S_iSmax​/Si​调整为2的幂表示,然后定义 S^i=Smax⁡/2⌈log⁡2(Smax⁡/Si)⌉\hat{S}i = S{\max}/ 2^{\lceil \log_2(S_{\max}/S_i)\rceil}S^i​=Smax​/2⌈log2​(Smax​/Si​)⌉。与 (M1) 相比,这提供了更好的近似值。

注意:这种使用 2 的幂的限制,无论是使用 (M1) 还是 (M2),都可以简化计算,特别是在基于二进制逻辑操作的数字系统中。这是我们优化计算效率和保持模型性能的方法的关键要素。

实验结果

本文基于GPTQ(不带或带LoRC),对激活量化(FP8、INT8)和权重量化(FP8、FP4)到进行全面比较。表2展示了应用权重和激活的不同整型 (INT) 和浮点型 (FP) 量化方法在 LLaMA(上)和 OPT(下)模型上的评估结果。性能以困惑度来衡量(分数越低越好),使用了三个数据集:WikiText-2 (WIKI)、PTB 和 C4。对于每个模型的结果,首先显示整个数据集的平均性能,然后是每个数据集的详细分。

image.png

FP8 激活优于 INT8 激活:

对于 LLaMA 和 OPT 模型系列,FP8 激活通常优于 INT8 激活。这一观察结果证实了 FP8 捕获更细致信息的卓越能力。并且对于参数大于 67 亿的较大模型,例如: LLaMA-7b/13b 和 OPT-6.7B/13B,FP8 相对于 INT8 的优势变得更加明显。

FP8 权重可与 INT8 权重相媲美,而 FP4 权重则可能优于 INT4 权重:

当保持 FP8 激活时,各种模型和数据集上 INT8 权重和 FP8 权重量化之间的性能相当。这可能是由于我们在权重量化上使用了 FGQ。有趣的是,当降低权重量化比特时,FP4 表现出优于 INT4 的某些优势,在 LLaMA-7b(15.14 至 16.09)和 LLaMA-13b 模型(11.08 至 11.31)中尤其明显。具体来说,在 LLaMA-7b 的 W4A8 配置下,我们看到 FP4 比 INT4 提高了 0.95,这是一个显著的增益。 FP4 优于 INT4 的性能对于 H100 等已支持 FP8 的硬件设计尤其有利。因此,一个简单修改来适应 FP4 将比实现支持 INT4 权重和 FP8 激活的系统更容易。

LoRC 改进了 W4A8:

低阶补偿 (LoRC) 方法增强了 W4A8 量化方案,减少了量化误差。这种改进在较小的模型中尤其明显,突显了 LoRC 在优化这些计算过程的性能方面的有效性,同时对模型大小的影响很小。

将 FP4 转换为 FP8 的方案对比:

为了最大限度地提高 NVIDIA H100 硬件上的实际延迟加速,我们建议将权重量化的比例因子 S 表示为 2 的幂。为了实现这一目标,我们使用 FP4 进行权重量化和FP8 用于激活量化进行了一系列实验。表 3 列出了使用和不使用 LoRC 的实验结果。

数据显示,限制缩放因子偶尔会导致 LLaMA-7b 和 LLaMA-13b 等模型出现提升,但无论我们使用方法 M1 还是 M2,观察到模型性能通常会出现轻微的退化,W4A8 浮点模型中的质量都会受到影响。M2 通常优于 M1。当我们实施 LoRC 时,可以缓解质量下降的情况,特别是在 OPT-1.3b、LLaMA-7b 和 LLaMA-13b 模型中。因此,提倡使用 LoRC。

image.png

ZeroQuant-FP 小结

通过 FP8 激活量化和权重量化(W8A8)导致较小的模型退化,特别是在较大的模型中,FP8 激活和权重量化导致的模型退化可以忽略不计,其性能与原始 FP16 模型相当。

在W4A8浮点模型中,即使对缩放因子施加了约束,也能保持模型质量。

为了在 W4A8 模型中实现真正的效率,从 FP4 到 FP8 的权重转换至关重要。为了减轻这种转换开销,本文提出了权重量化的两种可能的缩放约束建议:

  • 1)将所有缩放因子限制为 2 的幂;
  • 2)将缩放因子放在一个计算组中(例如,权重矩阵的几行可以通过简单的位移位来转换)。

通过分析表明,与传统的 W4A8 配置相比,这两个限制提高了计算效率,同时对模型性能的影响可以忽略不计。

ZeroQuant-HERO

背景

由于机器学习算法和硬件之间的跨学科差距,该领域仍然很大程度上缺少硬件感知的 PTQ 方法,特别是对于基于 Transformer 的模型。

例如,ZeroQuant 为 BERT 和 GPT 模型提出了对激活进行每token动态量化和对权重进行每列量化,以实现良好的准确性。然而,它没有考虑如下两点:

  • 内存限制(memory bounded)算子,例如: LayerNorm 和 attention,并将这些部分留在 FP16/BF16 中。
  • 当没有算子融合机会时,调用额外kernel进行每个token量化的成本,例如:注意输出线性层的 INT8 GeMM 算子。

为了解决这些限制,我们引入了 ZeroQuant-HERO,这是一个完全硬件感知且实用的训练后 W8A8 量化框架。具体贡献总结如下:

  1. ZeroQuant-HERO 在设计时考虑了内存带宽限制和计算密集型运算。因此,该框架可以(有可能)实现最佳硬件性能。
  2. 为了进一步提高 ZeroQuant-HERO 的可用性,可以执行 ZeroQuant-HERO 的不同量化级别,即 INT8 运算与 FP16/BF16 对应运算的比率,以实现所需的精度和延迟权衡。

ZeroQuant-HERO 量化方案

ZeroQuant-HERO中,除非特别的注释说明,否则我们均使用 INT8 对称量化。然而,ZeroQuant-HERO方法也适用于其他 8 位精度格式,例如 FP8。

下面我们使用列主序权重矩阵格式来执行 GeMM:

Y=XWY = XWY=XW

其中, X∈Rn×dX\in\R^{n\times d}X∈Rn×d 是激活值,W∈Rd×mW\in\R^{d\times m}W∈Rd×m 是权重矩阵。

对于权重量化,我们执行按列量化(Zeroquant),即权重的每一列都有自己的缩放因子,

W=Wint8SwW = W_{int8}S_wW=Wint8​Sw​

其中,WWW 是重建的权重矩阵,Wint8W_{int8}Wint8​ 是 INT8 对应矩阵,Sw∈R1×mS_w\in\R^{1\times m}Sw​∈R1×m 是缩放向量。

对于激活量化,我们应用三种不同的量化方案。

Token-wise 量化(TWQ) :

作者用于token量化的第一个量化方案是 TWQ(Zeroquant)。

X=SxXint8X = S_xX_{int8}X=Sx​Xint8​

其中, XXX 是重建的激活,Xint8X_{int8}Xint8​ 是 INT8 对应项, Sx∈Rn×1S_x\in\R^{n\times 1}Sx​∈Rn×1 是缩放向量。

这种方法需要动态计算缩放向量 SxS_xSx​ ,这更适合带宽限制算子融合,例如:层归一化 (LN)。

事实上,量化是以零内存开销成本完成的,使用额外的寄存器级操作来计算最小值和最大值,以降低将在以下 GeMM 算子中使用的 LN 的输出精度。另一方面,如果与 GeMM 等计算密集型算子融合,这种扩展方法会损害 Tensor-core 效率,因为会增加寄存器压力并为每个矩阵乘法累加 (MMA) 操作添加更多计算。

Feature-wise 量化 (FWQ) :

作者用于token量化的第二种量化方案是 FWQ (Outlier suppression、Smoothquant)。

X=Xint8SxX = X_{int8}S_xX=Xint8​Sx​

其中, Sx∈R1×dS_x\in\R^{1\times d}Sx​∈R1×d 是缩放向量。 SxS_xSx​ 需要在预处理阶段进行校准,即在网络中输入多批数据以获得缩放因子。由于它是预先确定的,因此可以简单地与大多数其他算子融合。与 TWQ 量化方案相比,TWQ 量化方案涉及读取token宽度(token-width)的长度来量化数据并且只能与某些算子融合,而 FWQ 缩放可以与内存限制或计算限制算子融合。

静态量化(SQ) :

X=Xint8Sx=SxXint8X = X_{int8}S_x=S_xX_{int8}X=Xint8​Sx​=Sx​Xint8​

其中,Sx∈RS_x\in\RSx​∈R 只是单个实值。与FWQ类似,在预处理阶段也需要进行校准。

ZeroQuant-HERO 核心组件

ZeroQuant-HERO 的三个主要组件:

  • 嵌入层量化
  • 注意力模块量化
  • MLP 模块量化

嵌入层量化:

Transformer 模型的第一个主要算子是查找表,也称为嵌入。通常,嵌入有三种类型,即标记嵌入(XtX_tXt​)、位置嵌入(XpX_pXp​)和句子类型嵌入(XsX_sXs​)。当批量大小足够大时,与 XtX_tXt​ 相比,XpX_pXp​ 和 XsX_sXs​ 相对较小。应用 layer norm:

Xemb=LN(Xt, Xp, Xs)X_{emb} = LN(X_t,X_p,X_s)Xemb​=LN(Xt​, Xp​, Xs​)

其中,XembX_{emb}Xemb​ 是 layer norm 的输出,LN 算子是与输入 XtX_tXt​ 和输出 XembX_{emb}Xemb​ 相关的内存带宽限制算子。

为了减少内存带宽开销,我们对 XtX_tXt​ 和 XembX_{emb}Xemb​ 都执行 TWQ,即

SembXemb,int8=LNquant(SxtXt,int8, Xp, Xs)S_{emb}X_{emb,int8} = LN^{quant}(S_{x_t}X_{t,int8},X_p,X_s)Semb​Xemb,int8​=LNquant(Sxt​​Xt,int8​, Xp​, Xs​)

其中, LNQuantLN^{Quant}LNQuant 是量化感知算子。通过利用上述embedding格式,我们将后续操作的通信数据量大致减少了 2 倍。

注意力模块量化:

Xq/k/v=XinWq/k/vX_{q/k/v} = X_{in}W_{q/k/v}Xq/k/v​=Xin​Wq/k/v​

A=XqXkT/dA = X_q X_k^T / \sqrt{d}A=Xq​XkT​/d​

P=Softmax(A)P = Softmax(A)P=Softmax(A)

Xattn=PXvX_{attn} = PX_vXattn​=PXv​

Xo=XattnWOX_o = X_{attn}W_OXo​=Xattn​WO​

Xout=LN(Xin, Xo)X_{out} = LN(X_{in},~X_o)Xout​=LN(Xin​, Xo​)

image.png

先对所有激活使用的量化方案进行分类:

TWQ 应用于 XinX_{in}Xin​ 和 XoutX_{out}Xout​ ,以最小的性能开销保持Transformer层输入和输出的高精度,因为缩放逻辑可以融合在预先发生的 LN 算子中。

SQ(静态量化) 应用于XqX_qXq​, XkX_kXk​, XvX_vXv​, and PPP,以提高涉及这些张量的GeMM运算的效率。我们将此逻辑添加到 flash-attention kernel 实现中,并且可以配置每个 GeMM 的 dtype 以保持模型准确性。

FWQ 应用于XattnX_{attn}Xattn​ 和 XoX_oXo​,以降低用于GeMM操作的缩放激活的复杂性,同时保持精度。与 SQ 相比,我们对每个输出元素使用一个scale,因此,此操作的性能成本类似于在线性层添加偏差。

对于 AAA,不应用量化。这是由于注意力分数值对其精度的敏感性,量化可能会损害下游任务的模型准确性。

在应用权重量化之前,我们有

Xq/k/v,int8Sq/k/v=SinXin,int8Wq/k/vX_{q/k/v,int8}S_{q/k/v} = S_{in}X_{in,int8}W_{q/k/v}Xq/k/v,int8​Sq/k/v​=Sin​Xin,int8​Wq/k/v​

A=SqSkXq,int8Xk,int8T/dA = S_qS_kX_{q,int8} X_{k,int8}^T / \sqrt{d}A=Sq​Sk​Xq,int8​Xk,int8T​/d​

SpPint8=SoftmaxQuant(A) S_{p}P_{int8} = Softmax^{Quant}(A)Sp​Pint8​=SoftmaxQuant(A)

Xattn,int8Sattn=SpSvPint8Xv, int8 X_{attn, int8}S_{attn} = S_pS_vP_{int8}X_{v,~int8}Xattn,int8​Sattn​=Sp​Sv​Pint8​Xv, int8​

Xo,int8So=Xattn,int8SattnWO X_{o, int8}S_o = X_{attn, int8}S_{attn}W_OXo,int8​So​=Xattn,int8​Sattn​WO​

SoutXout,int8=LNQuant(SinXin,int8, Xo,int8So)S_{out}X_{out, int8} = LN^{Quant}(S_{in}X_{in, int8},~X_{o, int8}S_{o})Sout​Xout,int8​=LNQuant(Sin​Xin,int8​, Xo,int8​So​)

这里,⋅quant\cdot^{quant}⋅quant 是量化感知运算,并且输出 SoftmaxquantSoftmax^{quant}Softmaxquant 是非对称 INT8 数,因为 softmax 的输出中没有负值。现在,让我们更深入地研究权重量化和 GeMM 算子。

首先,我们可以应用与Zeroquant相同的核融合来将反量化算子与INT8 GeMM融合。为了进一步减少量化开销,我们可以将 FWQ 和 SQ 的缩放因子融合到 INT8 GeMM 中,因为缩放因子是预先确定的。更重要的是,可以简化 FWQ/SQ 量化作为一个简单的舍入到整数的运算,无需任何除法/乘法,因为缩放因子可以合并到权重矩阵中。以Xq,int8X_{q, int8}Xq,int8​为例,我们可以定义

W~q=Wq/Sq\tilde W_q = W_q / S_qW~q​=Wq​/Sq​

Wq,int8Sq=Quant(Wq)\tilde W_{q,int8}S_q = Quant(\tilde W_q)Wq,int8​Sq​=Quant(Wq​)

这里QuantQuantQuant是量化转换运算。之后,post-GeMM 量化算子被简化为

Xq,int8=Round(GeMMquant(Xin,int8, Wq,int8, Sin, Sq))X{q, int8} = Round\left( GeMM^{quant}(X_{in, int8},~W_{q, int8},S_{in},S_{q})\right)Xq,int8=Round(GeMMquant(Xin,int8​, Wq,int8​, Sin​, Sq​))

其中, Round(⋅)Round(\cdot)Round(⋅) 是整数运算的舍入。同样,我们也不需要将除以 d\sqrt{d}d​ 后的 A 反量化计算。我们可以用 d~=SqSk/d\tilde d = S_qS_k/\sqrt{d}d~=Sq​Sk​/d​ 和 A=GeMMquant(Xq,int8,Xk,int8T,d~)A = GeMM^{quant}(X_{q,int8}, X_{k,int8}^T, \tilde d)A=GeMMquant(Xq,int8​,Xk,int8T​,d~) 进行简化。

SattnS_{attn}Sattn​ 和 SoS_{o}So​的缩放因子可以通过以下方式合并为 WoW_oWo​:

W~o=SattnWo/So\tilde W_o = S_{attn}W_o / S_oW~o​=Sattn​Wo​/So​

这样可以显著简化整个kernel实现。之后,LN 算子将两个 INT8 数作为输入,并为后续 MLP 模块输出最终的 INT8 激活值。

MLP 模块量化:

X1=XinW1X_1 = X_{in}W_1X1​=Xin​W1​

A=GELU(X1)A = GELU(X_1)A=GELU(X1​)

X2=AW2X_2 = AW_2X2​=AW2​

Xout=LN(Xin,X2)X_{out} = LN(X_{in}, X_2)Xout​=LN(Xin​,X2​)

image.png

与之前类似,我们首先对所有激活采用的量化方案进行分类。对于 XinX_{in}Xin​ 和 XoutX_{out}Xout​,应用 TWQ。对于 AAA 和 X2X_2X2​,应用 FWQ。对于 X1X_1X1​,不使用量化。在应用权重量化之前,我们有

X1=SinXin, int8W1X_1 = S_{in}X_{in,~int8}W_1X1​=Sin​Xin, int8​W1​

Aint8Sa=GELUquant(X1)A_{int8}S_a = GELU^{quant}(X_1)Aint8​Sa​=GELUquant(X1​)

X2,int8Sx2=Aint8SaW2X_{2, int8}S_{x_2} = A_{int8}S_aW_2X2,int8​Sx2​​=Aint8​Sa​W2​

Xout=LNquant(SinXin, X2Sx2)X_{out} = LN^{quant}(S_{in}X_{in},~X_2S_{x_2})Xout​=LNquant(Sin​Xin​, X2​Sx2​​)

与之前类似,可以将缩放因子 SaS_aSa​ 和 Sx2S_{x_2}Sx2​​ 合并到 W 中以简化计算:

W~2=SaW2/Sx2.\tilde W_2 = S_aW_2 / S_{x_2}.W~2​=Sa​W2​/Sx2​​.

混合精度推理

针对不同的模型和任务对量化的容忍度不同,并且对准确性和系统效率的权衡也有不同的期望。为了满足各种模型/任务的要求,混合精度推理是量化的解决方案之一。

由于 ZeroQuant-HERO 的模块化设计,我们可以为最终模型设置各种量化级别。

image.png

实验结果

ZeroQuant-HERO 不同量化级别的结果如下所示。随着量化级别的增加,整体精度会下降。然而,除了 CoLA(这是一个超级敏感的任务)之外,对于所有其余任务,即使是 ZeroQuant-HERO-M3, 与 FP16 相比,仅有较少的精度下降。

image.png

总结

本文讲述了微软提出ZeroQuant相关量化优化技术。

  • ZeroQuant 针对权重和激活提出了一个细粒度硬件友好量化方案,对权重矩阵使用group-wise量化,对激活使用token-wise 量化。同时逐层知识蒸馏算法(LKD)算法缓解精度损失,原网络做老师,量化后的网络做学生。
  • ZeroQuant-V2 引入了一种称为低秩补偿(LoRC)的优化技术,它与 PTQ 和 FGQ 协同工作,以最小的模型参数大小的增加来改善整个模型质量的恢复。
  • ZeroQuant-FP 探讨了浮点 (FP) 量化的可行性,同时,为了最大限度地提高 NVIDIA H100 硬件上的实际延迟加速,建议将权重量化的比例因子 S 表示为 2 的幂,并将缩放因子放在一个计算组中,同时可以通过 LoRC 缓解模型质量下降。
  • ZeroQuant-HERO 是一种新的硬件增强型训练后 W8A8 量化框架,为了解决算法与硬件协调的挑战。设计时考虑了内存带宽限制和计算密集型运算可以(有可能)实现最佳硬件性能。同时为了进一步提高 ZeroQuant-HERO 的可用性,可以执行 ZeroQuant-HERO 的不同量化级别,即 INT8 运算与 FP16/BF16 对应运算的比率,以实现所需的精度和延迟权衡。

如何系统的去学习AI大模型LLM ?

作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。

但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的 AI大模型资料 包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

所有资料 ⚡️ ,朋友们如果有需要全套 《LLM大模型入门+进阶学习资源包》,扫码获取~

👉优快云大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

​

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

在这里插入图片描述

四、AI大模型商业化落地方案

img

阶段1:AI大模型时代的基础理解

  • 目标:了解AI大模型的基本概念、发展历程和核心原理。
  • 内容:
    • L1.1 人工智能简述与大模型起源
    • L1.2 大模型与通用人工智能
    • L1.3 GPT模型的发展历程
    • L1.4 模型工程
      - L1.4.1 知识大模型
      - L1.4.2 生产大模型
      - L1.4.3 模型工程方法论
      - L1.4.4 模型工程实践
    • L1.5 GPT应用案例

阶段2:AI大模型API应用开发工程

  • 目标:掌握AI大模型API的使用和开发,以及相关的编程技能。
  • 内容:
    • L2.1 API接口
      - L2.1.1 OpenAI API接口
      - L2.1.2 Python接口接入
      - L2.1.3 BOT工具类框架
      - L2.1.4 代码示例
    • L2.2 Prompt框架
      - L2.2.1 什么是Prompt
      - L2.2.2 Prompt框架应用现状
      - L2.2.3 基于GPTAS的Prompt框架
      - L2.2.4 Prompt框架与Thought
      - L2.2.5 Prompt框架与提示词
    • L2.3 流水线工程
      - L2.3.1 流水线工程的概念
      - L2.3.2 流水线工程的优点
      - L2.3.3 流水线工程的应用
    • L2.4 总结与展望

阶段3:AI大模型应用架构实践

  • 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。
  • 内容:
    • L3.1 Agent模型框架
      - L3.1.1 Agent模型框架的设计理念
      - L3.1.2 Agent模型框架的核心组件
      - L3.1.3 Agent模型框架的实现细节
    • L3.2 MetaGPT
      - L3.2.1 MetaGPT的基本概念
      - L3.2.2 MetaGPT的工作原理
      - L3.2.3 MetaGPT的应用场景
    • L3.3 ChatGLM
      - L3.3.1 ChatGLM的特点
      - L3.3.2 ChatGLM的开发环境
      - L3.3.3 ChatGLM的使用示例
    • L3.4 LLAMA
      - L3.4.1 LLAMA的特点
      - L3.4.2 LLAMA的开发环境
      - L3.4.3 LLAMA的使用示例
    • L3.5 其他大模型介绍

阶段4:AI大模型私有化部署

  • 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。
  • 内容:
    • L4.1 模型私有化部署概述
    • L4.2 模型私有化部署的关键技术
    • L4.3 模型私有化部署的实施步骤
    • L4.4 模型私有化部署的应用场景

学习计划:

  • 阶段1:1-2个月,建立AI大模型的基础知识体系。
  • 阶段2:2-3个月,专注于API应用开发能力的提升。
  • 阶段3:3-4个月,深入实践AI大模型的应用架构和私有化部署。
  • 阶段4:4-5个月,专注于高级模型的应用和部署。
这份完整版的所有 ⚡️ 大模型 LLM 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

全套 《LLM大模型入门+进阶学习资源包》↓↓↓ 获取~

👉优快云大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

​

大模型部署框架 FastLLM 简要解析 FastLLM支持X86/Arm/CUDA 3种架构的硬件,也就是说它的算子分别考虑了这几个架构的优化。此外,FastLLM除了支持FP32/FP16/BF16之外还支持INT8/INT4量化计算。所以FastLLM的优化就是在不同的平台上为不同的Bit数的数据实现Kernel,并且使用硬件特有的指令集来进行加速比如AVX2,Neon Instrics。在CUDA实现上,FastLLM并没有采用kernel fuse的方式进行进一步加速,这里的优化空间还是比较大的。 阅读详情

相关推荐

Transformer模型中各个结构的理解

即将解码器的输入与编码器中编码好的每个单词的representation计算Attention score,然后计算Attention score与V的矩阵乘法,从而得到编码器中编码单词在解码器中待翻译单词中的表达。(而不像编码器中可以以并行的形式对句子中的所有单词进行Attention计算),即同Seq2Seq模型中解码器部分一样需要一个单词一个单词的进行输入,即我们只有在某一时刻预测出了某一单词后,才能继续预测后面的词。不妨假设我们的模型从训练集中学习一万个不同的英语单词(我们模型的“输出词表”)。

shaomjc的博客 790

大模型量化技术原理-ZeroQuant系列

本文讲述了微软提出ZeroQuant相关量化优化技术。ZeroQuant 针对权重和激活提出了一个细粒度硬件友好量化方案,对权重矩阵使用group-wise量化,对激活使用token-wise 量化。同时逐层知识蒸馏算法(LKD)算法缓解精度损失,原网络做老师,量化后的网络做学生。ZeroQuant-V2 引入了一种称为低秩补偿(LoRC)的优化技术,它与 PTQ 和 FGQ 协同工作,以最小的模型参数大小的增加来改善整个模型质量的恢复。

吃果冻不吐果冻皮 2697

大模型量化实战:LLM.int8()、SmoothQuant与ZeroQuant核心技术解析与选型指南

模型量化作为深度学习模型压缩与加速的核心技术,其核心原理是通过降低模型权重和激活值的数值精度(如从FP16降至INT8/INT4),在保持模型性能的同时,大幅减少内存占用和计算开销。这项技术通过精巧的缩放与舍入操作,平衡信息损失与计算效率,是实现大模型高效部署的关键。在工程实践中,量化技术能有效解决大模型部署中的显存瓶颈与推理延迟问题,广泛应用于边缘设备、移动端以及高并发云服务等场景。本文聚焦于大模型后训练量化(PTQ)领域,深入剖析了应对**离群值特征**和**激活值动态范围**等挑战的三大主流方案:LL

weixin_30432579的博客 492

一文了解 W8A8、W4A8、稀疏量化、FlashAttention-3、KV Cache 量化

一文了解 W8A8、W4A8、稀疏量化、FlashAttention-3、KV Cache 量化

叶庭云 成为自己的光 5999

Argoverse2数据集保姆级导入教程:从下载到预处理全流程解析

本文详细解析了Argoverse2数据集的完整导入流程,从环境配置、数据下载到预处理和高效加载策略。作为自动驾驶领域的标杆数据集,Argoverse2提供多模态传感器数据和高精地图信息,帮助研究者快速搭建数据处理流水线。文章包含实用代码示例和性能优化技巧,特别适合自动驾驶算法开发者参考。

weixin_29035405的博客 339

swupdate-签名验证

swupdate加密部分具体在中可以查看。

qq_28219531的博客 1149

大模型量化技术原理-LLM.int8()、GPTQ

本文简要介绍了两种比较常用的大模型量化方法 GPTQ、LLM.int8();LLM.int8() 属于 round-to-nearest (RTN) 量化:舍入到最近的定点数。而 GPT-Q 则是把量化问题视作优化问题,逐层寻找最优的量化权重。目前,这两种量化方法也集成到了Transformers库中,大家可以非常方便的使用。

吃果冻不吐果冻皮 7691

项目管理 Agent:进度追踪与风险预警 Harness

我们先从LangChain的Agent定义说起:Agent是一个能感知环境、自主决策、调用工具、执行动作、迭代反思的智能实体。而「项目管理全自主Agent」,就是把Agent的核心能力和项目管理的五大过程组(启动、规划、执行、监控、收尾)深度结合,聚焦执行监控阶段的两个核心痛点:进度偏差自动化计算、风险信号自动化识别与预警的专门化Agent。全感知(Omnisensing):能从。

AI架构师小马 519

大模型量化技术原理-ZeroQuant系列(一)

ZeroQuant系列研究大模型高效量化技术,包括权重和激活的细粒度量化方案、层次知识蒸馏算法(LKD)及优化后端系统。相比传统QAT方法,PTQ无需重新训练,实现更简单但精度可能下降。针对量化误差问题,提出分组量化和分token量化策略,并通过核融合技术降低计算开销。LKD方法突破传统KD限制,实现逐层量化优化,无需原始训练数据和完整教师模型,显著降低内存需求。该系列研究为大模型部署提供了高效的量化解决方案。

kexin197的博客 576

simulink的电动汽车制动系统热管理仿真

本文系统研究了电动汽车制动系统热管理仿真技术。通过建立机电液多物理场耦合模型,分析了不同工况下的动态热平衡特性。提出基于MPC的动态调节和NSGA-II多目标优化算法,使电池温度波动降低60%。创新性采用石墨烯相变材料与微通道液冷复合技术,冷却系统能耗减少40%。研究构建了完整的工程验证平台,涵盖200kW电制动测试台和高精度热成像系统。展望指出,未来将结合Transformer预测和强化学习算法,进一步优化热管理策略。该研究为电动汽车制动系统热管理提供了从理论建模到工程实施的完整解决方案。

xiaoheshang_123的博客 122

YOLOv8【第二章:卷积创新篇·第23节】一文搞懂,Transformer与卷积混合架构!

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》,该专栏持续复现网络上各种热门内容(全网YOLO改进最全最新的专栏,质量分97分+,全网顶流),改进内容支持(分类、检测、分割、追踪、关键点、OBB检测)。且专栏会随订阅人数上升而涨价(毕竟不断更新),当前性价比极高,有一定的参考&学习价值,部分内容会基于现有的国内外顶尖人工智能AIGC等AI大模型技术总结改进而来,嘎嘎硬核。    ✨ 特惠福利:目前活动一折秒杀价!一次订阅,永久免费,所有后续更新内容均免费阅读!

**My Coding Family** 1391

大模型量化技术原理-SmoothQuant

本文简要介绍了诞生的SmoothQuant背景和技术原理,作者提到激活值比权重更难量化,因为权重数据分布一般比较均匀,而激活异常值多且大让激活值量化变得更艰难,但是异常值只存在少数通道(Channel)内(单一 token 方差很大(异常值会存在于每一个 token 中),单一 channel 方差会小很多)。因此,SmoothQuant 诞生。SmoothQuant 通过平滑激活层和权重后,再使用per-tensor或per-token量化,实现W8A8。

吃果冻不吐果冻皮 4377

Android系统开发工程师面试指南与参考答案

本文整理了Android系统开发工程师面试常见问题与参考答案。核心内容涵盖:1)Framework层定制方法,如修改HAL和系统服务;2)ANR问题分析工具(systrace)与解决方案;3)性能优化实践,包括开机加速和功耗管理;4)四大组件工作机制与应用案例;5)Native崩溃调试技巧。文章强调通过AOSP源码研究、工具使用和项目案例准备来提升面试表现,重点考察应聘者的系统开发深度和实操能力。参考答案均基于实际开发经验,提供可量化的优化成果说明。

郑伟强dev的专栏 258

克服资源障碍:大模型量化技术与高效部署策略全解析

本文综述了大模型量化的方法、适用场景以及最新的研究进展,为读者解决部署使用大模型时遇到的计算资源不足的情景提供了一种视角

2401_82700030的博客 2807

[ 人力资源面试篇 ] HR 面试题分析详解大集合,看完直怼面试官(二)

那么在这个系列的文章中,我们聊到 HR 面谈什么?并且总结了五十个常见的人力资源面试题,在这里分享给大家。

qq_51577576的博客 1382

【教程4>第6章>第15节】 基于I+jQ复数信号的LS信道估计和均衡实现1——matlab仿真分析,QPSK为例

在基于QPSK调制的通信系统中,LS信道估计和均衡是用于补偿信道失真、提高信号传输质量的重要技术。以下将详细介绍基于I+jQ复数信号的 LS 信道估计和均衡的实现原理与过程。可以看到,通过线性插值之后,QPSK信号的星座图可以模糊的看到四个星座点(图2),通过非线性插值之后,可以清晰的看到QPSK的四个星座点(图3)。可以看到,信道均衡显著提高了通信系统的可靠性和有效性。

FPGA/MATLAB学习教程/源码/项目合作开发 657

Awesome-Quantization-Papers深度解析:Transformer模型量化技术全攻略

**Transformer模型量化**技术正在彻底改变AI部署的效率!作为深度学习模型压缩的关键技术,量化通过降低模型权重和激活值的精度来大幅减少存储需求和计算成本。Awesome-Quantization-Papers项目汇集了近年来AI顶会中最前沿的量化研究成果,为研究者和工程师提供了宝贵的资源库。本文将为您深入解析这个项目,并分享实用的量化技术指南。🚀 ## 什么是模型量化?简单易懂的入

gitblog_00642的博客 721

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

第17篇-模型量化技术-GPTQ-AWQ与GGUF

GGUF(GPT-Generated Unified Format)是 llama.cpp 项目推出的模型文件格式。它的特点是单文件即模型——文件内嵌了模型权重、tokenizer 配置、模型超参数等全部信息,拷贝一个文件即可部署。GGUF 格式的详细讨论见第 19 篇。这里聚焦于它的量化方案——k-quants 系列。

m0_68987304的博客 562

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

OrbitQuant:无需校准的扩散模型4位量化技术解析

模型量化作为深度学习模型压缩的核心技术,通过降低权重和激活值的数值精度来减少计算和存储开销。其基本原理是将高精度浮点数映射到低比特整数表示,在保持模型性能的同时大幅提升推理效率。OrbitQuant创新性地引入随机置换分块哈达玛变换,将动态变化的激活值投影到固定分布空间,实现了真正的数据无关量化。这种技术突破使得在FLUX.1、Z-Image-Turbo等主流扩散Transformer模型上,W4A4配置几乎无损运行,甚至在W2A4极低比特设置下仍能生成可辨认的图像和视频,为边缘设备部署和多模态应用提供了实

cmff98425的博客 514

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

大模型技术栈全景解析:从分词、分布式训练到 PEFT 与 RAG/Agent 的落地路径(以 Langchain-Chatchat 为例)

本篇技术指南围绕“大模型技术栈-算法与原理”这一知识框架展开,系统梳理从 Tokenizer、位置编码、注意力机制、分布式训练、PEFT 参数高效微调、模型压缩(剪枝/量化/蒸馏)、推理优化、Embedding 模型分类学、上下文扩展,到 Prompt Engineering 与 RAG/Agent 应用共九大主题。读完后,你将获得一张完整的 LLM 技术栈地图,并能结合 Langchain-Ch

gitblog_00084的博客 880

5000字!一文看懂大模型量化技术

大模型量化技术是一种通过减少模型参数的存储和计算精度来优化模型性能的技术。其核心原理是将模型中的浮点数参数(如32位浮点数)转换为低位宽的数值表示(如8位整数),从而在不显著降低模型精度的前提下,大幅减少模型的存储空间和计算资源消耗。降低存储需求:大模型通常包含数十亿甚至数千亿个参数,以浮点数形式存储会占用大量内存。量化技术可以将浮点数参数转换为低位宽的整数,显著减少模型存储空间。例如,将32位浮点数量化为8位整数,存储空间可减少4倍。加速计算:在硬件上,整数运算通常比浮点数运算更快。

xx_nm98的博客 2382

混合专家模型 (MoE) 简述

本文主要想梳理一下 MoE 模型相关的概念,并阅读整理部分开源 MoE 模型的论文,简要地描述整体架构等。

2301_81940605的博客 7230

深度学习中的MoE与Transformer:应用、发展历史及对比

Mixture of Experts (MoE) 是一种神经网络架构,它通过组合多个专家网络来处理输入数据。每个专家网络专注于特定的子任务,由一个门控机制(gating mechanism)根据输入数据动态选择最合适的专家。Transformer是一种基于自注意力机制(self-attention mechanism)的神经网络架构。它通过并行处理整个输入序列,解决了RNN在长序列处理中的缺陷,是当前自然语言处理领域的主流架构。

qq_28791753的博客 7750

大模型(LLM)的量化技术Quantization原理学习

在自然语言处理领域,大型语言模型(LLM)在自然语言处理领域的应用越来越广泛。然而,随着模型规模的增大,计算和存储资源的需求也急剧增加。为了降低计算和存储开销,同时保持模型的性能,LLM大模型的量化技术应运而生 本文记录针对量化技术原理的学习

penriver的博客 2万+

ZeroQuant-V2 LLM权重与激活量化

ZeroQuant-V2 LLM权重与激活量化

LuchangLi 的专栏 2079

大模型量化技术

量化相关技术

liushenggui123的博客 2197
上一篇: 大模型RAG:LLM性能的提升,RAG与Fine-Tune我们该如何选择?
下一篇: 【LLM大模型】Ollama 本地CPU部署开源大模型
Llama-Turbo
博客等级 码龄4年 9901粉丝 2024原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值