Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

Geek AI编辑

大模型高效释放生产性能,Hugging Face开源Transformer扩展优化新库

在将大模型应用于工业生产这条路上,Hugging Face 又走在了前列。

特斯拉、谷歌、微软、Facebook 等科技巨头有很多共同点,其中之一是:它们每天都会运行数十亿次 Transformer 模型预测。比如,Transformer 在特斯拉 AutoPilot 自动驾驶系统中驱动汽车、在 Gmail 中补全句子、在 Facebook 上及时翻译用户的帖子以及在 Bing 中回答用户的自然语言查询


Transformer 在机器学习模型的准确率方面带来了巨大提升,风靡 NLP 领域,并正在扩展到其它模态上(例如,语音和视觉)。然而,对于任何一个机器学习工程团队来说,将这些大模型应用于工业生产,使它们大规模快速运行都是一个巨大的挑战。

如果没有像上述企业一样聘用数百名技艺高超的机器学习工程师,应该怎么应用这样的大规模模型呢?近日,Hugging Face 开源了一个新的程序包「Optimum」,旨在为 Transformer 的工业生产提供最佳的工具包,使得可以在特定的硬件上以最高的效率训练和运行模型。


项目地址:https://github.com/huggingface/blog/blob/master/hardware-partners-program.md

Optimum 使 Transformer 实现高效工作


为了在训练和服务模型过程中得到最佳性能,模型加速技术需要与目标硬件兼容。每个硬件平台都提供了特定的软件工具、特性和调节方式,它们都会对性能产生巨大影响。同样地,为了利用稀疏化、量化等先进的模型加速技术,优化后的内核需要与硅上的操作兼容,并特定用于根据模型架构派生的神经网络图。深入思考这个三维的兼容性矩阵以及如何使用模型加速库是一项艰巨的工作,很少有机器学习工程师拥有这方面的经验。

Optimum 的推出正是为了「简化这一工作,提供面向高效人工智能硬件的性能优化工具,与硬件合作者合作,赋予机器学习工程师对其机器学习的优化能力。」


通过 Transformer 程序包,研究人员和工程师可以更容易地使用最先进的模型,无需考虑框架、架构、工作流程的复杂性;工程师们还可以轻松地利用所有可用硬件的特性,无需考虑硬件平台上模型加速的复杂性。


Optimum 实战:如何在英特尔至强 CPU 上进行模型量化

量化为何如此重要却又难以实现?


BERT 这种预训练语言模型在各种各样的 NLP 任务上取得了目前最佳的性能,而 ViT、SpeechText 等其它基于 Transformer 的模型分别在计算机视觉和语音任务上也实现了最优的效果。Transformer 在机器学习世界中无处不在,会一直存在下去。

然而,由于需要大量的算力,将基于 Transformer 的模型应用于工业生产很困难,开销巨大。有许多技术试图解决这一问题,其中最流行的方法是量化。可惜的是,在大多数情况下,模型量化需要大量的工作,原因如下:


首先,需要对模型进行编辑。具体地,我们需要将一些操作替换为其量化后的形式,并插入一些新的操作(量化和去量化节点),其它操作需要适应权值和激活值被量化的情况。

例如,PyTorch 是在动态图模式下工作的,因此这部分非常耗时,这意味着需要将上述修改添加到模型实现本身中。PyTorch 现在提供了名为「torch.fx」的工具,使用户可以在不改变模型实现的情况下对模型进行变换,但是当模型不支持跟踪时,就很难使用该工具。在此基础之上,用户还需要找到模型需要被编辑的部分,考虑哪些操作有可用的量化内核版本等问题。

其次,将模型编辑好后,需要对许多参数进行选择,从而找到最佳的量化设定,需要考虑以下三个问题:


  • 应该使用怎样的观测方式进行范围校正?

  • 应该使用哪种量化方案?

  • 目标设备支持哪些与量化相关的数据类型(int8、uint8、int16)?


再次,平衡量化和可接受的准确率损失。

最后,从目标设备导出量化模型。

尽管 PyTorch 和 TensorFlow 在简化量化方面取得了很大的进展,但是基于 Transformer 的模型十分复杂,难以在不付出大量努力的情况下使用现成的工具让模型工作起来。

英特尔量化神器:Neural Compressor

Neural Compressor 架构示意图。地址:https://github.com/intel/neural-compressor

英特尔开源的 Python 程序库 Neural Compressor(曾用名「低精度优化工具」——LPOT)用于帮助用户部署低精度的推理解决方案,它通过用于深度学习模型的低精度方法实现最优的生产目标,例如:推理性能和内存使用。

Neural Compressor 支持训练后量化量化的训练以及动态量化。为了指定量化方法、目标和性能评测标准,用户需要提供指定调优参数的配置 yaml 文件。配置文件既可以托管在 Hugging Face 的 Model Hub 上,也可以通过本地文件夹路径给出。

使用 Optimum 在英特尔至强 CPU 上轻松实现 Transformer 量化

实现代码如下:


踏上 ML 生产性能下放的大众化之路

SOTA 硬件


Optimum 重点关注在专用硬件上实现最优的生产性能,其中软件和硬件加速技术可以被用来实现效率最大化。Optimum 团队将与硬件合作伙伴协作,从而赋能、测试和维护加速技术,将其以一种简单易用的方式交互。该团队近期将宣布新的硬件合作者,与其一同实现高效机器学习

SOTA 模型

Optimum 团队将与硬件合作伙伴研究针对特定硬件的优化模型设置和组件,成果将在 Hugging Face 模型上向人工智能社区发布。该团队希望 Optimum 和针对特定硬件优化的模型可以提升生产流程中的效率,它们在机器学习消耗的总能量中占很大的比例。最重要的是,该团队希望 Optimum 促进普通人对大规模 Transformer 的应用。

原文链接:https://huggingface.co/blog/hardware-partners-program?&continueFlag=41b75b6447bf1c6783988438d5b28c0d
工程Hugging Face模型训练
1
相关数据
英特尔机构

英特尔(NASDAQ: INTC)是全球半导体行业的引领者,以计算和通信技术奠定全球创新基石,塑造以数据为中心的未来。我们通过精尖制造的专长,帮助保护、驱动和连接数十亿设备以及智能互联世界的基础设施 —— 从云、网络到边缘设备以及它们之间的一切,并帮助解决世界上最艰巨的问题和挑战。

http://www.intel.cn/
相关技术
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

人工智能技术

在学术研究领域,人工智能通常指能够感知周围环境并采取行动以实现最优的可能结果的智能体(intelligent agent)

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

TensorFlow技术

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

计算机视觉技术

计算机视觉(CV)是指机器感知环境的能力。这一技术类别中的经典任务有图像形成、图像处理、图像提取和图像的三维推理。目标识别和面部识别也是很重要的研究领域。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

查询技术

一般来说,查询是询问的一种形式。它在不同的学科里涵义有所不同。在信息检索领域,查询指的是数据库和信息系统对信息检索的精确要求

语言模型技术

语言模型经常使用在许多自然语言处理方面的应用,如语音识别,机器翻译,词性标注,句法分析和资讯检索。由于字词与句子都是任意组合的长度,因此在训练过的语言模型中会出现未曾出现的字串(资料稀疏的问题),也使得在语料库中估算字串的机率变得很困难,这也是要使用近似的平滑n元语法(N-gram)模型之原因。

量化技术

深度学习中的量化是指,用低位宽数字的神经网络近似使用了浮点数的神经网络的过程。

推荐文章
暂无评论
暂无评论~