AI框架的发展历史:
驱动AI框架演进的五大因素:“ABCDE”:
- 为什么做MindSpore。有两大动力:
- 第一是技术战和贸易战的背景下,华为必须要有自主可控的全场景的计算框架;
- 第二是目前的计算框架仍然存在着大量亟需解决的问题,开发门槛高、运行成本高、部署难度大等等。
- 对于这样的现状,作为MindSpore的工程师希望能够助力普惠AI,就此,我们提出了三点技术创新点,新编程范式,执行模式及协作方式。
AI框架面临的七大挑战:
挑战一:模型规模和复杂度越来越高:
挑战二:从单一的NN向通用张量可微计算演进:
算力和复杂度持续提升:
挑战四:新的编程语言尝试突破Python:
挑战五:动静态图的统一:
挑战六:AI的全场景部署:
挑战七:安全、隐私和保护:
MindSpore开源深度学习框架:
MindSpore愿景与价值:
MindSpore逻辑架构:
MindExpress子系统:
MindCompiler子系统:
MindRT子系统:
MindData子系统:
MindInsight子系统:
MindArmour子系统:
MindSpore特性:自动并行:
MindSpore特性:二阶优化:
- 支持CNN类网络训练加速
- 基于ResNet-1.5@ImageNet2012 训练收敛提速20.6%
MindSpore特性:On-Device执行:
- 整图下沉执行,充分发挥昇腾大算力
- 除了编程,我们在执行这块也做了比较多的工作。当我们的算力越来越强,控制面和数据增强就会变成巨大的瓶颈点。举例来说,现在数据增强的算子和hardwork这套算子库以及卷积和算子执行都下到库上。另外,软件会做很多算子融合功能,把它们从软件上再提升一次性能,整体上会相比于原始方式性能提升10倍以上,这里面还没有跟业界去对比过。
MindSpore特性:全场景部署和协同:
MindSporeIR:
- 关键技术是统一模型的IR应对不同语言场景上层差异,自己定义数据结构把它们全部兼容过来。底下的硬件是我们自己的,软硬协同也是在的。最后是把整个联合起来,这是业界最火的方向。
- MindIR是MindSpore提供的中间表达形式,可以帮助大家实现一次训练多处部署,实现端云互通。简单来说,就是你可以在Ascend、GPU、CPU硬件平台上训练生成MindIR格式的模型,然后快速部署到手机端、推理服务器等环境上,体验到MindSpore的全场景能力。
- 打开MindIR,它是一种基于图表示的函数式IR,定义了可扩展的图结构以及算子的IR表示,它存储了MindSpore基础数据结构,包括计算图、参数权重等。
- MindIR通过统一的算子IR定义,消除了不同后端的模型差异,大家可以基于同一个模型文件在端、边、云不同平台上进行协同任务。
MindSpore Serving:高效部署在线推理服务:
MindSpore初体验:
MindSpore编程概念:Operation:
- Shape推导,根据算子入参的shape推导其输出Tensor的shape应该是什么
- Data_type推导,根据算子入参的数据类型推导其输出Tensor的数据类型
MindSpore编程概念:Cell:
- Cell提供了定义了执行计算的基本模块。Cell的对象可以直接执行。__init__,初始化参数(Parameter),子模块(Cell),算子(Primitive)等组件,进行初始化的校验。construct,定义执行的过程。图模式时,会被编译成图来执行。有一些语法限制。bprop(可选),自定义模块的反向。没有定义这个函数时,会采用自动微分,计算construct部分的反向。
- MindSpore中预定义的Cell主要有:常用loss(SoftmaxCrossEntropyWithLogits、MSELoss)、常用优化器(Momentum、SGD、Adam等)、常用网络包装函数(TrainOneStepCell 网络梯度计算及更新、WithGradCell求梯度)等。
MindSpore案例开发演示: