大模型推理引擎国产化思考和实践
本文主要聚焦于大模型推理引擎国产化的重要性与相关背景,文中对比了国产芯片与国际芯片的性能,强调硬件对软件优化的影响。还深入探讨了国产化实践中的挑战与机遇,包括架构比较、性能优化、框架兼容性及模型适配。强调自研推理引擎的必要性,指出与国产芯片适配的重要性及未来发展趋势。
全文目录如下:
1. 背景介绍
2. 国产化思考
3. 国产化实践
4. 未来期望
5. 问答环节
作者:刘童璇 京东零售集团 总监
01 背景介绍
首先在第一章节中,将简单介绍大模型训练推理中硬件指标与软件适配相关问题的背景,对比国产化芯片与英伟达 GPU 等国际品牌芯片的性能,希望帮助大家理解硬件性能对于大模型训练和推理的重要性。
1. 硬件对比
上图中列出了一些国产化芯片的性能,通过对比英伟达和华为的参数,可以看出国产化芯片在算力、访存和带宽方面的水平,这些是大模型训练推理的关键要素,是软件优化必须考量的硬件指标。
从表中可以看到,华为 910B 尚不支持 FP8 的 TensorCore,其 GPU 内存 64GB,采用 HBM2E 工艺;而英伟达 B100 的 GPU 内存 192GB,采用 HBM3E 工艺。内存带宽方面,显存工艺代际变化大,容量和带宽渐增,从 A100 到 H100 再到 B100 的发展过程中变化显著,TensorCore 算力成倍增长。
选择芯片时算力安全性也是重要考量之一。受中美关系影响,国产化芯片成为算力安全的选择。在算力安全和软件生态方面要考虑多种异构芯片,这就涉及上层软件在开源框架中适配底层不同卡的问题。
2. 推理引擎对比
vLLM 受众广、适配模型多、生态佳,且已捐献给 LF AI,可用性好且有接口标准,新模型支持和部署便利性佳。英伟达的 TRT-LLM 性能优于 vLLM,但非完全开源,公司选型时会因业务优化受限和模型转换影响可用性而有顾虑。SGLang 也被越来越多地使用,经测试其性能优于 vLLM,可视为插件,且完全开源。LMDeploy 是国内多人尝试的一个完全开源的框架。华为 MindIE 是针对昇腾系列 NPU 的一个大模型推理框架。
推理引擎的现状是,国外的 vLLM、TRT-LLM 等推理引擎不支持国产芯片,其在实际应用中的性能也存在问题。而 MindIE 则不支持英伟达 GPU。所以,当前缺少性能好且能支持不同芯片的框架。华为提供的 MindIE、推理加速库 ATB、异构计算框架 CANN 等所具备的能力,如何与现有业界大模型推理引擎相融合,也是非常重要的。
02国产化思考
国产化芯片推理引擎架构大致有以下几种。
1. 推理引擎架构 1
第一种架构是在不同引擎之上构建较薄的桥接层,这是许多中小公司的选择,因其推理团队能力不强。这种架构的最大问题是完全依赖开源能力,若底层引擎能力欠佳,就难以支撑业务发展。实际上,大公司内部都有自己的推理引擎,不会直接使用开源引擎,所以这种架构难以提供良好的推理能力。而且,由于 vLLM、TRT-LLM 或 MindIE 提供的上层 Python 接口的限制,在桥接层只能进行较薄的 Python 封装,操作非常受限。
2. 推理引擎架构 2
第二种推理引擎架构为上层设置桥接层,并对开源引擎深度优化,不少公司采用该架构。例如在 vLLM 上深度优化以支撑业务。vLLM 有很厚的 Python 层,调度逻辑等大部分逻辑都在 Python 层实现,所以在这一层可做的事很多。但这里涉及一个重要问题,在与开源项目同步时,由于开源社区活跃,当从开源项目分出一个分支并开发很多功能时,如果不能向开源社区回馈(做主要贡献者),分支上的代码会越来越多,难以合并,问题严重。这样分支就变成自己的东西,在大模型推理技术快速发展的情况下,仍需维持较大的开发团队不断开发新功能。
3. 推理引擎架构 3
第三种推理引擎架构:在开源引擎深度优化,同时支持 NPU 和 GPU。NPU 的支持仍依赖 MindIE,如 vLLM 在 kernel 层对接 NPU kernel,这里还会涉及布局和内存管理等问题。此方案需较多人力,中小公司不适用,大公司多有自己的引擎。其缺点为基于外部开源项目会遇代码同步问题,即便不同步也需团队维护新功能,且团队开发能力要强,要同时支持 GPU 和 NPU。
4. 推理引擎架构 4
第四种架构为完全自研推理引擎,同时支持 NPU 和 GPU,是一个从 0 到 1 的构建过程。这种方案下需要庞大的开发团队,因该领域新技术多且要支持多种硬件,人力支持是关键。这种架构的软件架构需精心设计,设计时要构建适合自身场景的架构。并且需要硬件厂商的支持,像 ATB 这类算子库华为是不开源的,所以必然需要在公司或团队层面与硬件厂商建立非常紧密的合作关系,这样的引擎才有可能构建起来。这些都是在构建能够支持国产化芯片或者异构芯片的架构时需要考虑的因素。
03国产化实践
在国产化推理引擎实践中,主要遇到的问题包括性能下降、利用率不高以及模型支持迭代效率低。依赖外部引擎时,对于新模型的快速应用和需求响应速度较慢,这在实际国产化使用过程中是一个显著问题。
04未来展望
未来一定会很快出现同时支持 NPU 和 GPU 的高性能大模型推理引擎,这是各厂商的必备要素。在这种情况下,如何构建国产化芯片生态就变得格外重要。高性能引擎将有助于挖掘国产芯片潜力,并提升其竞争力。
05问答环节
Q1:有的公司使用 910B 但不用 MindIE,而是基于 vLLM 开发?
A1:是的,很多公司会选择在开源项目基础上进行二次开发。因为开源框架提供的能力往往与业务需求有一定差距,而公司通常会有专门的推理团队对这些开源项目进行深度开发,以同时支持 NPU、GPU,并适应特定的业务场景需求。
Q2:从 0 到 1 搭建一个大型推理框架大概需要多少人力成本?
A2:人力成本取决于目标和要支持的业务场景复杂度。搭建基础框架可能只需要较短的时间,比如有的仅用两个月就开发了一个性能与 vLLM 相当的大模型推理引擎。但若要构建一个具备丰富完整功能、适应多种模型和业务场景的框架,则需要更多的人力投入,尤其是在保证稳定性方面更具挑战。
Q3:对于同模型异构芯片推理精度的误差校验,该如何考虑和处理?
A3:在支持异构芯片时,精度校验是一个关键问题。京东依赖华为提供的精度校验工具以及自身的方法来排查和校准精度对齐问题,因为不同芯片在接口、数据布局等方面存在差异。
Q4:大模型推理框架主流是否都采用 Python,而非 C++ 或其他语言?
A4:不同框架对 Python 的依赖程度不同,若 Python 层较薄,对性能影响较小;但如果复杂逻辑都在 Python 中,尤其是高并发逻辑,将会影响框架的整体性能。因此,在设计框架时需考虑 Python 层的厚度,部分框架已通过减薄 Python 层来提高性能。纯 C++ 编写也可以实现高效运行。