![]()
![]()
大语言模型推理的两个阶段
根据严明玉团队的研究,大语言模型的推理过程可以分为两个完全不同的阶段,Prefill阶段和Decode阶段。每个阶段的性能瓶颈和挑战各不相同。
这个过程主要依赖于大规模矩阵运算,GPU的计算单元负载较高,且并行性较好,因此,推理的瓶颈主要受到计算能力的制约。这意味着,推理延迟和吞吐量主要取决于GPU的算力。
![]()
相比Prefill阶段,Decode阶段需要逐步生成输出的每个token。
因此Decode阶段的性能更多受到内存访问速度的限制,而不是算力。
研究还指出,推理过程中到底是Prefill慢还是Decode慢,并不是固定的,它与输入和输出的长度密切相关。
![]()
输入较短时,Decode阶段通常是瓶颈;但输入较长时,Prefill阶段的计算量增加,反而可能成为瓶颈。
![]()
影响推理性能的因素
Decode阶段的瓶颈与模型规模也有很大关系。
![]()
对于较小的模型频繁访问KV Cache的Attention计算会成为瓶颈;但对于较大的模型,前馈网络的内存加载成本则可能更加突出。
这意味着,不能简单地将Attention或FFN视为固定的瓶颈,而是需要结合具体情况来判断。
研究团队还对能耗进行了分析,结果显示,大语言模型推理的总能耗几乎全部来自Decode阶段。
输入长度对总能耗的影响很小,而输出的token数量则几乎直接决定了能耗的大小。因此,若要降低能耗,限制输出长度比优化Prefill阶段的计算更为有效。
![]()
在多GPU扩展方面,团队的实验发现,GPU的并行处理并非在所有场景下都能带来性能提升。
对于Prefill阶段,由于计算量大,分摊到多GPU上通常能够提高效率。
在Decode阶段,由于计算量较小,每一步都需要频繁的GPU间通信和同步,这反而可能成为性能瓶颈,导致并行化效果不明显,甚至可能会拖慢速度。
因此,在Decode为主的场景下,单GPU或较轻量的流水并行方案可能更为合适。
![]()
![]()
总结
严明玉教授团队的这项研究为我们提供了一套完整的、系统的框架,帮助我们深入理解大语言模型推理阶段的性能瓶颈。研究表明,推理性能不仅仅取决于算力或Attention计算,还涉及内存带宽、计算和内存的平衡以及系统配置等多方面因素。
对于工程师和研究人员来说,这项研究的意义不仅在于纠正了一些长期存在的误解(如Attention是瓶颈、多GPU一定更快等),更重要的是为后续的优化方向提供了清晰的思路:Prefill和Decode阶段应分别针对其特有的瓶颈进行优化,而不是简单的统一方案。
![]()
随着大语言模型的不断发展,我们必须从系统级别重新审视其性能表现,从而更有效地设计出高效的推理架构,并应对日益增长的计算需求。这项研究不仅为大语言模型的未来发展提供了宝贵的见解,也为优化策略的制定提供了切实可行的指导。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.