首页
学习
活动
专区
圈层
工具
发布
技术百科首页 >大模型量化 >大模型量化中的异常值(Outlier)问题如何处理?

大模型量化中的异常值(Outlier)问题如何处理?

词条归属:大模型量化

1. 异常值的成因与影响

在参数量超过67亿的大模型中,Transformer每层的激活输出会稳定地出现少量(约0.1%)绝对值巨大的特征维度,这些异常值的幅度可达普通值的100倍以上。它们对模型性能至关重要,但会拉伸量化范围导致大量正常值被压缩到无效区间,直接量化会造成严重的精度崩塌。这一现象在LLaMA、OPT、BLOOM等各类架构中普遍存在。

2. LLM.int8()的混合精度分解

LLM.int8()由Tim Dettmers等人于NeurIPS 2022提出,核心思路是将矩阵乘法分解为两部分:从输入激活中分离出包含异常值的列(约占1-2%),这部分保持FP16精度计算;剩余98%-99%的正常值用INT8量化计算;最后将两部分结果相加。该方法几乎无损地保持了模型精度,但由于需要动态识别异常值并进行分解,推理速度可能不会比FP16更快,主要收益在于减少激活值的内存占用。

3. SmoothQuant的难度迁移策略

SmoothQuant(MIT韩松实验室,ICML 2023)提出了更优雅的解决方案:既然权重易于量化(分布均匀)而激活难以量化(存在离群点),就通过数学等价变换将激活的量化难度迁移到权重端。具体做法是引入按通道的平滑因子s,将原始矩阵乘Y = X·W变换为Y = (X·diag(s)^(-1)) · (diag(s)·W),其中α控制迁移强度(通常0.5-0.75)。变换后激活的异常值被大幅平滑,权重仍保持较均匀的分布,从而实现W8A8全INT8量化,在OPT-66B上精度损失仅0.6%,推理加速1.56倍。

4. AWQ的激活感知保护

AWQ(Activation-aware Weight Quantization,MLSys 2024最佳论文)从另一个角度解决异常值问题:不是所有权重都同等重要。AWQ根据激活值的大小识别出约1%的"关键权重",对它们乘以缩放因子进行特殊保护后再量化,其余99%的权重正常量化。这种方法无需重新训练,产生的量化格式对硬件友好,在边缘GPU上可实现3倍以上加速。与SmoothQuant将难度迁移到权重不同,AWQ直接在量化过程中保护重要信息,两者思路互补。

相关文章
应对AI模型中的“Outlier Detection Failure”错误:数据清洗与预处理
在机器学习和深度学习的实际应用中,数据质量决定了模型的性能。而其中,异常值检测(Outlier Detection)更是数据预处理中至关重要的一环。然而,我们常常在模型训练过程中遭遇到“Outlier Detection Failure”错误,这究竟是什么原因呢?🤔本文将深入剖析这一错误,并提供数据清洗与预处理的实用技巧,助你高效解决问题,提升模型表现。
默 语
2024-11-22
6160
Python如何处理excel中的空值和异常值
对于普通人来说,觉得编程和自己日常的工作风马牛不相及。其实我还是建议学一下python,因为很多人的工作都是离不开与word和excel这些软件打交道。有时很多文档的处理都是重复性的规律性工作,而使用编程来完成这些工作最适合不过。
叫我阿柒啊
2024-10-15
6.4K0
大模型知识库中的文档预处理的优化问题
以前做nlp对长文本切分也略有些经验,通常就是先按段落进行切分,对于过长的段落文本,通常就是按模型(这里通常是embedding模型)能接受的输入长度,按句子的标点符号(如句号,感叹号,问号等)进行切分,切分后的片段要尽可能的长,但是不能超过模型的输入限制。另外,一些可以操作的技巧是,段落内的片段可以做一些重复,例如,段落内的多个片段,前一个片段的最后一句可以和后一个片段的第一句重复。
明月AI
2023-09-30
2.4K0
深入探索:使用Scikit-learn进行新颖性与异常值检测技术
在数据分析和机器学习中,区分数据中的正常观察值和异常观察值是一项重要任务。这种区分通常用于数据清洗和异常检测,以提高模型的准确性和鲁棒性。
用户3578099
2024-08-27
9780
如何解决大语言模型的幻觉问题
在人类生活中,幻觉表示虚假的但是我们分辨不清楚的事物,在大语言模型中,[幻觉]即代表模型生成的虚假的文本,这中情况很容易导致一些错误的发生
Nowl
2024-01-18
1.1K0
点击加载更多
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
领券