华为深度学习框架MindSpore正式开源:自动微分不止计算图

今年的华为开发者大会 hdc 2020 上,除了昇腾、鲲鹏等自研芯片硬件平台之外,最令人期待的就是深度学习框架 mindspore 的开源了。今天上午,华为 mindspore 首席科学家陈雷在活动中宣布这款产品正式开源,深度学习引擎我们终于可以在开放平台上一睹它的真面目。作为一款「全场景 ai 框架」,mindspore 是华为人工智能解决方案的重要组成部分,与 tensorflow、pytorch、paddlepaddle 等流行深度学习框架对标,旨在大幅度降低 ai 应用开发门槛,让人工智能无处不在。mindspore 是一款支持端、边、云独立/协同的统一训练和推理框架。华为希望通过这款完整的软件堆栈,实现一次性算子开发、一致的开发和调试体验,以此帮助开发者实现一次开发,应用在所有设备上平滑迁移的能力。原生支持 ai 芯片,全场景一致的开发体验——除了这些我们早已知晓的强大之处外,今天华为还着重展示了 mindspore 的三大创新能力:新编程范式,执行模式和协作方式。
今天发布的 mindspore 首个开源版本为 0.1.0-alpha 版,主要由自动微分、自动并行、数据处理等功能构成。华为表示,mindspore 具备开发算法即代码、运行高效、部署态灵活的特点,其核心分为三层:从下往上分别是后端运行时、计算图引擎及前端表示层。mindspore 开源社区:/mindspore从整体上来说,mindspore 搭建神经网络会以「单元」为中心,其中单元是张量和运算操作的集合。从输入张量开始,mindspore 会提供各种算子以构造一个「单元」,最后模型封装这个单元就可以用来训练、推理了。
mindspore 的整体结构,从后端的硬件支持到前端 api,中间会涉及多种优化与特性。例如不采用计算图的自动微分、自动并行与优化计算过程等等。mindspore 最大的特点在于,其采用了业界最新的 source-to-source 自动微分,它能利用编译器及编程语言的底层技术,进一步优化以支持更好的微分表达。自动微分:不止计算图自动微分是深度学习框架的灵魂,有了它我们写模型就只需要关注前向传播,将所有复杂的求导、反传过程都留给框架。一般而言,自动微分指一种自动求某个函数其导数的方法。在机器学习中,这些导数可以更新权重。在更广泛的自然科学中,这些导数也能用于各种后续计算。
人类擅长以解析式推导微分,计算机擅长数值微分。一般而言,自动微分都是需要建立计算图的,有了计算图才能追踪各函数、变量的依赖情况,并进一步根据链式法则传递梯度。然而对于 mindspore 来说,它并不依赖于计算图,而是通过一种名为「基于源码转换」的自动微分方法,它支持 if、for 等复杂的控制流结构,以及灵活的函数式编程方式。自动微分本质上是解析变量间的依赖关系,并利用全微分法则与链式求导法则将梯度传递给不同的变量。