推理1760亿参数的BLOOMZ,性能时延仅3.7秒 | 最“in”大模型
编者按:本文作者是 Hugging Face 的机器学习工程师 Régis Pierrard,并于 2023 年 3 月 28 日发布于Hugging Face Blog[1]。感谢 Régis Pierrard 授权我们翻译和转发本文。本文介绍了如何在 Habana® Gaudi®2[2]上轻松部署参数量多达数十亿的语言模型,披露了 Hugging Face 针对 BLOOMZ 在 Gaudi®2 上的性能评估结果。
(资料图片仅供参考)
随着大语言模型 (Large Language Model, LLM) 的规模越来越大,在生产环境部署和使用这些模型来进行推理也变得越来越具挑战性。为应对这些挑战,无论硬件还是软件,都经历了多次创新。
下面,我们将一同探索如何有效克服这些挑战。
BLOOMZ 简介BLOOM[3]是一个拥有 1760 亿参数的自回归模型,训练后可用于生成文本序列。它可以处理 46 种语言和 13 种编程语言。
作为 BigScience[4]计划中的一个开放科学项目,BLOOM 的设计和训练吸引了世界各地众多研究人员和工程师的共同参与。
BLOOMZ[5]是最近发布的、与 BLOOM 架构完全相同的模型,它是 BLOOM 基于多个任务的调优版本,具有更出色的泛化和零样本[6]能力。
无论是训练[7]还是推理[8]场景,这类大模型都对内存和速度提出了新挑战。
即便使用 16 位精度,一个实例所需的内存仍高达 352 GB!目前具有如此大内存的设备可能很难找到,但像 Habana® Gaudi®2 这样的先进硬件却足以让 BLOOM 和 BLOOMZ 模型以更低的时延执行推理。
Habana® Gaudi®2Gaudi®2 是 Habana Labs 设计的第二代 AI 硬件加速器。单个服务器包含 8 张加速卡(称为 Habana 处理单元,即 Habana Processing Unit,简称为 HPU),每张卡内存高达 96 GB,可提供足够的空间来容纳大模型。
然而,如果计算速度很慢,那么为大模型提供大内存的意义也不大。所幸,Gaudi®2 的计算速度也非常出色。
Gaudi®2 与 GPU 的主要区别在于它的架构能让加速器并行执行通用矩阵乘法 (GeMM) 和其他运算,从而加快深度学习工作流。这些特性使 Gaudi®2 成为 LLM 训练和推理的理想选择。
Habana 的 SDK SynapseAITM支持使用 PyTorch 和 DeepSpeed 来加速 LLM 训练和推理。SynapseAI 图形编译器[9]可优化图形中所累积的操作的执行(如算子融合、数据布局管理、并行化、流水线、内存管理、图优化等)。
此外,SynapseAI 最近引入了对 HPU Graph[10]和DeepSpeed-inference[11]的支持,这两者都非常适合时延敏感型应用(参见下文基准测试)。
以上所有功能均已集成至 Optimum Habana[12]库,因此在 Gaudi® 上部署模型非常简单。
访问此链接https://huggingface.co/docs/optimum/habana/quickstart,查看快速入门页面。
如欲试用 Gaudi®2,请登录英特尔® Developer Cloud[13]并按照本指南[14]操作。
基准测试本节将提供 BLOOMZ 在 Gaudi®2 和第一代 Gaudi® 上的基准测试结果。
虽然 Gaudi®2 和第一代 Gaudi® 的内存都不小,但由于模型过大,单个设备仍无法容纳单个 BLOOMZ 实例。
为解决这一问题,本文使用了深度学习优化库 DeepSpeed[15]来实现多种内存和速度优化,进而加速模型推理并使模型与设备适配。
本文方案需依赖 DeepSpeed-inference[16]:它引入了诸如模型(或流水线)并行[17]等多个功能特性,可充分利用可用设备。
对于 Gaudi®2,则使用了已添加 HPU 支持的 Habana 的 DeepSpeed[18]分支。
时延本文基于两种不同规模但参数均达数十亿的 BLOOMZ 模型(批大小为 1 个样本)进行了实验测试,两种模型的参数大小分别为:
1760 亿[19]参数 (BLOOMZ-176B)70 亿[20]参数 (BLOOMZ-7B)本文使用 DeepSpeed-inference 以 16 位精度在 8 个设备上运行推理,并且使用 key-value 缓存。值得注意的是,尽管 CUDA Graph 目前与 DeepSpeed 中的模型并行不兼容(DeepSpeed v0.8.2,参见文末[21]),但 Habana 的 DeepSpeed 分支是支持 HPU Graph 的。
所有基准测试都使用贪心搜索 (Greedy Search)[22]生成 100 个词元。输入提示为:
DeepSpeed is a machine learning framework
BLOOM 分词器会将该提示分为 7 个词元。
推理时延测试结果如下图所示(单位为秒):
△图 1. BLOOMZ 在 Gaudi®2 和第一代 Gaudi® 上的推理时延测试结果
Habana 团队最近在 SynapseAI 1.8 中引入了 DeepSpeed-inference 支持,可快速赋能 1000 多亿参数模型的推理。
根据图 1 测试结果可知:对于参数量达 1760 亿的模型 BLOOMZ,Gaudi®2 性能表现出色,时延仅为约 3.7 秒 ;对于参数量为 70 亿的较小模型 BLOOMZ-7B,Gaudi®2 的时延优势更加显著,单设备约为第一代 Gaudi® 的37.21%,而当设备数量都增加为 8 后,这一百分比进一步下降至约 24.33%。
Habana 团队会在后续发布的新 SynapseAI 版本中继续优化这些模型的性能。例如,在 SynapseAI 1.9 的预览版中,BLOOMZ-176B 的时延从 3.7 秒进一步降低到 3.5 秒。
在完整数据集上运行推理我们编写的脚本支持模型在完整的数据集上完成所有句子的推理。这尤其适用于想在自有数据集上尝试使用 Gaudi®2 进行 BLOOMZ 推理的情况。
这里我们以 tldr_news 数据集为例。该数据集包含多篇文章的标题和内容(均可在 Hugging Face Hub 中对其进行可视化处理)。前几个样本如下所示:
标签: