虎泽森-NeuPIMs: NPU-PIM Heterogeneous Acceleration for Batched LLM Inferencing
一、过程反思
(一)过程总结
1.选题过程
选题是根据当时的研究方向进行选择。在确定好了NPU加速大模型推理这个方向后,对这个领域的论文进行了调研和泛读,确定了几篇相关的论文。最后确定为NeuPIMs的原因主要是由于论文中对大模型相关基础的展示和论文的研究思路非常明确,值得深入了解。同时,这篇论文是在Asplos’24上发表的,质量可以保证,并且研究领域比较前沿。因此,在跟导师商量过后,确定了NeuPIMs这篇文章。
2.汇报内容准备过程
最初,我将这篇论文通读了几遍后,大概了解了各个章节的内容。然后,我对论文的各个部分的机制与原理进行了精读,由于第一次接触这个领域的内容,论文很多地方的机制没有研究明白,因此根据论文中的引用文献,进行向外发散阅读论文。最后,根据论文后面相关工作列举的几篇论文,了解了论文的研究现状,从而将论文的各个部分进行连接起来。同时,我也找了网上对于这篇论文的解读,来加深我对这篇文章的理解。
3.PPT制作过程
PPT的制作根据论文的研究思路,同时也加入了自己对于文章的理解,并且根据自己的汇报习惯进行了制作与修改。
(二)反思认识
经过对这篇论文的方班汇报的准备工作,我觉得我最大的收获就是学会了科研的思路。NeuPIMs这篇论文的结构非常清晰,从最开始的发现GPU加速大模型推理速度慢的问题,到寻找问题的原因(大模型推理过程中的两种计算特性不同的操作),从而引出如何解决问题(使用异构加速器),再到发现异构加速器框架不兼容的挑战,从而通过研究和修改PIM框架使得NPU和PIM可以并行执行。这个科研的思路非常清晰。其次,准备过程让我更加深入地理解了大模型推理的现状、挑战和机遇,同时也了解了巧妙的推理系统调度策略。最后,我通过这篇论文的实验部分了解到了大模型在推理过程中需要的Baseline和指标等等。
在汇报完成后,我发现自己对于相关领域的了解还是比较浅,当时阅读相关论文主要目的是了解论文中的一些原语和机制的意思以及关注大模型推理的计算过程,没有刻意关注类似的一些思路与方法。同时当时只参考了NeuPIMs的参考文献,并没有去研究其他相关推理框架的一些机制,导致对这篇文章的扩展有些不足。
二、反响分析
(一)听众反响
1.学生反响
代红千同学: 1. 我不太了解PIM的特性,然后它把这个计算的过程放在了内存里,那它的这个计算能力跟 CPU 比是怎么比较的。然后这个 PIM 技术在采用了之后。因为还要跟 NPU 那边会有交互,NPU和内存之间是不是还存在数据交互的问题?
2. 能不能再介绍一下整个 LLM 它训练过程中的这个主要的性能瓶颈是什么,就是他整个时间就是耗费在这个计算上还是传输上面,因为我看之前好像有提到有一部分是带宽限制了吗。这个方案它能获得这个性能提升,是因为打破了串行的限制?
这位同学的问题主要是对于PIM架构理解以及对于LLM推理过程的问题,NeuPIMs 主要通过减少数据传输、优化带宽利用和提升并行计算能力来提高 LLM 推理性能,而不是单纯依赖计算单元的提升。
王隽奕同学:在处理推理请求的时候,各个操作之间都具有数据依赖。NPU 和 P IM 本身就需要按照顺序执行,那么解决他们之间的并行问题,就可以解除这种数据一代了吗?那不然他们之间的并行有什么意义?
这位同学的问题是针对大模型推理服务的问题,同学可能不太了解,在大模型推理过程中通常对推理请求进行批处理。
2.老师反响
郝萌老师:1. 你的前面有一页关于总结阶段和生成阶段,然后根据它的一个过程,我的理解是总对于一个推理请求来说。总结阶段是只执行一次,剩下的生成阶段的迭代。是那个意思吗?然后关于那个 GEMV 还有GEMM,这两个是分别处于不同的阶段吗?比如说这个 GEMV 是属于总结阶段,然后 GEMM 它是属于生成阶段吗?
2. 还有一个就是大模型的,它的一个推理的过程,一般情况下,我们可能一块设备可能放不下,可能需要利用那个模型分割或者数据分割的这种方式。多块来进行一个协同的计算,那么它的一个实验场景里面,它的这个方法里面有没有涉及到这块,比如说数据并行模型并行,加上它的一个调度策略。
3. 还有一个就是它的一个你比如说批处理我的理解是大模型的推理,这个每一条推理的过程,它的长度及输出结果的长度有长有短。那么放在一个 PP 里面,那么怎么样来进行调度,比如说我有很多可能很快就完成了,但是有几条它生成的长度比较长,那么它有在调度的过程中考虑进去吗?
4. 还有一个就是它的实验,最后一个点就是实验,它最它在 NPU 上和 NPU 加 PR M 的一个实验是基于模拟器?然后他是不是还在实际的 GPU 上来跑,然后进行对比,那么这两个一个是模拟的,一个是实际跑的,这个比较起来有没有可比性,这个领域都是这么做的么?
这位老师的提问涵盖了 LLM 推理阶段划分、计算模式、并行计算、负载均衡及实验可比性,其中:1.总结阶段和生成阶段:总结阶段只执行一次,生成阶段多次迭代,GEMV 主要用于推理,GEMM 主要用于训练或批量推理。2.并行计算和调度:论文主要优化单设备计算,并未深入探讨模型并行或数据并行调度。3.负载均衡问题:论文未涉及 PP 调度优化,长序列推理负载不均衡问题仍待解决。4.实验可比性:如果主要基于模拟器测试,可能存在一定偏差,需结合真实硬件验证。这些也都是这篇论文相对有些不足的点,有些地方介绍到了但是也是一笔带过,没有详细分析。
(二)改进措施
1.必要的论文细节需要提及。
同学们的问题基本都对于论文细节有关,我在准备和分享的过程中,由于汇报的时间只有25分钟,并没有将所有的论文细节都提上去,从而导致同学们在这些细节处难以理解。下次汇报应该站在第三人称的角度去思考,哪些论文细节必须加上,以方便同学们进行理解论文机制。
2.对于之前的相关论文要加强理解。
郝萌老师的问题让我意识到我确实对于相关论文了解不够深入,虽然知道大概的研究方向与思路,但是没有具体去了解这篇论文使用了那些相关研究的工作。并且在PPT汇报中,也特别多的涉及到对于相关工作的介绍。
3.对论文进行更加发散的思考。
郝萌老师提到的论文实验是由模拟器的进行的。我在读论文的过程中,虽然也对这个问题进行思考,但是没有具体去考虑实验的可行性,也就没有真实GPU与模拟的NPU之间的性能是否具有可比性这个问题。但是我需要这些发散的思考来找到论文的不足,从而找到研究方向的切入点,进行科研。
三、作法理解
(一)对老师点评的理解
1.蒋琳老师的点评总结为两点:
这位老师的提问实际上是在深挖论文在实际部署中的问题,主要关注:1.基础概念:GEMV 是否只是 GEMM 的特例?(目的是确认计算模式是否可以统一优化)。2.计算与通信优化:PIM 和 NPU 计算交织时,是否会因数据传输带来额外开销?(目的是探讨论文是否真正解决了推理时的全流程优化,而不仅仅是 PIM 计算本身)。
老师的提问揭示了一个潜在的问题:如果 PIM 加速了 GEMV 计算,但 NPU 仍需处理其他计算任务,且二者间的数据搬运没有优化,可能会导致通信瓶颈抵消 PIM 带来的加速,这需要论文进一步论证其实际加速效果是否可持续。
2.李晓明教授的点评:
这位老师的点评主要引导思考:
1.计算密集型 vs 内存密集型的直觉理解:
GEMM 是计算密集型,因为计算量远大于访存量,受算力限制。GEMV 是内存密集型,因为访存量大,计算需求低,受内存带宽限制。这个区分符合 Roofline Model,决定了优化策略的不同。同时这两个操作的计算特性也与用什么加速器进行加速有关,比如GPU就适合并行计算。
2.NeuPIMs 论文的关键贡献:
观察到 LLM 推理的不同阶段(总结、多头、生成)。发现 GEMV 是LLM生成阶段的主要计算任务,但受内存瓶颈限制。利用PIM技术在生成阶段优化 GEMV 计算,减少内存搬运,提高推理效率。以及涉及到对于NPU和PIM并行性的重要性进行理解。
老师强调了找到对的优化点的重要性,论文的贡献在于精准定位了 LLM 推理的主要瓶颈,并用 PIM 进行针对性的优化,而不是广撒网地优化整个推理过程。
(二)优化作法
第一,以后精读论文时,要加大对于相关论文、研究现状的了解。通过本次汇报,我发现了我在精读文章的过程中,虽然也去找了相关的论文,但是更多的是利用相关论文来理解一些原语、机制和思路等,并没有着重去了解相关的研究和方法。这就导致我对于文章的理解不够,知其然不知所以然。
第二,要以发散的思维去阅读和思考文章。就像前面同学和老师提的一些其他角度的问题,这个发散的思维就是论文问题的切入点,也就是创新点。有切入点之后,就可以针对具体问题进行研究科研。
第三,制作PPT和汇报时更加的注重细节。要注意在PPT制作时的一些原则问题,比如,PPT页面之间的联系,PPT页面内容不要太空,总结文字对齐并且不要口语化等等。
第四,在以后精读论文时,要增加一个转化的环节。将论文的思路、机制、方法和实验通过自己的感觉和思路预演一遍,从而加深对于论文的理解,并且利用一些生动的例子或者比喻进行讲述,这样从深层次的理解论文。
(审核 蒋琳)