HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

如何在英特尔® 平台上实现高效的大语言模型训练后量化

英特尔公司 陆崟彤、何欣、郭恒、程文华、王畅、王梦妮、沈海豪

  • 2023-07-03
    北京
  • 本文字数:3005 字

    阅读完需:约 10 分钟

如何在英特尔® 平台上实现高效的大语言模型训练后量化

本文介绍了可提升大语言模型的训练后量化表现的增强型 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模型(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

2023-07-03 11:362216

评论

发布
暂无评论
发现更多内容

HarmonyOS开发案例分享:万能卡片也能用来玩游戏

HarmonyOS开发者

HarmonyOS

MySQL数据库中SQL语句分几类?

小齐写代码

​iOS Class Guard github用法、工作原理和安装详解及使用经验总结

高效会议指南:九种让你的会议更有价值的方法

爱吃小舅的鱼

团队 会议

RazorSQL for Mac(多功能SQL数据库管理器)支持M1/M2 v10.5.0注册激活版

Rose

数据库 RazorSQL下载 RazorSQL注册码

畅捷通的 Serverless 探索实践之路

Serverless Devs

云计算 Serverless AIGC

AnyGo for Mac(在iPhone / iPad上轻松模拟GPS位置)v6.9.0激活版

Rose

AnyGo中文版 AnyGo for Mac Mac虚拟机定位 GPS位置 AnyGo破解版

KeyShot2023pro安装包 附KeyShot注册机 适用于Mac/win

Rose

KeyShot2023pro安装包 KeyShot 注册机 3D渲染和动画软件

三分钟搞懂Serverless,互联网个人创业者必备

凌览

node.js Serverless 独立开发者

微软远程管理Microsoft Remote Desktop怎么样?好用吗?

Rose

Mac远程控制软件 microsoft remote desktop mac破解软件下载 微软远程管理

用友电子凭证综合服务平台2.0重磅发布!

用友BIP

电子凭证

记一次线上视频接口OOM问题

xfgg

Java

Mac电脑强大的fcpx视频剪辑:Final Cut Pro 中文最新

胖墩儿不胖y

视频处理工具 编辑视频 视频编辑器 视频管理

KeyShot 2023.3 Pro for mac(3D渲染和动画制作软件) v12.2.2激活版

mac

苹果mac Windows软件 KeyShot Pro 高级渲染和动画软件

初识 OpenCV

数新网络官方账号

OpenCV 计算机视觉

强大专业的设计排版工具Affinity Publisher 免激活最新

mac大玩家j

Mac软件 排版软件 排版工具

关于组态图和组态图设计

2D3D前端可视化开发

组态软件 组态 组态图库 组态界面 组态工具

一起学Elasticsearch系列-脚本查询

Java随想录

Java 大数据 Elastic Search

哈工大副校长刘挺访问度小满 推进人工智能等方面技术合作

科技热闻

代购系统独立站的未来发展前景

Noah

每日一题:LeetCode-41. 缺失的第一个正数

Geek_4z9ami

面试 算法 数组 LeetCode 哈希表

去哪儿“技术债”偿还实践:如何高效、低风险砍掉50%无用代码?

TakinTalks稳定性社区

KaiwuDB 通过中国信通院“可信数据库”性能与稳定性评测

KaiwuDB

KaiwuDB 可信数据库

苹果Macos好玩的经典游戏推荐!

Rose

mac游戏 苹果mac游戏 Mac游戏推荐

如何在 Mac 上创造一个纯 Windows 环境

Rose

Parallels Desktop

聊点技术|数据爆炸性增长,Bonree ONE存储如何做到稳如泰山

博睿数据

高精度时序分析工具PP-TSv2!一站式解决电力负荷预测、设备异常检测等多场景任务

飞桨PaddlePaddle

人工智能 开发者 开发工具 技术干货 时序分析工具

企业服务大模型扎根生产一线,用友BIP为中国智造“再续新篇”!

用友BIP

企业大模型

Wireshark中的ARP协议包分析

小魏写代码

石磊:以人为本,精细运营 ,企业招聘管理的下半场

用友BIP

智能招聘

如何在英特尔® 平台上实现高效的大语言模型训练后量化_AI&大模型_InfoQ精选文章