关于人工智能:越小越好-Q8Chat在英特尔至强-CPU-上体验高效的生成式-AI

47次阅读

共计 3458 个字符,预计需要花费 9 分钟才能阅读完成。

大语言模型 (LLM) 正在席卷整个机器学习世界。得益于其 transformer 架构,LLM 领有从大量非结构化数据 (如文本、图像、视频或音频) 中学习的不堪设想的能力。它们在 多种工作类型 上体现十分杰出,无论是文本分类之类的抽取工作 (extractive task) 还是文本摘要和文生图像之类的生成工作 (generative task)。

顾名思义,LLM 是 _大_模型,其通常领有超过 100 亿个参数,有些甚至领有超过 1000 亿个参数,如 BLOOM 模型。LLM 须要大量的算力能力满足某些场景 (如搜寻、对话式利用等) 的低提早需要。而大算力通常只有高端 GPU 能力提供,可怜的是,对于很多组织而言,相干老本可能高得令人望而生畏,因而它们很难在其利用场景中用上最先进的 LLM。

在本文中,咱们将探讨有助于缩小 LLM 尺寸和推理提早的优化技术,以使得它们能够在英特尔 CPU 上高效运行。

量化入门

LLM 通常应用 16 位浮点参数 (即 FP16 或 BF16) 进行训练。因而,存储一个权重值或激活值须要 2 个字节的内存。此外,浮点运算比整型运算更简单、更慢,且须要额定的计算能力。

量化是一种模型压缩技术,旨在通过缩小模型参数的值域来解决上述两个问题。举个例子,你能够将模型量化为较低的精度,如 8 位整型 (INT8),以放大它们的位宽并用更简略、更快的整型运算代替简单的浮点运算。

简而言之,量化将模型参数缩放到一个更小的值域。一旦胜利,它会将你的模型放大至多 2 倍,而不会对模型精度产生任何影响。

你能够进行训时量化,即量化感知训练 (QAT),这个办法通常精度更高。如果你须要对曾经训成的模型进行量化,则能够应用训后量化 (PTQ),它会更快一些,须要的算力也更小。

市面上有不少量化工具。例如,PyTorch 内置了对 量化 的反对。你还能够应用 Hugging Face Optimum-Intel 库,其中蕴含面向开发人员的 QAT 和 PTQ API。

量化 LLM

最近,有钻研 [[1]](https://arxiv.org/abs/2206.01861)[[2]](https://arxiv.org/abs/2211.10438) 表明目前的量化技术不适用于 LLM。LLM 中有一个特地的景象,即在每层及每个词向量中都能察看到某些特定的激活通道的幅度异样,即某些通道的激活值的幅度比其余通道更大。举个例子,下图来自于 OPT-13B 模型,你能够看到在所有词向量中,其中一个通道的激活值比其余所有通道的大得多。这种景象在每个 transformer 层中都存在。

图源: SmoothQuant 论文

迄今为止,最好的激活量化技术是逐词量化,而逐词量化会导致要么离群值 (outlier) 被截断或要么幅度小的激活值呈现下溢,它们都会显著升高模​​型品质。而量化感知训练又须要额定的训练,因为不足计算资源和数据,这在大多数状况下是不切实际的。

SmoothQuant [[3]](https://arxiv.org/abs/2211.10438)[[4]](https://github.com/mit-han-lab/smoothquant) 作为一种新的量化技术能够解决这个问题。其通过对权重和激活进行联结数学变换,以减少权重中离群值和非离群值之间的比率为代价升高激活中离群值和非离群值之间的比率,从而行平滑之实。该变换使 transformer 模型的各层变得“量化敌对”,并在不侵害模型品质的状况下使得 8 位量化从新成为可能。因而,SmoothQuant 能够帮忙生成更小、更快的模型,而这些模型可能在英特尔 CPU 平台上运行良好。

图源: SmoothQuant 论文

当初,咱们看看 SmoothQuant 在风行的 LLM 上成果如何。

应用 SmoothQuant 量化 LLM

咱们在英特尔的合作伙伴应用 SmoothQuant-O3 量化了几个 LLM,别离是: OPT 2.7B、6.7B [[5]](https://arxiv.org/pdf/2205.01068.pdf),LLaMA 7B [[6]](https://ai.facebook.com/blog/large-language-model-llama-meta-ai/),Alpaca 7B [[7]](https://crfm.stanford.edu/2023/03/13/alpaca.html),Vicuna 7B [[8]](https://vicuna.lmsys.org/),BloomZ 7.1B [[9]](https://huggingface.co/bigscience/bloomz) 以及 MPT-7B-chat [[10]](https://www.mosaicml.com/blog/mpt-7b)。他们还应用 EleutherAI 的语言模型评估工具 对量化模型的准确性进行了评估。

下表总结了他们的发现。第二列展现了量化后性能反而失去晋升的工作数。第三列展现了量化后各个工作均匀性能进化的均值 (* _负值示意量化后模型的均匀性能进步了_)。你能够在文末找到具体后果。

如你所见,OPT 模型非常适合 SmoothQuant 量化。模型比预训练的 16 位模型约小 2 倍。大多数指标都会有所改善,而那些没有改善的指标仅有轻微的升高。

对于 LLaMA 7B 和 BloomZ 7.1B,状况则好坏参半。模型被压缩了约 2 倍,大概一半的工作的指标有所改进。但同样,另一半的指标仅受到轻微影响,仅有一个工作的绝对进化超过了 3%。

应用较小模型的显著益处是推理提早失去了显著的升高。该 视频 演示了在一个 32 外围的单路英特尔 Sapphire Rapids CPU 上应用 MPT-7B-chat 模型以 batch size 1 实时生成文本的成果。

在这个例子中,咱们问模型:“What is the role of Hugging Face in democratizing NLP?”。程序会向模型发送以下提醒:
A chat between a curious user and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the user’s questions. USER: What is the role of Hugging Face in democratizing NLP? ASSISTANT:

这个例子展现了 8 位量化能够在第 4 代至强处理器上取得额定的提早增益,从而使每个词的生成工夫十分短。这种性能程度无疑使得在 CPU 平台上运行 LLM 成为可能,从而为客户提供比以往任何时候都更大的 IT 灵活性和更好的性价比。

在至强 CPU 上体验聊天利用

HuggingFace 的首席执行官 Clement 最近示意:“专一于训练和运行老本更低的小尺寸、垂域模型,会使更多的公司会收益。”Alpaca、BloomZ 以及 Vicuna 等小模型的衰亡,为企业在生产中升高微调和推理老本的发明了新机会。如上文咱们展现的,高质量的量化为英特尔 CPU 平台带来了高质量的聊天体验,而无需宏大的 LLM 和简单的 AI 加速器。

咱们与英特尔一起在 Spaces 中创立了一个很有意思的新利用演示,名为 Q8-Chat (发音为 Cute chat)。Q8-Chat 提供了相似于 ChatGPT 的聊天体验,而仅需一个有 32 外围的单路英特尔 Sapphire Rapids CPU 即可 (batch size 为 1)。

Space 体验地址: https://intel-q8-chat.hf.space

下一步

咱们正致力于将 Intel Neural Compressor 集成入 Hugging Face Optimum Intel,从而使得 Optimum Intel 可能利用这一新量化技术。一旦实现,你只需几行代码就能够复现咱们的后果。

敬请关注。

将来属于 8 比特!

本文保障纯纯不含 ChatGPT。

致谢

本文系与来自英特尔实验室的 Ofir Zafrir、Igor Margulis、Guy Boudoukh 和 Moshe Wasserblat 共同完成。特别感谢他们的宝贵意见及单干。

附录: 具体后果

负值示意量化后性能有所提高。


英文原文: https://hf.co/blog/generative-ai-models-on-intel-cpu

原文作者: Julien Simon

译者: Matrix Yao (姚伟峰),英特尔深度学习工程师,工作方向为 transformer-family 模型在各模态数据上的利用及大规模模型的训练推理。

审校 / 排版: zhongdongy (阿东)

正文完
 0