【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

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

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

  • 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

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2023-07-03 11:361990

评论

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

如临现场的视觉感染力,NBA决赛直播还能这样看?

阿里云视频云

音视频 直播 音视频直播 直播解决方案

百度APP 基于Pipeline as Code的持续集成实践

百度Geek说

Java’

物联网低代码平台常用《组件介绍》

AIRIOT

低代码 物联网 低代码开发平台 低代码平台 低代码,项目开发

百问百答第44期:应用性能探针监测原理-Python探针

博睿数据

APM AIOPS 智能运维 博睿数据 性能监测

中国内地仅四家突围 联想智慧颐和园荣获 “2022年IDC亚太区智慧城市大奖”

科技大数据

智联招聘基于 Nebula Graph 的推荐实践分享

NebulaGraph

知识图谱 Nebula Graph

Java培训 动态代理的底层原理

@零度

JAVA开发 动态代理

太阳能无线LED显示屏的特点

Dylan

LED LED显示屏

Flink流处理API大合集:掌握所有flink流处理技术,看这一篇就够了

百思不得小赵

大数据 6月月更 flink api

大神详解开源 BUFF 增益攻略丨直播讲座

Apache IoTDB

开源 面试 求职 秋招 线上讲座

《运营之光3.0》全新上市——跨越时代,自我颠覆的诚意之作!

博文视点Broadview

人人都可以参与开源!龙蜥社区最不容错过的开发者活动来了

OpenAnolis小助手

开源 龙蜥社区 礼品 开发者激励 贡献

等保备案主体是谁?在当地网安进行备案是吗?

行云管家

等保 等级保护 等保备案

2022 开源软件安全状况报告:超41%的企业对开源安全没有足够的信心

SEAL安全

DevSecOps 开源安全 软件供应链 安全左移

小白创业做电商,选对商城系统很重要!

CRMEB

当量子计算遇上人工智能

启科量子开发者官方号

人工智能 算力 量子计算

wallys/DR7915-wifi6-MT7915-MT7975-2T2R-support-OpenWRT-802.11AX-supporting-MiniPCIe-Module

wallys-wifi6

web前端培训Node.js 如何连接到 PostgreSQL 数据库

@零度

node.js 前端开发

setInterval、setTimeout和requestAnimationFrame

源字节1号

软件开发

易观分析《2022年中国银行业隐私计算平台供应商实力矩阵分析》研究报告正式启动

易观分析

银行技术

VPS是干嘛用的?有哪些知名牌子?与云服务器有什么区别?

行云管家

运维 等保备案 VPS

3. Caller 服务调用 - dapr

MASA技术团队

C# .net 框架 Framework dapr

TiDB v6.0.0 (DMR) :缓存表初试丨TiDB Book Rush

PingCAP

TiDB

通过大数据培训学习后到35岁后为什么会失业

@零度

layui-vue简单体验

Python研究所

6月月更

LSF 集群全面监控!浅析 HPC 基于龙蜥操作系统的迁移替代解决方案

OpenAnolis小助手

开源 解决方案 龙蜥操作系统 常青藤开源科技 HPCinsights

2022中国信通院首届业务与应用安全发展论坛成功召开!

中国IDC圈

一套十万级TPS的IM综合消息系统的架构实践与思考

JackJiang

网络编程 架构设计 即时通讯 im开发

《数字经济全景白皮书》消费金融数字化篇 重磅发布

易观分析

消费金融

叮!Techo Day 腾讯技术开放日如约而至!

CODING DevOps

CODING DevOps Cloud Studio Techo 腾讯技术开放日

讲师征集令 | Apache DolphinScheduler Meetup分享嘉宾,期待你的议题和声音!

Apache DolphinScheduler

Apache 大数据 开源 workflow dolpinsheduler

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