From 98bac49cdc7de9a20f2b5c7f46b1713d7159c9b1 Mon Sep 17 00:00:00 2001 From: hbhu_bin Date: Tue, 10 Sep 2024 16:08:35 +0800 Subject: [PATCH] add O2 docs multi_level_compilation: add O1 introduce --- .../design/multi_level_compilation.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/docs/mindspore/source_zh_cn/design/multi_level_compilation.md b/docs/mindspore/source_zh_cn/design/multi_level_compilation.md index 8b5980200a..232e6f5a89 100644 --- a/docs/mindspore/source_zh_cn/design/multi_level_compilation.md +++ b/docs/mindspore/source_zh_cn/design/multi_level_compilation.md @@ -12,4 +12,19 @@ MindSpore 2.3.0以前的版本,静态图模式采用整图下沉到Device侧 ## 多级编译O1级别介绍 +O1主要定位于在O0基础上实现通用、可泛化的AI编译优化,以支持大部分通用训练、推理场景的更好执行性能需求。 + +在当前阶段,O1主要支持了图算融合优化。其主要思路是在静态图编译阶段,自动识别计算图中相邻的可融合节点,然后将其融合为更大粒度的可执行算子。通过图算融合,实现增加算子计算局部性、减少整体全局内存访存带宽开销等优化效果。通过对15+网络的实测验证,O1能够实现相比O0平均15%的性能加速。特别是对于访存密集型网络,O1优化效果更加显著。图算融合的具体设计细节可参考:[图算融合引擎](https://gitee.com/mindspore/docs/blob/master/docs/mindspore/source_zh_cn/design/graph_fusion_engine.html)。 + +除了图算融合之外,在后续版本中,O1可能会逐步扩展增加一些其它图优化技术。比如: +1. KernelPacket: 用于在动态shape场景对shape计算进行自动融合和优化; +2. 通算融合:将通信算子与计算算子进行融合。 + ## 多级编译O2级别介绍 +O2级别采用图下沉的执行方式,将计算图下沉到Device侧执行。相比于O0和O1模式,O2模式可以基于图的全局信息进行大粒度的图优化,例如图融合、通信算子融合、UB融合等,O2模式将模型下沉到device侧,可以减少host与device之间的交互,提升执行性能。此外,O2模式拥有图的全局信息,通常拥有更优的内存分配策略。 + +O2模式也存在一些缺点,例如: +1. O2模式的编译时间较长,特别是在模型规模变大时。 +2. O2模式的执行粒度为计算图,与算子粒度的用户脚本相比,存在一定的差异,因而调试调优难度较高。 +在中小模型、CV类模型中,若想获得极致的性能表现,建议使用O2级别。 + -- Gitee