十亿参数,一键瘦身!「模型减重」神器增强型 SmoothQuant,让大模型狂掉 3/4
2023-07-01 09:35:59 来源:站长之家
声明:本文来自于微信公众号 新智元(ID:AI_era),作者:英特尔公司 陆崟彤 何欣 郭恒 程文华 王畅 王梦妮 沈海豪,授权站长之家转载发布。
【资料图】
【新智元导读】Sam Altman 曾表示,语言模型不是越大越好。不断炼大的模型,若想实现高效训练和部署还得需要「量化」。英特尔增强型 SmoothQuant 给出了解决方案。
本文介绍了可提升大语言模型的训练后量化表现的增强型 SmoothQuant 技术,说明了这项技术的用法,并证明了其在准确率方面的优势。此方法已整合至英特尔®Neural Compressor(1)中。
英特尔®Neural Compressor 是一个包含量化、剪枝(稀疏性)、蒸馏(知识提炼)和神经架构搜索等多种常用模型压缩技术的开源 Python 库。
目前,诸如 TensorFlow、英特尔®Extension for TensorFlow(2)、PyTorch、英特尔®Extension for PyTorch(3)、ONNX Runtime 和 MXNet等主流框架,都能与之兼容。
英特尔®Neural Compressor 已经支持多款英特尔®架构的硬件,比如英特尔®至强®可扩展处理器(4)、英特尔®至强®CPU Max 系列(5)、英特尔®数据中心 GPU Flex 系列(6)和英特尔®数据中心 GPU Max 系列(7)。
本文涉及的实验基于第四代英特尔®至强®可扩展处理器(8)进行。
大语言模型
大语言模型 (Large Language Model, LLM) 需基于海量数据集进行训练,可能拥有数十亿权重参数。
其先进的网络结构和庞大的参数量,使它们能够很好地应对自然语言本身的复杂性。
完成训练后的大语言模型,可针对各种下游的自然语言处理 (NLP) 和自然语言生成 (NLG) 任务进行调优,让其更适合对话式聊天机器人(如 ChatGPT)、机器翻译、文本分类、欺诈检测和情感分析等任务场景。
大语言模型部署面临的挑战
大语言模型在执行自然语言处理和自然语言生成任务方面表现出色,但其训练和部署颇为复杂,主要面临以下挑战:
AI 与内存墙(9)瓶颈问题:算力每两年提高3.1倍,内存带宽却只提高1.4倍;
网络带宽挑战:训练大语言模型需要采用分布式系统,这对网络带宽提出了较高要求;
系统资源有限:训练后的模型往往会部署在算力和内存资源均有限的系统上。
因此,采用训练后量化的方法来为大语言模型瘦身,对于实现低时延推理至关重要。
大语言模型的量化
量化是一种常见的压缩操作,可以减少模型占用的内存空间,提高推理性能。采用量化方法可以降低大语言模型部署的难度。具体来说,量化是将浮点矩阵转换为整数矩阵:
其中 X_fp32、S 和 Z 分别为输入矩阵、比例因子和整数零点。
有关每通道 (per-channel) 量化策略虽然可能会减少量化损失,但不能用于激活值量化的原因,请参看SmoothQuant 相关文档(10)。
不过,激活值量化误差损失却是导致模型量化准确率下降的重要因素。为此,人们提出了很多方法来降低激活值量化损失,例如:SPIQ(11)、Outlier Suppression(12)和SmoothQuant(13)。
这三种方法思路相似,即把激活值量化的难度转移到权重量化上,只是三者在转移难度的多少上有所不同。
增强型 SmoothQuant
SmoothQuant 引入了一个超参数 α 作为平滑因子来计算每个通道的量化比例因子,并平衡激活值和权重的量化难度。
其中 j 是输入通道索引。
对于期权定价模型 (OPT) 和 BLOOM 等大多数模型来说,α=0.5是一个能够较好实现权重和激活值量化难度分割的平衡值。
模型的激活异常值越大,就越需要使用更大的 α 值来将更多的量化难度转移到权重上。
原始的 SmoothQuant 旨在通过针对整个模型使用一个固定值 α 来分割权重和激活值的量化难度。
然而,由于激活异常值的分布不仅在不同模型之间存在差异,而且在同一模型的不同层之间也不尽相同,因此,本文推荐使用英特尔®Neural Compressor 的自动调优能力,逐层获取最佳 α 值。
相关方法包括以下五个主要步骤(伪代码如下所示):
通过特殊的回调函数 register_forward_hook 捕获 (hook) 模型各层的输入和输出值。
根据用户定义的 α 范围和步长生成一个 α 值列表。
根据给定的 α 值重新计算平滑因子并调整参数(权重值和激活值)。
对权重执行每通道量化与反量化 (quantization_dequantization),对输入值执行每张量 (per-tensor) 量化与反量化,以预测与给定 α 值对应的每层输出值。
计算相对实际输出值的均方损失,将调整后的参数恢复回来,并保存每层的最佳 α 值。
本文提出的方法支持用多个标准(如最小值、最大值和平均值)来确定 Transformer 块的输入层归一化 (LayerNorm) 操作的 α 值。
实验发现,将 α 范围设为 [0.3,0.7],步长设为0.05,对大多数模型来说都能达到很好的平衡。
这一方法有两个显著特点:一是全自动化,二是比原始方法支持的融合模式多。
下图提供了在 BLOOM-1b7模型上执行 SmoothQuant α 值自动调优的样例代码:
启用增强型 SmoothQuant 的样例代码
用户只需传递一个模型名称 (model_name) 和一个数据加载器。
值得注意的是,模型分析主要依靠的是 Torch JIT。用户可以在加载Hugging Face 模型(14)时将 torchscript 设置为 True,或将 return_dict 设置为 False。更多信息请参阅英特尔®Neural Compressor 文档(10)。
结果
本文提出的增强型 SmoothQuant 的主要优势在于提高了准确率。
经过对多种主流大语言模型的评估,具备自动调优能力的 INT8SmoothQuant 最后一个词元 (last-token) 的预测准确率要高于原始 INT8SmoothQuant 和 FP32基线方法。详见下图:
FP32基线方法、INT8(启用和不启用 SmoothQuant)以及 INT8(启用本文提出的增强型 SmoothQuant)的准确率对比
从上图可以看出,在 OPT-1.3b 和 BLOOM-1b7模型上,本文提出的增强型 SmoothQuant 的准确率比默认的 SmoothQuant 分别高5.4% 和1.6%。
量化后的模型也缩小到 FP32模型的四分之一,大大减少了内存占用空间,从而有效地提升大模型在英特尔®平台上的推理性能。
更全面的结果请见GitHub 存储库(10)。同时,也欢迎您创建拉取请求或就GitHub 问题(15)发表评论。期待听到您的反馈意见和建议。
作者
英特尔公司人工智能资深架构师沈海豪、英特尔公司人工智能资深软件工程师程文华、英特尔公司人工智能软件工程师陆崟彤、何欣、郭恒、王畅、王梦妮,他们都在从事模型量化及压缩的研究与优化工作。
注释:
1.英特尔®Neural Compressor
https://www.intel.cn/content/www/cn/zh/developer/tools/oneapi/neural-compressor.html
2.英特尔®Extension for TensorFlow
https://www.intel.cn/content/www/cn/zh/developer/tools/oneapi/optimization-for-tensorflow.html
3.英特尔®Extension for PyTorch
https://www.intel.cn/content/www/cn/zh/developer/tools/oneapi/optimization-for-pytorch.html
4.英特尔®至强®可扩展处理器
https://www.intel.cn/content/www/cn/zh/products/details/processors/xeon/scalable.html
5.英特尔®至强®CPU Max 系列
https://www.intel.cn/content/www/cn/zh/products/details/processors/xeon/max-series.html
6.英特尔®数据中心 GPU Flex 系列
https://www.intel.cn/content/www/cn/zh/products/details/discrete-gpus/data-center-gpu/flex-series.html
7.英特尔®数据中心 GPU Max 系列
https://www.intel.com/content/www/us/en/products/details/discrete-gpus/data-center-gpu/max-series.html
8. 第四代英特尔®至强®可扩展处理器
https://www.intel.cn/content/www/cn/zh/events/accelerate-with-xeon.html
9. AI 与内存墙
https://medium.com/riselab/ai-and-memory-wall-2cb4265cb0b8
10. SmoothQuant 相关文档 /英特尔®Neural Compressor 文档 / GitHub 存储库
https://github.com/intel/neural-compressor/blob/master/docs/source/smooth_quant.md
11. SPIQ
https://arxiv.org/abs/2203.14642
12. Outlier Suppression
https://arxiv.org/abs/2209.13325
13. SmoothQuant
https://arxiv.org/abs/2211.10438
14. Hugging Face 模型
https://huggingface.co/models
15. GitHub 问题
https://github.com/intel/neural-compressor/issues
(举报)
关键词:
[责任编辑:xwzkw]
相关阅读
- (2023-07-01)十亿参数,一键瘦身!「模型减重」神器增强型 SmoothQuant,让大模型狂掉 3/4
- (2023-07-01)中资美元债早报(6.30) | 二级市场投资级名字下跌,高收益名字涨跌互现 环球微动态
- (2023-07-01)世界讯息:今夏用电负荷持续攀升 能源央企“花式”保供备战迎峰度夏
- (2023-07-01)联创股份:连续6日融资净偿还累计1435.81万元(06-29)
- (2023-07-01)庙号是谁起的_庙号是什么简介介绍 全球报道
- (2023-07-01)国企改革勇争先 | 近500亿国资“三合一”强力组建重庆物流集团,“勇强组合”开启物流新时代
- (2023-07-01)遇夜查下车当即和副驾换座位 襄阳一“酒司机”变戏精被严查
- (2023-07-01)海报丨来兰州新区寻一份"薪"动 上万岗位"职"得奔赴
- (2023-07-01)减肥的时候不吃肉行吗?对身体真的没有影响吗?
- (2023-07-01)世界观速讯丨业界热议海上风电发展:多方协同共促产业健康可持续发展
- (2023-07-01)每日关注!武庚纪:六部大神实力排名,十刑后期超强而且走上诛神之路
- (2023-07-01)为什么可以穿Lolita去漫展,却不能穿C服去茶会?
- (2023-07-01)入林为长 执笔绘绿
- (2023-07-01)全球观速讯丨加快构建新型能源体系 支撑保障国家能源安全
- (2023-07-01)尿素相关企业排名前十名_2023第一季度净利率10大排行榜
- (2023-07-01)父亲低头玩手机 2岁男童坠楼身亡 家属索赔145万 监控细节披露
- (2023-07-01)美丽田园医疗健康(02373.HK)6月29日耗资29.23万港元回购1.25万股
- (2023-07-01)美民调显示过半美国人认为生活成本太高:所有东西都很贵 环球看热讯
- (2023-07-01)为年内开通运营按下“加速键” 津兴铁路实现正线贯通
- (2023-07-01)中国经济回升向好态势明显
- (2023-07-01)“星链”武器化,日本入局,为对抗中俄?中方早有12992颗反制
- (2023-07-01)鲁迅不为人知的一面,发妻独守空房41年,留下一句话成著名怨言 每日热门
- (2023-07-01)环球聚焦:短视频平台大战美团,抖音、快手谁更胜一筹?
- (2023-07-01)预计年底通车!这条地铁线完成冷滑试验!
- (2023-07-01)热点聚焦:鹰潭:加强传销违法犯罪活动的高压严打力度
- (2023-07-01)当前时讯:6月29日基金净值:招商行业精选股票基金最新净值3.158,跌0.79%
- (2023-07-01)天天热讯:2023“必吃榜”发布,你去过哪些?
- (2023-07-01)世界今头条!北交所与港交所签署合作谅解备忘录 推出京港两地上市安排
- (2023-07-01)中国—非洲贸易指数首次对外发布
- (2023-07-01)记者观察:中小银行加速不良资产处置 环球报道