以大模型为代表的 AI 技术高速发展,目前 Scaling Law 依然生效,模型参数持续增大,序列不断增长,响应速度越来越快,但大模型商业闭环依赖推理的规模落地,如何在不断提升用户体验的基础上不断降低推理成本,以满足大模型规模落地的诉求,成为大模型推理技术研究的核心关键。为了满足大模型推理规模落地对客户体验和成本的诉求,昇腾推出高性能大模型推理软硬件解决方案,满足客户多样性开发诉求,助力大模型规模落地。
本文整理自华为昇腾计算首席架构师王建辉在 AICon 2024 北京的演讲《昇腾大模型推理最佳实践》,内容经 InfoQ 进行不改变原意的编辑。
我的演讲将分为三个部分。第一部分,我会讨论当前大模型推理的趋势和应用方向,探讨大模型推理对软件和硬件的要求,以及如何评估大模型推理系统的优势和不足。第二部分,我将详细介绍昇腾在大模型推理方向上的解决方案,包括软硬件架构和关键技术。第三部分,我会分享一些与实际应用落地相关的案例。
在人工智能领域,随着技术的不断迭代发展,对推理解决方案的要求也在不断提高。从早期的 CNN(卷积神经网络)发展到现在广泛使用的 Transformer 模型,以及最近的 DIT 架构,这些技术的进步对计算资源提出了更高的挑战。
目前,大模型(LLM)已经开始向多模态方向发展,长序列技术已经成为当前应用的主流。不同的技术具有不同的计算特性,例如 Stable Diffusion 或 DIT 架构,它们对算力的需求非常高。Transformer 模型在推理时,对内存带宽的需求也很大,尤其是在使用 KVCache 技术之后。而长序列处理则对内存容量有很高的要求。整个硬件系统需要具备强大的算力、足够的内存容量以及高速的内存带宽。同时,软件也需要能够支持这些硬件的高性能要求。目前,单机可能已经无法满足推理的需求,需要利用多机多卡的并行推理技术。此外,随着推理技术的快速发展,不同的量化技术和压缩技术的应用,对软件的灵活性也有很高的要求。
当前大模型推理应用正在加速成熟,整体来看,美国在这方面的发展速度更快一些,而国内则处于一个跟进的状态。大模型推理的应用首先在 ToC(面向消费者)领域爆发,随后迅速向 ToB(面向企业)领域发展并成熟。
大模型推理的应用通常具有一个特性,即在初期增长阶段不会太快,但一旦过了某个爆发点,其增长速度会非常快,甚至达到 100 倍或 200 倍的增长。从目前客户的情况看,大模型推理的卡已经有上万张卡在同步在线进行推理,千卡集群的推理集群已经非常多。训练和推理对集群的要求有所不同。训练集群构建的关键在于如何实现更大规模的互联,以支持万卡集群同时进行任务训练。而推理的核心追求是降低成本,以满足业务需求。
构建一个领先的推理解决方案,我们围绕业务场景总结并建立了一个评价体系,我们称之为 LACE 指标。这个体系包括推理时延和模型精度,这两个因素直接影响用户体验。此外,还包括吞吐量和并发能力,以及开发的易用性,这两个因素则影响推理的成本,包括线上成本和开发成本。围绕 LACE 开发体系,从业务规划到模型上线,整个过程会经历几个关键阶段。首先是硬件选型,选择合适的硬件对于整个解决方案的性能至关重要。接下来是训练到推理的转换和优化,这个过程涉及模型的压缩和量化,旨在提高性能并降低成本。最后是模型的上线部署,完成整个业务流程。
昇腾针对大模型推理的全流程提供了一整套完整的解决方案。这套方案从底层的硬件开始,其上是昇腾提供的自家研发的硬件使能,确保硬件性能得到充分利用。在硬件使能之上,昇腾构建了推理引擎,能够支持各种推理任务。再往上,昇腾还提供了推理服务化部署的能力,使得推理服务可以灵活地部署和扩展。通过这四层架构,昇腾能够支持从硬件选型、训推转换、模型压缩、推理执行到应用部署的五个关键维度。这五个维度涵盖了从业务规划到模型上线的整个流程,确保了解决方案的全面性和高效性。接下来,我将围绕这五个维度,详细展开当前昇腾的能力,为大家提供一个全面的讲解。
昇腾在硬件选型方面,针对不同的应用场景,提供了不同的硬件方案。昇腾根据模型参数量和时延要求,将应用场景划分为四个象限,每个象限的硬件选型和考量都有所不同。昇腾目前主要提供了两款专用硬件,一款是面向单卡推理或低成本部署的 Atlas 300I Duo,另一款是面向多卡甚至多机推理的 Atlas 800I A2。这两款硬件各有特点,能够满足不同应用场景对硬件能力的需求。
在硬件选型时,需要综合考虑时延和成本约束。如果追求极低时延,计算的 batch size 不能太大,这会提高推理成本。但如果能在时延上做一些权衡,比如将时延要求放宽到 50 毫秒或 100 毫秒,推理成本可以得到显著降低。通过调整 batch size 和提高硬件资源利用率,可以在计算成本和用户体验之间取得平衡。
Atlas 800I A2 硬件采用了 HCCS 全互联架构,具有接近 400GB 的互联带宽,能够支持 LLaMA2-70B 等大模型,实现高吞吐量。而 Atlas 300I Duo 硬件则拥有 96GB 的大内存容量,适用于时延要求不高的场景。例如,在文生图或 Stable Diffusion 等模型中,单卡可以实现 1.5 秒左右完成 50 次迭代,生成一张图片。如果通过蒸馏技术将迭代次数从 50 次降低到 20 次,生成一张图片的时间可以控制在 1 秒内。
昇腾在训练模型到推理的转换过程中提供了一整套软件架构,包括昇腾推理引擎 MindIE,它涵盖了推理运行时以及与 Mindspore 和 Pytorch 框架的对接。昇腾的硬件支持 Mindspore 训练出的模型直接进行推理,并致力于打造训练推理一体化的 AI 框架,实现底层 MindIE-RT 与多种推理部署方式的结合。对于 Pytorch 训练的模型,昇腾通过 Pytorch 插件快速实现模型从训练到昇腾推理平台的迁移和适配,仅需大约 10 行代码,性能可达 0.8-0.9 倍于纯离线推理。
昇腾还提供了 MindIE-RT,支持自动构图开发工作流,实现从框架导出图到昇腾底层执行图的快速转换。对于大语言模型,由于图开发体系的挑战和新技术的快速迭代,昇腾也支持手动构图或手动开发,以快速构建并优化性能。
昇腾提供一站式开发工具 MindStudio,支持算子、模型和应用三层开发,提供迁移分析工具、精度比对、改图、性能优化和快速部署能力。借助 MindStudio,模型在昇腾平台上的迁移和优化可以在 3-15 天内完成。
昇腾强调训练和推理的同构能力,即在推理硬件上或相同底层硬件架构的设备上进行训练,以保持精度无损。昇腾还提供 Ascend C 编程语言,支持自定义算子开发,这对于大模型推理中 Attention 算子的灵活性和性能至关重要。尽管从 CUDA 或 GPU 开发习惯适配到昇腾平台需要一个学习过程和成本,但昇腾的开发体系能够使客户快速开发出高性能的算子。例如,昇腾的客户能够将五次内存访问的操作通过超大融合算子减少到一次内存访问,显著提升大模型推理性能。
昇腾在模型压缩方面支持当前大模型推理中常用的优化算法,包括量化算法 W4A16、W8A16 以及 W8A8 等权重量化技术和量化算法。在 W8A8 量化方面,由于大模型激活值的特性,存在大量异常值需要抑制。昇腾通过异常值抑制和自适应 PTQ 量化算法,避免了在量化过程中引入微调的需求,这些算法在模型量化中变得非常重要。
昇腾在 W8A8 量化上能够将精度损失控制在 0.5% 到 1% 的范围内,这与测试数据集的抖动和变化有关。量化之后,整体业务成本可以降低约 30%。利用昇腾硬件的特性,如 Atlas 300I Duo,昇腾还支持权重随路解压缩能力,这要求对模型进行稀疏处理。经过权重稀疏处理后,模型权重的内存搬移量可以进一步压缩 30% 到 50%,从而进一步提升大模型推理的性能。
在大模型推理领域,加速技术的发展非常迅速,包括开源算法、软件、论文以及新技术的快速演进。Continuous Batching 和 Paged Attention 算法,动态调度和节省内存的技术,已成为大模型推理中的一个必备技术。除了 Continuous Batching 和 Paged Attention,并行解码技术也发展迅速,昇腾希望利用这项技术充分利用算力。
大模型推理对内存带宽的要求非常高,同时对卡间或机间的通信时延也有高要求。与训练阶段优化通信的思路不同,推理阶段的目标是最小化单次通信时延。实验表明,有时增加通信量反而能减少调度时延,从而降低整体通信时延。降低通信时延后,可以实现更大的并行域,如从 TP8 扩展到多机 TP16,这在单机临界点的应用场景中带来了显著的性能提升。
昇腾在内部模型验证中发现,在 32K 序列长度级别,通过多机对比单机,平均单卡吞吐量能提升接近 6 倍。此外,昇腾还关注多机推理方案,类似于训练集群的参数面组网,通过一层组网实现多机推理。
针对 Kernel 的融合优化,昇腾根据硬件特性进行融合算子优化,以降低内存频繁读写问题,提高内存带宽利用率,从而提升推理性能。Flash Attention 算子最初是针对 GPU 计算特性提出的,但昇腾发现它可能不是与昇腾硬件最亲和的算子。因此,昇腾根据硬件结构特性重新设计了 attention 算子,以提高执行效率。并行解码技术有多种形式,如 Lookahead 算法,它是一种自投机算法,可以在不重新训练小模型的情况下发挥作用。Lookahead 算法对序列长度和输出长度有一定限制,但在其要求的范围内,能够显著降低推理时延,提升吞吐量。
小模型加大模型的投机推理也是一种有效方法,但需要生成一个小模型,这有一定难度。昇腾在这一方向进行了测试和验证,发现在序列长度约 2K 和 batch 在 100 以内时,吞吐量能提升约 40%,推理时延也降低约 40%。
通过 reference 方式提供投机来源,也能在代码生成场景下提升约 60% 的吞吐量。这些算法对底层 attention 算子的要求非常高。昇腾正在努力实现一套能够整合不同并行解码算法的系统,同时结合并行解码特性和 Continuous Batching 和 Paged Attention 的特点,以形成一个面向产品化的完整并行解码系统。
昇腾在集群方案方面有两个主要目标。首先,昇腾希望支持万亿级别的大模型推理,即在昇腾平台上能够处理具有高达万亿参数量的模型。其次,昇腾还计划支持百万级别的序列长度,指的是直接进行硬推理的能力,而不是采用近似计算或 streaming LLM 的方式。昇腾的目标是实现直接计算,能够达到百万级序列长度的处理能力。
昇腾目前支持业界主流大模型在其平台上进行推理,包括开源模型和业界常见的模型。昇腾的性能表现相当出色,能够达到 1.5 倍或 1.8 倍于业界平均水平。例如,LLaMa3 模型发布后的第二天,昇腾就完成了其训练和推理的适配工作。如果客户需要,他们可以立即在昇腾平台上对 LLaMa3 的 8B 和 70B 版本进行训练和推理验证,包括场景化调优和上线部署。昇腾在大模型训练和推理的业界跟进和适配速度方面相对较快。
为了加快大模型训练完成后到推理部署上线的整个过程,昇腾自研了 MindIE-Service 服务化部署能力。此外,昇腾还支持与业界开源软件 vLLM 和 TGI 的对接,并提供了相应的对接方式。这表明昇腾在推理服务化部署方面具有强大的自研能力和良好的兼容性。
昇腾的软件栈能力在应用服务方面是分层开放的,这意味着昇腾能够支持不同客户和不同场景的对接需求。如果客户拥有自研的推理引擎,昇腾可以提供底层的算子和加速能力,包括底层的算子和加速库,以便于与客户的推理引擎进行对接。对于那些拥有自己服务化能力和框架的客户,昇腾在推理引擎层面提供对接支持。而对于需要一整套完整推理应用的客户,昇腾可以提供从服务化到引擎,再到底层算子的全栈解决方案,以支持客户的全面对接需求。
昇腾在应用案例与关键进展方面已经取得了显著成果。目前,昇腾与多家头部客户合作,共同打造了大模型一体机,实现了大模型在训练和推理上的一体化应用,覆盖了办公客服等场景。
在华为内部,昇腾也在会议场景和面向 10 万研发人员的代码研发辅助场景中大量应用了大模型。华为计划将内部研发的代码生成和辅助开发场景制作成 demo,并将其开源,以支持业界的发展。
在视频生成领域,昇腾通过 MindIE-SD 支持 open sora 进行开发工作。目前,昇腾能够实现仅需修改少数几行代码,就能让 open sora 模型在昇腾平台上运行。在视频生成效率方面,昇腾当前能够在大约一分钟内生成 20 秒的视频。预计到年底,昇腾希望能够在一分钟内生成 60 秒的视频,这将是一个显著的性能提升。
InfoQ 将于 8 月 18 日至 19 日在上海举办 AICon 全球人工智能开发与应用大会,汇聚顶尖企业专家,深入端侧 AI、大模型训练、安全实践、RAG 应用、多模态创新等前沿话题。现在大会已开始正式报名,6 月 30 日前可以享受 8 折优惠,单张门票节省 960 元(原价 4800 元),详情可联系票务经理 13269078023 咨询。