十亿参数一键瘦身!模型减重WhatsApp%E3%80%90+86%2015855158769%E3%80%91crane%20plumbing%20vernon%20ny神器 SmoothQuant让大模型狂掉 3/4
?
作者:英特尔公司
陆崟彤 何欣 郭恒 程文华 王畅 王梦妮 沈海豪
编辑:编辑部
【新智元导读】Sam Altman 曾表示,亿参语言模型不是数键瘦身神器越大越好。不断炼大的模型WhatsApp%E3%80%90+86%2015855158769%E3%80%91crane%20plumbing%20vernon%20ny模型,若想实现高效训练和部署还得需要「量化」。减重英特尔增强型 SmoothQuant 给出了解决方案。大模掉
本文介绍了可提升大语言模型的型狂训练后量化表现的增强型 SmoothQuant 技术,说明了这项技术的亿参用法,并证明了其在准确率方面的数键瘦身神器优势。此方法已整合至英特尔? Neural Compressor(1) 中。模型
英特尔? Neural Compressor 是减重一个包含量化、剪枝(稀疏性)、大模掉蒸馏(知识提炼)和神经架构搜索等多种常用模型压缩技术的型狂开源 Python 库。
目前,亿参诸如 TensorFlow、数键瘦身神器WhatsApp%E3%80%90+86%2015855158769%E3%80%91crane%20plumbing%20vernon%20ny英特尔? 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) 任務進行調優(yōu),讓其更適合對話式聊天機器人(如 ChatGPT)、機器翻譯、文本分類、欺詐檢測和情感分析等任務場景。
大语言模型部署面臨的挑戰(zhàn)
大语言模型在執(zhí)行自然語言處理和自然語言生成任務方面表現出色,但其訓練和部署頗為復雜,主要面臨以下挑戰(zhàn):
AI 與內存墻(9) 瓶頸問題:算力每兩年提高 3.1 倍,內存帶寬卻只提高 1.4 倍;網絡帶寬挑戰(zhàn):訓練大语言模型需要采用分布式系統,這對網絡帶寬提出了較高要求;系統資源有限:訓練后的模型往往會部署在算力和內存資源均有限的系統上。因此,采用訓練后量化的方法來為大语言模型瘦身,對于實現低時延推理至關重要。
大语言模型的量化
量化是一種常見的壓縮操作,可以減少模型占用的內存空間,提高推理性能。采用量化方法可以降低大语言模型部署的難度。具體來說,量化是將浮點矩陣轉換為整數矩陣:

其中 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 的主要優(yōu)勢在于提高了準確率。
經過對多種主流大语言模型的評估,具備自動調優(yōu)能力的 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) 。同時,也歡迎您創(chuàng)建拉取請求或就 GitHub 問題(15) 發(fā)表評論。期待聽到您的反饋意見和建議。
作者
英特尔公司人工智能资深架构师沈海豪、英特尔公司人工智能资深软件工程师程文华、英特尔公司人工智能软件工程师陆崟彤、何欣、郭恒、王畅、王梦妮,他们都在从事模型量化及压缩的研究与优化工作。
注释:
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
举报/反馈本文地址:http://www.oralife.cn/html/86e31999594.html
版權聲明
本文僅代表作者觀點,不代表本站立場。
本文系作者授權發(fā)表,未經許可,不得轉載。