深度解读昇腾CANN小shape算子计算优化技术,进一步减少调度开销

💡 原文中文,约1800字,阅读约需5分钟。
📝

内容提要

本文介绍了昇腾CANN小shape算子计算优化技术,通过将小shape算子保留在Host侧执行,减少调度开销带来的性能影响。优化后,模型执行性能显著提高。

🔎

延伸解读

动态shape下的调度挑战

当模型输入tensor的shape不固定时,无法像静态shape那样将整个模型下沉到Device执行,只能采用Host调度模式。此时,每个算子的调度都需要在Host CPU上完成shape推导、tiling、内存分配和launch等任务,这些调度开销在算子计算量较小时会显得尤为突出。

小shape算子的识别与处理

GE在编译阶段会识别适合在Host侧执行的小shape算子,具体做法是以Host侧算子为锚点,向后递归查找计算数据个数小于8的算子,并将其执行引擎修改为Host CPU。这样,这些算子的计算直接在Host完成,避免了额外的下发和同步开销。

优化效果的量化体现

优化后,模型执行时间从毫秒级降至微秒级,例如某场景下E2E耗时从3毫秒减少到约10微秒。在LLaMA2大语言推理模型中,约650多个算子被刷新,E2E耗时从1.062秒降至1.009秒,吞吐提升5%,验证了该技术对动态shape模型性能的显著改善。

❓

Q&A

昇腾CANN小shape算子计算优化技术的主要目标是什么?

主要目标是减少调度开销带来的性能影响。

在Host调度模式下,算子的执行单元是如何划分的?

算子的执行单元分为Host CPU执行和Device执行两类。

为什么小shape算子的调度开销需要优化?

因为小shape算子的调度开销往往大于实际计算开销。

优化后,模型的E2E执行时间有何变化?

E2E执行时间从3毫秒减少到约10微秒。

以LLaMA2模型为例,优化后的吞吐量提升了多少?

吞吐提升了5%。

GE是如何识别并优化小shape算子的?

GE识别小shape算子并将其保留在Host侧执行,以减少调度开销。

🏷️

标签

➡️

继续阅读