Qualcomm Cloud AI 推出Efficient Transformers:一个API,无限可能
发表于 2024-06-14 13:44:11

秉承以开发者为中心的原则,我们推出了最新的推理库:efficient transformers,简化在 Qualcomm Cloud AI 100 上部署大语言模型 (LLM) 的流程。借助该库,用户可以将 HuggingFace (HF) 库(使用HF transformers库开发)中的预训练模型和检查点(checkpoint)无缝移植成推理就绪格式,从而在Qualcomm Cloud AI 100 加速器上高效运行。

本文将介绍将模型部署至Qualcomm Cloud AI 100实例的过程,采用的是在任意 GPU (图形处理单元)或AI加速器上训练过的基于 transformers 的模型。

Efficient transformers 库包括针对Qualcomm Cloud AI 100优化的基础模型块的重新实现。在调用库移植预训练模型时,原始模型块在Pytorch级别上被替换为了重新实现的块。用户不但仍然能够微调、量化或作出任何调整,而且也保留了针对Qualcomm Cloud AI 100优化的模型代码。

Efficient transformers 库根据“类”封装了模型架构组件的实现样式移植HF预训练模型。因此,所有相同基础类直接衍生的HF模型均可透明移植。例如,efficient transformers 支持 MistralForCausalLM 意味着所有基于MistralForCausalLM的模型均可移植到Qualcomm Cloud AI 100,不需要针对模型做出特定更改。

当前版本的模型库支持基于Llama、Mistral、Mixtral、CodeGen、StarCoder、 MPT等流行架构的CausalLM模型,后续将支持更多基础模型类。

在 Qualcomm Cloud AI 100 上部署

优化->导出->编译

Qualcomm Cloud AI 100 加速器是一款量身定制的高复杂度的推理产品,其软件解决方案专为快速部署预训练模型而构建。

只需三个简单步骤:导出->编译->部署,即可将任何框架中的预训练模型部署至Qualcomm Cloud AI 100并实现推理友好。Qualcomm Cloud AI 100 工具避免了所有相关的复杂工作,大多数情况下可以做到开箱即用。

对于导出、编译和部署模型等基本步骤,efficient transformers 将这些步骤简化成一个步骤,在后台处理转换和优化等复杂任务。

此外,该模型库还在部署流程中增加了一层智能,自动识别和执行针对每个预训练模型定制的优化。该模型库将流程精简,确保以最少的工作量实现最佳性能。

部署模型

一旦编译网络满足给定用例的KPI(关键性能指标),即可以在推理服务器(如Triton)的帮助下进行部署,并通过Kubernetes进行编排。Platform SDK(软件开发套件)支持虚拟化技术和Docker,如图4所示。Platfrom SDK 随附的C++和Python API运行时可以创建用于推理部署的端到端应用。在线用户指南还提供了若干示例,说明如何在Qualcomm Cloud AI 100上部署模型进行推理。

Qualcomm Cloud AI 100 上的 LLM

在推理加速器上高效部署LLM需要应对多个挑战,才能不牺牲性能。例如:

1.在LLM解码时,不重新计算KV值,而是在加速器上维持不断增长的KV值(KV$)缓存

2.尽管上述方法会自然产生大小可变的张量,但仅生成固定形状的张量,以便使用AI 100预编译器生成高性能代码

3.自动检测并有效处理模型的各种KV$布局,比如:

 1. [batch, context_length, num_heads, head_dim]

2. [batch, num_heads, context_length, head_dim]

3. [context_length, batch, num_heads, head_dim]及其他。

4. 高效地管理内存,以回写所计算的KV。

5. 处理预训练模型中IEEE-16浮点数的精度溢出(通常提升到fp32)。 

6. 处理KV$等滚动缓冲器的输入管理。

用户无须操心这些工作 - 本该如此!

该模型库提供简单的API接口,用于在Qualcomm Cloud AI 100上编译和执行运行模型。

在Qualcomm Cloud AI 100上启动 LLM Transformers 

本节示意图显示了在处理不同类型和大小的模型时efficient transformers 库的实际使用情形。

Codegen-2B 

Mistral-7B (Single SOC)

CodeLLAMA-34B

跨4个SOC的Tensor并行性

多个LLM? 没问题!

在JSON文件中包含模型卡名称,批量启用模型!

在HuggingFace上有数以千计的针对各种使用案例和数据集进行了优化的LLaMA和Mistral(以及其他基础模型)的衍生产品。

下图显示了如何使用efficient transformers API一次运行多个模型(不受支持的模型架构)。

用户提供模型名称(在模型卡中指定)作为库帮助程序(在循环中调用.infer() API的简单应用程序)的输入,库将生成所有模型的优化推理容器。

如上所述,开发者借助该模型库可以使用简单的API在Qualcomm Cloud AI 100卡上无缝运行工作负载。

对于希望精细控制工作负载的开发者,该库还提供了开发者底层API

除此之外,该模型库还将作为Qualcomm Cloud AI 100 Apps SDK安装包的一部分进行集成,使用户真正实现从模型到推理结果输出一步完成,大大减少运行模型所需的步骤。

该模型库是产品栈和MLOps/LLOPS开源产品集成的重要推手。Efficient transformers 提供接口,与Triton、LLM服务堆栈、K8s部署等集成,具有广泛的可扩展性,允许针对模型进行优化,而无需对接口或API使用进行任何更改。

设计理念

在专业推理加速器上部署预训练LLM,显然需要对模型进行一些更改,以便更好地在目标硬件上运行。大多数更改可归结为模式识别和子图替换。

我们发现,protobuf级别的 图像转换不可扩展,且极不可靠,因为模式严重依赖模型实现者的编码风格。为缓解上述情况,Qualcomm Technologies 推出的efficient transformers 库API在模型源头处理图形转换和优化。API基于模型种类和任务识别模型所需要进行的转换,并在此基础上进行一系列模块替换,将原始模块替换为Qualcomm Technologies重新实现的模块。

一项很重要的前提条件是使用HF transformers库实现这些模型。

结语

随着深度学习领域的快速扩展,我们必须不断改善硬件、软件和用户体验。为使软件工具链得到广泛接受,使用简单以及只需编译一次即可多平台部署的能力至关重要。“训练到推理”的简单工作流程不仅可以减轻开发负担,还可以显著减少在不同垂直市场部署LLM的时间和成本,并精简满足相关KPI的流程。

Qualcomm Technologies 推出的 efficient transformers 模型库提供了一种简单的人工智能部署方法,可无缝集成至现有框架。通过处理特定于模型的复杂优化,该模型库只需一个API调用,大大简化了从预训练模型到推理就绪解决方案的流程。

在推理得到高效处理的情况下,开发者即可专注于项目的核心工作。无论您是经验丰富的专业人员,还是刚刚开始部署人工智能,该模型库都能让您的部署流程更顺畅、更便捷。

后续还有更多关于Qualcomm Cloud AI 100 SW解决方案的博客,敬请关注。

本文是原作者个人意见的表达,并非体现 Qualcomm Incorporated 或其子公司(“Qualcomm”) 的意见。本文内容仅供参考,并非 Qualcomm 作出的陈述,也不代表 Qualcomm 认可其内容。本网站还可能包括非 Qualcomm 网站和资源的链接或引用。对于本网站引用或提供的可以访问的任何非 Qualcomm 网站或第三方资源,或者上述网站或资源的链接,Qualcomm 不作任何声明、保证或其他承诺。

Qualcomm 品牌产品是 Qualcomm Technologies, Inc.及其子公司的产品。

CSDN官方微信
扫描二维码,向CSDN吐槽
微信号:CSDNnews
微博关注
【免责声明:CSDN本栏目发布信息,目的在于传播更多信息,丰富网络文化,稿件仅代表作者个人观点,与CSDN无关。其原创性以及文中陈述文字和文字内容未经本网证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本网不做任何保证或者承诺,请读者仅作参考,并请自行核实相关内容。您若对该稿件有任何怀疑或质疑,请立即与CSDN联系,我们将迅速给您回应并做处理。】