作者:英特尔公司
陆崟彤 何欣 郭恒 程文华 王畅 王梦妮 沈海豪
归纳:归纳部
本文介绍了可提高大语言模型的蓝莓外汇开户训练后量化表现的增强型 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) 、机器翻译、文本分类 、欺诈检查和情感解读等使命场景。
大语言模型安排面临的AVA外汇代理挑战
大语言模型在落实自然语言应对和自然语言生成使命方面表现出色,但其训练和安排颇为复杂 ,主要面临以下挑战:
因此 ,采用训练后量化的方法来为大语言模型瘦身 ,对于实现低时延推理至关关键。
大语言模型的量化
量化是一种常见的压缩流程 ,可以下降模型占用的内存空间,提高推理性能。采用量化方法可以降低大语言模型安排的难度。具体来说,量化是将浮点矩阵转换为整数矩阵 :
其中 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 的自动调优水平 ,逐层获取最佳 α 值。
有关方法包括以下五个主要步骤(伪代码如下所示):
本文倡导的方法拥护用多个标准(如最小值、最大值和平均值)来确定 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 的主要优势在于提高了精确率。
经过对多种主流大语言模型的评估 ,具备自动调优水平的 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 存储库(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
留言/评论:◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。