MindSpore四层架构
模型层:预置的模型和开发套件
表达层:提供AI模型开发、训练、推理的接口。支持原生python开发和调试神经网络。具备动静图统一能力。
编译优化:AI框架的核心,以MindIR(全场景中间统一表达)为媒介,前端表达—》执行效率更高的底层语言
硬件无关优化:自动微分、代数化简
硬件相关优化:图算融合、算子生成
运行时:安装上层编译优化结构 ———对接调用———》底层硬件算子
函数式和对象式融合编程范式
MindSpore支持的三类编程范式
- 面向对象编程
- 函数式编程
- 函数式 + 面向对象融合编程
会在后面笔记详细记录
动态图和静态图结合
传统AI框架主要有两种编程执行形态:静态图模式和动态图模式
TensorFlow是静态图模式,Pytorch是动态图模式
MindSpore基于原生Python构建神经网络的图结构,基于Python语句提取AST进行计算图构建。
用户可以基于MindSpore的接口,灵活的对Python代码片段进行动静态图模式控制。即可以将程序局部函数以静态图模式执行而同时其他函数按照动态图模式执行。
会在后面笔记详细记录
分布式并行
将任务分配给多个计算资源
这里涉及到
- 数据并行
- 半自动并行:分布式算子、张量排布、分布式自动微分、多维混合并行等
- 全自动并行
- 异构并行
会在后面笔记详细记录
图算融合
在AI框架设计方面,图层负责对计算图进行融合或重组,算子层负责将融合或重组后的算子编译为高性能的可执行算子。
图层通常采用基于Tensor的High-Level IR的处理和优化,算子层则采用基于计算指令的Low-Level IR进行分析和优化。
MindSpore 采用了图算融合的技术解决了图、算两层进行协同优化难的问题
会在后面笔记详细记录
昇腾硬件的竞争力优化
昇腾芯片上集成了AI CORE、AI CPU和CPU
其中,AICORE负责大型Tensor Vector运算,AICPU负责标量运算,CPU负责逻辑控制和任务分发
Host侧CPU负责将图或算子下发到昇腾芯片。昇腾芯片由于具备了运算、逻辑控制和任务分发的功能,所以不需要与Host侧的CPU进行频繁的交互,只需要将计算完的最终结果返回给Host侧,实现整图下沉到Device执行,避免Host-Device频繁交互,减小了开销。
On Device中的Device通常指Ascend(昇腾)AI处理器。循环下沉是在On Device执行的基础上的优化,目的是进一步减少Host侧和Device侧之间的交互次数。