Redian新闻
>
十亿参数,一键瘦身!「模型减重」神器让大模型狂掉3/4 | 最“in”大模型

十亿参数,一键瘦身!「模型减重」神器让大模型狂掉3/4 | 最“in”大模型

公众号新闻
编者按:

“瘦身”后的大模型,表现依然可以很惊艳。

本文介绍了可提升大语言模型的训练后量化表现的增强型 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 的自动调优能力,逐层获取最佳 α 值。

相关方法包括以下五个主要步骤(伪代码如下所示):

  1. 通过特殊的回调函数 register_forward_hook 捕获 (hook) 模型各层的输入和输出值。

  2. 根据用户定义的 α 范围和步长生成一个 α 值列表。

  3. 根据给定的 α 值重新计算平滑因子并调整参数(权重值和激活值)。

  4. 对权重执行每通道量化与反量化 (quantization_dequantization),对输入值执行每张量 (per-tensor) 量化与反量化,以预测与给定 α 值对应的每层输出值。

  5. 计算相对实际输出值的均方损失,将调整后的参数恢复回来,并保存每层的最佳 α 值。

本文提出的方法支持用多个标准(如最小值、最大值和平均值)来确定 Transformer 块的输入层归一化 (LayerNorm) 操作的 α 值。

实验发现,将 α 范围设为 [0.3, 0.7],步长设为 0.05,对大多数模型来说都能达到很好的平衡。

这一方法有两个显著特点:一是全自动化,二是比原始方法支持的融合模式多。

下图提供了在 BLOOM-1b7 模型上执行 SmoothQuant α 值自动调优的样例代码:

启用增强型 SmoothQuant 的样例代码

用户只需传递一个模型名称 (model_name) 和一个数据加载器。值得注意的是,模型分析主要依靠的是 Torch JIT。用户可以在加载 Hugging Face[15]模型时将 torchscript 设置为 True,或将 return_dict 设置为 False。

更多信息请参阅英特尔® Neural Compressor 文档[15]。

结果

本文提出的增强型 SmoothQuant 的主要优势在于提高了准确率。

经过对多种主流大语言模型的评估,具备自动调优能力的 INT8 SmoothQuant 最后一个词元 (last-token) 的预测准确率要高于原始 INT8 SmoothQuant 和 FP32 基线方法。详见下图:

FP32 基线方法、INT8(启用和不启用 SmoothQuant)以及 INT8(启用本文提出的增强型 SmoothQuant)的准确率对比

从上图可以看出,在 OPT-1.3b 和 BLOOM-1b7 模型上,本文提出的增强型 SmoothQuant 的准确率比默认的 SmoothQuant 分别高 5.4% 和 1.6%。

量化后的模型也缩小到 FP32 模型的四分之一,大大减少了内存占用空间,从而有效地提升大模型在英特尔® 平台上的推理性能。

更全面的结果请见 GitHub 存储库[16]。同时,也欢迎您创建拉取请求或就 GitHub 问题[17]发表评论。期待听到您的反馈意见和建议。

了解更多内容,请点击文末【阅读原文】。

作者:

英特尔公司人工智能资深架构师沈海豪、英特尔公司人工智能资深软件工程师程文华、英特尔公司人工智能软件工程师陆崟彤、何欣、郭恒、王畅、王梦妮,他们都在从事模型量化及压缩的研究与优化工作。

参考链接:


[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.cn/content/www/cn/zh/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 相关文档:

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]英特尔® Neural Compressor 文档:

https://github.com/intel/neural-compressor/blob/master/docs/source/smooth_quant.md

[16]GitHub 存储库:

https://github.com/intel/neural-compressor/blob/master/docs/source/smooth_quant.md

[17]GitHub 问题:

https://github.com/intel/neural-compressor/issues



*本文系量子位获授权刊载,观点仅为作者所有。


—  —

量子位 QbitAI

վ'ᴗ' ի 追踪AI技术和产品新动态

一键三连「分享」、「点赞」和「在看」

科技前沿进展日日相见 ~ 

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
「模仿学习」只会套话?解释微调+130亿参数Orca:推理能力打平ChatGPT小米AI大模型MiLM-6B:64亿参数,C-Eval总榜排名第10推理1760亿参数的BLOOMZ,性能时延仅3.7秒 | 最“in”大模型我们为最“in”大模型,找到了另外一条解题思路十亿参数,一键瘦身!「模型减重」神器增强型 SmoothQuant,让大模型狂掉 3/4650亿参数,训练飙升38%!LLaMA基础大模型复刻最佳实践开源,GitHub已获30k星1800亿参数,世界顶级开源大模型Falcon官宣!碾压LLaMA 2,性能直逼GPT-4沈向洋周明杨格大模型激辩:继续爆堆参数,大模型能出现新的「智能涌现」吗?傻瓜生图器炸场, 火柴人秒变福尔摩斯!Stability AI最新绘图神器让涂鸦秒变大片大模型狂飙半年,“群模乱舞”谁能胜出GPT-4版微软Win11下周二见;千亿参数生物医药大模型面世;DALL·E 3模型将接入Bing丨AIGC大事日报1300亿参数,国内首个数学大模型MathGPT上线!多项基准赶超GPT-4十亿参数,一键瘦身!「模型减重」神器让大模型狂掉 3/4写在星期一如何优化ChatGLM-6B?一行代码就行 | 最“in”大模型GPT-4参数最新爆料!1.76万亿参数,8个2200亿MoE模型,PyTorch创始人深信不疑650亿参数,8块GPU就能全参数微调!邱锡鹏团队把大模型门槛打下来了!一个简单模型就让ChatGLM性能大幅提升 | 最“in”大模型夏日大模型狂飙半年,掏出真金白银的投资人是少数|甲子光年​1800亿参数,性能碾压Llama 2,世界最强开源大模型Falcon 180B发布夏日病毒羔羊第五章—— 上學了坚持做行业大模型,竹间智能给大模型造了一座「模型工厂」疯狂掉粉百万!李佳琦在直播间哭着致歉:让大家失望了将蛋白质语言模型扩展到千亿参数,深度解读百图生科、清华xTrimoPGLM模型650亿参数,8块GPU就能全参数微调:邱锡鹏团队把大模型门槛打下来了爱奇艺VR公司业务停滞,员工或被欠薪;阿里云开源通义千问 70 亿参数模型,免费可商用;华为正式发布鸿蒙 4,接入大模型|Q资讯从害怕下水到游出几米,这5个神器让女儿爱上游泳!仅售1.75澳元!Kmart制作中餐神器让华人主妇沸腾了!获网友一致好评!复旦新作:单机微调650亿参数大模型;蚂蚁、百度参投AI大模型创企;杭州检方对AI换脸案提起公诉丨AIGC大事日报保护大模型应用安全,现在不需要拿性能做代价了 | 最“in”大模型传滴滴造车VP创业大模型;澜舟科技推出400亿参数通用大模型;商汤AIGC相关收入增长670.4%百川开源最强中英文百亿参数模型!超越LLaMA,中国开源大模型开启商用新纪元2023回国 人挤人的古镇的小吃(图)
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。