MobiSys‘24 Workshop:Deep Learning Inference on Heterogeneous Mobile Processors: Potentials and Pitfalls
Liu S, Zhou W, Zhou Z, et al. Deep Learning Inference on Heterogeneous Mobile Processors: Potentials and Pitfalls[C]//Proceedings of the 2024 Workshop on Adaptive AIoT Systems. 2024: 1-6.
随着计算密集型深度学习模型逐渐从云端转向移动设备,嵌入式异构芯片在实时智能应用中发挥着越来越重要的作用。这些芯片整合了多种异构处理单元,如 CPU、GPU、DSP 和 NPU,为并行执行深度学习推理提供了巨大的潜力,从而推动了通过异构资源的并行执行来加速深度学习推理的趋势。如下图所示,这涉及将深度学习计算映射到最适合执行的处理器上,并在两个层次上进行:i) 在资源友好的前端编译层次上,将深度学习模型编译成计算有向无环图(DAG);ii) 在模型自适应的后端编译层次上,将有向无环图算子映射并调度到异构计算 / 存储资源上进行并行执行。通过并行处理和优化计算任务的分配,这些异构芯片能够提高深度学习推理的效率,满足移动设备上各种实时智能应用的需求。
现有的并行策略主要集中在优化计算分布、实现负载平衡以及最小化处理器之间的通信开销。然而,这些策略在实际移动环境中的效果和适用性尚未得到充分的验证。移动设备的环境复杂多变,包括不同的硬件配置、软件生态系统和运行时资源的可用性。这些因素使得在实际应用中,既要保证并行推理的高效性,又要应对处理器不支持操作符和资源竞争等问题,成为了一项复杂的挑战。
该论文评测了现有的并行推理策略及其在不同移动设备上的性能表现,特别关注在多处理器并行推理中常见的算子回退现象及其对性能的影响。同时,该论文讨论了跨层优化的机会,通过结合前端编译和后端编译优化策略,来提高资源利用率和推理速度。此外,该论文也探讨并行调度粒度与移动设备资源动态性之间的关系,评估在多任务应用环境中,处理器资源利用率与用户交互性能之间的权衡。
现有的并行推理策略试图在异构处理器之间分配计算负载,以最大化资源利用率和加速推理。但是,不同的并行策略在不同的模型、不同的设备上是否表现一致呢?是否存在一种最优的并行策略了?
针对这一问题,该文章评测了六种推理策略在五个模型 / 三个移动设备上的表现。结果如图所示:
实验表明,不同并行策略在不同深度学习模型和移动设备上表现出不同的加速性能。在骁龙 855 芯片设备上,CoDL 使用图像数据类型实现了最佳的并行推理加速,而在麒麟 985 芯片设备上,其延迟相较于单独在 GPU 上运行,提升了 1.4 到 1.8 倍。这是由于 Adreno 和 Mali 架构 GPU 在缓冲区和图像数据类型支持上的差异造成的。
其次,在某些情况下,在单个处理器上执行推理可能比在异构处理器之间分配更高效。使用 μLayer 在 CPU 和 GPU 上并行推理 Fast Style Transfer 模型时,其速度比单独在 GPU 上运行慢 1.9 到 3.1 倍,这是由于调度开销造成的。实验表明,不同策略在不同的移动设备和模型组合上表现出不同的推理速度。此外,实验还发现,在某些情况下,在单一处理器上执行推理的性能可能优于跨异构处理器的并行推理。这种情况通常出现在涉及高数据传输和调度开销时。例如,某些策略在执行 Fast Style Transfer 模型的推理时,由于调度开销,导致并行推理的速度比单独在 GPU 上推理要慢。
因此,不同的并行策略在不同模型上的性能各异,即使在同一并行策略内,性能也存在差异。没有一种适用于所有情况的并行策略,适应性对于提高不同移动平台和模型的资源利用率至关重要。
在后端编译层次生成的算子并非所有异构芯片都支持计算,对于不支持计算的算子会导致算子回退现象。例如,当 GPU 遇到不支持的算子时,深度学习计算会回退到 CPU,导致进程挂起和资源未充分利用。
为了测试现有并行推理策略中不受支持的算子的存在,该文章在骁龙 855 移动设备上评估了六种推理方案在四种不同深度学习模型中的表现,结果如图所示:
不受支持的算子在不同的并行方案和深度学习模型中普遍存在。这些不受支持的算子会触发处理器回退,导致计算从 GPU、DSP 等专用加速器回退到 CPU 执行。而算子回退导致资源闲置和进程等待,显著影响性能表现。例如,在 ResNet-50 模型的测试中,CPU 和 GPU 并行推理的算子不支持率高达约 48%。作者注意到,跨处理器并行推理引入了新的算子,进一步减少了受支持的算子的百分比。
因此,在后端编译阶段,考虑算子的支持情况以进行跨处理器分配至关重要。此外,自适应重分配策略可以在运行时动态调整计算任务,增强未充分利用的处理器资源的使用效率,从而提高整体性能。
现有的深度模型通常表现出过度参数化,因此可以在有向无环图转换之前进行优化,结合前端编译层次的优化(如剪枝等技术)可以降低模型的参数量,并加速后端的深度模型推理。此外,在模型自适应的后端编译层次进行算子融合、并行推理等优化,可以拓宽前端优化的边界。因此,结合前后端优化技术的跨层优化可以更好地提高资源利用率和加速推理。为了评估跨层优化在提高深度模型推理中的潜力,该文章在 ResNet-18 上评测了各种技术与 CoDL,如表所示:
前端编译的优化也可以提高资源利用率并加速 DL 推理。低秩分解通过利用较小的秩矩阵减少内存访问,降低了 7.37% 的延迟。通道剪枝通过消除冗余通道进一步减少了 31.19% 的延迟。而后端编译层面的优化,如算子融合和 CoDL 并行性,可以提高资源可用性,扩大前端编译的优化空间,同时牺牲较少的准确性以满足资源预算。CoDL 在 CPU 和 GPU 上并行推理加速了 11%,算子融合显著减少了 35% 的延迟。跨层优化优化了准确性和效率的权衡,通过结合剪枝、算子融合、内存分配和 CoDL 实现了最佳的权衡,减少了 48.4% 的延迟。
在移动异构多处理器设备上,过大的调度粒度可能导致芯片内核空闲,削弱多处理器的效率。相反,过细的粒度可能由于增加的数据传输延迟导致进程暂停和阻塞。
为了测试并行调度粒度在现实世界移动环境中的影响,该文章在骁龙 855 上使用不同的并行粒度对 Resnet-50 进行了实验。作者通过引入不同数量的竞争进程来模拟深度模型推理下的动态环境。结果如图所示:
从图中数据可以看出,粗粒度的并行粒度(即子图调度)在没有竞争进程时表现出最佳性能,这是因为粗粒度的数据同步时间较短,次数较少,能够充分利用大块的空闲资源。但是,当存在竞争进程利用空闲资源的时候,粗粒度的并行调度往往并不能很好的利用碎片化的空闲资源。因此,细粒度的并行粒度(即算子并行)在有两个竞争进程时具有较低的延迟,因为更细粒度的并行调度能够充分利用设备的碎片化空闲资源。
因此,如果能够动态地根据当前设备的运行时情况,自适应地调整并行调度的粒度,则可以更好地利用系统资源。但是,对于空闲资源的利用,深度模型推理所占用的资源并不是越大越好,该文章又进行了一个实验来观察最大化资源利用率对用户使用的影响。
现有的深度模型推理往往是采用最大化资源利用率的策略来进行的,但是最大化深度模型推理的资源利用率并不总是导致最佳的系统性能,特别是在多进程应用中,最大化资源利用率往往会影响设备的交互性。该文章以视频播放软件为例,评测了深度模型推理与其他应用之间的性能权衡。通过使用自动点击软件,作者能够保证系统拥有相同的 UI 渲染帧率和工作负载。在此条件下,作者获得了在没有任何深度模型模型推理任务的情况下,用户使用视频播放应用时的帧丢失率和 GPU 利用率,结果如图所示:
由实验结果可知,深度模型推理期间过度使用 GPU 的资源会显著导致视频应用刷新中的帧丢失。使用缓冲区类型在 GPU 上利用 Mace 的帧丢失率超过了 90%。其次,与单个 GPU 上的执行相比,并行执行导致较低的帧丢失率,因为并行执行将部分计算负担转移到 CPU,减少了 GPU 的负载,从而降低了 UI 帧丢失率。
因此,对于需要考虑用户交互性的嵌入式设备、移动设备等,深度模型的推理应当设定相应的资源利用阈值,在不影响用户交互性的情况下,尽可能利用资源进行推理。
现有推理策略能够一定程度上提高模型推理速度,但是并没有充分发挥异构芯片的能力。需要重点关注和解决下算子回退现象,以及探讨跨层优化的可能性。同时,研究人员需要在并行推理优化技术落地上需要考虑不同调度粒度的并行策略性能和最大化资源利用率对用户使用的影响。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!