文章分类 - 上手MindSpore系列
摘要:在上一篇文章中,我讲到了算子的基本概念以及MindSpore中主要的三类算子接口(operations、functional和composite)。所以,在这篇文章中,我想针对其中的某些算子(我遇到过的)来进行一些简单的讲解。 1 .mindspore.ops.ReLU ReLU其实是一个非线性的激
阅读全文
摘要:在开始之前,首先声明本篇文章参考https://www.mindspore.cn/docs/programming_guide/zh-CN/r1.3/quick_start/quick_start.html,我基于官网的这篇文章加以自己的理解发表了这篇博客,希望大家能够更快更简单直观的体验MindS
阅读全文
摘要:在开始之前,首先声明本篇文章参考https://www.mindspore.cn/docs/api/zh-CN/r1.3/api_python/mindspore.mindrecord.html#module-mindspore.mindrecord和,我基于官网的这篇文章加以自己的理解发表了这篇博
阅读全文
摘要:MindSpore代码评析(一)从计算图开始,带你看MindIR(上) 一、计算图初步 当我们学习深度学习框架的时候,有时会不理解计算图的概念。我就曾经以为计算图是对图形进行的某种操作,但是在查阅相关资料后,发现计算图是一个以算子(Operators)为节点的有向图所表达的计算函数,由计算流转变而来
阅读全文
摘要:MindSpore代码评析(二)从计算图开始,带你看MindIR(下) 上一部分,我们看了MindIR的基本信息,但是脱离代码空谈是无意义的,这一次就让我们结合代码来看看。 一、MindIR代码实现 在MindIR的实现时,我们主要看IrExportBuilder类的定义。 class IrExpo
阅读全文
摘要:MindSpore代码评测(三)动态图模式初学与代码鉴赏 在 MindSpore 中,称动态图模式为 Pynative ,这是因为代码使用 Python 解释器在这种模式下运行。在了解Pynative前,我们需要先了解什么是动态图所属的计算图,这方面可以看我之前的博客:MindSpore代码评析(一
阅读全文
摘要:在Graph模式下,Python代码并不是由Python解释器去执行,而是将代码编译成静态计算图,然后执行静态计算图。 关于计算图,我在之前的博客中有讲解,如果对此缺少了解,请查看: MindSpore代码评析(一)从计算图开始,带你看MindIR(上) MindSpore代码评析(二)从计算图开始
阅读全文
摘要:上一篇,我们讲了Graph模式的基本概念以及其和动态图模式之间的差别和优缺点TrustieForge。我们了解到Graph模式的关键点在于对图的优化等,这篇文章就让我们结合cpp代码来看这是如何实现的。 我们要讲解的代码模块位于pipeline/jit/action.cc下的pipeline::ru
阅读全文
摘要:pipeline模块负责图编译与执行,具体包括ME(Mindexpression)图编译功能、ME图到GE(Graphengine)图转换功能,以及GE 图执行功能等。其主要实现过程将之前抽象化的树转变为ANF图,对ANF图进行分析,将其转变为GE图,最后执行GE图,来实现MindSpore的图形处
阅读全文
摘要:session为不同后端提供图优化与编译、算子选择与编译、硬件资源管理、图控制与执行等功能或功能入口。 一、session 模块中各个文件的主要功能 1 anf_runtime_algorithm 负责处理结点,如获取其真实输入、获取anf结点的真实内核。 2 ascend_control_pars
阅读全文
摘要:书接TrustieForge,继续对kernel_graph.cc中的主要代码进行分析 11 GetRefCorrespondOutput 获取输出匹配节点对 bool KernelGraph::IsInRefOutputMap(const AnfWithOutIndex &pair) const
阅读全文
摘要:首先根据之前的学习,我们已经知道了ANF是MindSpore中计算图的表示形式,它存在于前后端,在ME层的pipeline中经过优化,之后会在GE层编译运行。 在本博客中,多次出现了front_anf和backend_anf。front_anf指的是在ME层优化过的计算图,而backend_anf则
阅读全文
摘要:MindSpore代码评析(十)MindSpore中的差分隐私(上) 一、数据隐私保护的背景 在我们进行机器学习实践时,我们能找到不少医院、保险集团等机构发布的数据,这些机构发布这些数据是为了公共的科学研究。为防止隐私泄露问题,他们会特地删除数据中所有个人敏感信息,例如身份证号、姓名、住址等,但是即
阅读全文
摘要:书接上文MindSpore代码评析(十)MindSpore中的差分隐私(上),在了解差分隐私的基础和实现机制后,我们将逐步了解MindSpore中差分隐私的实现。 一、总体介绍 位于MindSpore整体框架下的MindArmour(代码地址)关注AI的安全和隐私问题。致力于增强模型的安全可信、保护
阅读全文
摘要:一、整体介绍 从华为的官方文件MindSpore中,我们了解到差分隐私优化器继承了MindSpore优化器的能力,并使用差分隐私的噪声机制对梯度加保护。目前,MindArmour提供三类差分隐私优化器:固定高斯优化器、自适应高斯优化器、自适应裁剪优化器,每类差分隐私优化器从不同的角度为SGD、Mom
阅读全文
摘要:一、前言 在之前的学习中,我通过华为工程师发布的博客、钻研代码,初步理解了华为MindIR的概念和GHLO的相关概念,也编写了多篇相关的博客: MindSpore代码评析(一)从计算图开始,带你看MindIR(上) MindSpore代码评析(二)从计算图开始,带你看MindIR(下) MindSp
阅读全文
摘要:上篇博客我们学习了GE层的基础概念,这篇博客我们从GE的组成出发来细致讨论GE层做了什么以及是怎么做的。 一、GE层组成 GE主要由GE API和GE Core两部分组成,详细的架构图如下图所示。 其中,GE API是连接前端模块ME和GE Core的接口,负责GE Core中初始化、Session
阅读全文
摘要:一、算子拆分基础概念 绝大部分算子都是可以拆分为若干更为基本的算子组成的的子图。在实际使用中,MindSpore会对计算图进行三个阶段的处理。 1)为了避免对已有网络的直接修改,并实现优化,我们会自动将复合算子展开成复合算子图; 2)将相邻的复合算子子图聚合成更大的聚合算子子图; 3)根据融合策略,
阅读全文
摘要:一、算子融合基础概念 MindSpore图算融合优化是通过分析和优化现有网络计算图逻辑,对原有计算逻辑进行拆分、重组、融合等操作,以减少算子执行间隙的开销并且提升设备计算资源利用率,从而实现网络整体执行时间的优化。那么算子融合是怎么实现的呢?MindSpore会将一定范式组合的算子融合成为一个大的算
阅读全文
摘要:Mindspore作为深度学习著名框架,在其进行深度学习的过程中,海量的参数和大批次的运算是不可避免的。因此,Graph Compiler的出现有助于应对这种庞大的计算需求。Graph Compiler对深度神经网络进行压缩并简化操作,使其在运行速度变快的同时也消耗了更小的资源和内存。 图编译器与硬
阅读全文