深度解读昇腾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侧执行,以减少调度开销。
🏷️