云赛道---AI开发框架

MindSpore 旨在提供端边云全场景的 AI 框架。 MindSpore 可部署于端、边、云不同的
硬件环境,满足不同环境的差异化需求,如支持端侧的轻量化部署,支持云侧丰富的
训练功能如自动微分、混合精度、模型易用编程等。

MindSpore 全场景的几个重要特性:
        1、端边云统一的C++ 推理接口,支持算法代码可快速迁移到不同硬件环境执行。

        2、模型统一,端云使用相同的模型格式和定义,软件架构一致。MindSpore 支持
        Ascend、 GPU CPU x86 arm )等多种硬件的执行,一次训练多处部署
        使用。
        3、多样化算力支持。提供统一的南向接口,支持新硬件的快捷添加使用。
        4、模型小型化技术,适配不同硬件环境和业务场景的要求,如量化等。以及端边
        云协同技术的快速应用,如联邦学习等技术。
MindSpore 整体架构分为四层:
        1、模型层,为用户提供开箱即用的功能,该层主要包含预置的模型和开发套件,
以及图神经网络( GNN )、深度概率编程等热点研究领域拓展库;
        2、表达层 (MindExpression ),为用户提供 AI 模型开发、训练、推理的接口,支
持用户用原生 Python 语法开发和调试神经网络,其特有的动静态图统一能力使
开发者可以兼顾开发效率和执行性能,同时该层在生产和部署阶段提供全场景
统一的 C++ 接口;
        3、编译优化(MindCompiler ),作为 AI 框架的核心,以全场景统一中间表达
MindIR )为媒介,将前端表达编译成执行效率更高的底层语言,同时进行全
局性能优化,包括自动微分、代数化简等硬件无关优化,以及图算融合、算子
生成等硬件相关优化;
        4、运行时,按照上层编译优化的结果对接并调用底层硬件算子,同时通过“端-
- 云”统一的运行时架构,支持包括联邦学习在内的“端 - - 云” AI 协同。
MindExpression 层次结构。
High-Level Python API
第一层为高阶 API ,其在中阶 API 的基础上又提供了训练推理的管理、混合精度
训练、调试调优等高级接口,方便用户控制整网的执行流程和实现神经网络的
训练推理及调优。例如用户使用 Model 接口,指定要训练的神经网络模型和相
关的训练设置,对神经网络模型进行训练。
Medium-Level Python API
第二层为中阶 API ,其封装了低阶 API ,提供网络层、优化器、损失函数等模块,
用户可通过中阶 API 灵活构建神经网络和控制执行流程,快速实现模型算法逻辑。
例如用户可调用 Cell 接口构建神经网络模型和计算逻辑,通过使用 Loss 模块和
Optimizer 接口为神经网络模型添加损失函数和优化方式,利用 Dataset 模块对
数据进行处理以供模型的训练和推导使用。
Low-Level Python API
第三层为低阶 API ,主要包括张量定义、基础算子、自动微分等模块,用户可使
用低阶 API 轻松实现张量定义和求导计算。例如用户可通过 Tensor 接口自定义张
量,使用 ops.composite 模块下的 GradOperation 算子计算函数在指定处的导数。
MindSpore 作为全场景 AI 框架,所支持的有端(手机与 IOT 设备)、边(基站与路由
设备)、(服务器)场景的不同系列硬件,包括 腾系列产品、英伟达 NVIDIA
列产品、 Arm 系列的高通骁龙、华为麒麟的芯片等系列产品。
左边蓝色方框的是 MindSpore 主体框架,主要提供神经网络在训练、验证相关的基础
API 功能,另外还会默认提供自动微分、自动并行等功能。
蓝色方框往下是 MindSpore Data 模块,可以利用该模块进行数据预处理,包括数据
采样、数据迭代、数据格式转换等不同的数据操作。在训练的过程会遇到很多调试调
优的问题,因此有 MindSpore Insight 模块对 loss 曲线、算子执行情况、权重参数变量
等调试调优相关的数据进行可视化,方便用户在训练过程中进行调试调优。
AI 安全最简单的方式就是从攻防的视角来看,例如,攻击者在训练阶段掺入恶意数据,
影响 AI 模型推理能力,于是 MindSpore 推出了 MindSpore Armour 模块,为
MindSpore 提供 AI 安全机制。
蓝色方框往上的内容跟算法开发相关的用户更加贴近,包括存放大量的 AI 算法模型库
ModelZoo ,提供面向不同领域的开发工具套件 MindSpore DevKit ,另外还有高阶拓
展库 MindSpore Extend ,这里面值得一提的就是 MindSpore Extend 中的科学计算套
MindSciences MindSpore 首次探索将科学计算与深度学习结合,将数值计算与深
度学习相结合,通过深度学习来支持电磁仿真、药物分子仿真等等。
神经网络模型训练完后,可以导出模型或者加载存放在 MindSpore Hub 中已经训练好
的模型。接着有 MindIR 提供端云统一的 IR 格式,通过统一 IR 定义了网络的逻辑结构和
算子的属性,将 MindIR 格式的模型文件 与硬件平台解耦,实现一次训练多次部署。
因此如图所示,通过 IR 把模型导出到不同的模块执行推理。
在运行程序之前,应配置 context 。如果没有配置,默认情况下将根据设备目标进行
自动设置。
其中数据文件包含文件头、标量数据页、块数据页,用于存储用户归一化后的训练数
据,且单个 MindSpore Record 文件建议小于 20G ,用户可将大数据集进行分片存储为
多个 MindSpore Record 文件。而索引文件则包含基于标量数据(如图像 Label 、图像
文件名等)生成的索引信息,用于方便的检索、统计数据集信息。数据文件中的文件
头、标量数据页、块数据页的具体用途如下所示:
文件头 :是 MindSpore Record 文件的元信息,主要用来存储文件头大小、标量
数据页大小、块数据页大小、 Schema 信息、索引字段、统计信息、文件分区信
息、标量数据与块数据对应关系等。
标量数据页 :主要用来存储整型、字符串、浮点型数据,如图像的 Label 、图像
的文件名、图像的长宽等信息,即适合用标量来存储的信息会保存在这里。
块数据页 :主要用来存储二进制串、 NumPy 数组等数据,如二进制图像文件本
身、文本转换成的字典等。
MindSpore Record 数据格式具备的特征如下:
        1、实现数据统一存储、访问,使得训练时数据读取更加简便。
        2、数据聚合存储、高效读取,使得训练时数据方便管理和移动。
        3、高效的数据编解码操作,使得用户可以对数据操作无感知。
        4、可以灵活控制数据切分的分区大小,实现分布式数据处理。
静态图模式比较适合网络固定且需要高性能的场景。在静态图模式下,基于图优化、
计算图整图下沉等技术,编译器可以针对图进行全局的优化,因此在静态图下能获得
较好的性能,但是执行图是从源码转换而来,因此在静态图下不是所有的 Python 语法
都能支持。
nn.Cell 类,是构建所有网络的基类,也是网络的基本单元,定义网络结构是需要继承
该类,具体使用可以参考课程后面的应用案例部分。
ms_function MindSpore 中提供的用于加速动态图执行效率的工具。
通过前端的 Python API ,调用到框架层,最终到相应的硬件设备上进行计算。
PyNative 下执行正向过程完全是按照 Python 的语法进行执行。
拓展:在 PyNative 下是基于 Tensor 进行实现反向传播的,我们在执行正向过程中,将
所有应用于 Tensor 的操作记录下来,并针对每个操作求取其反向,并将所有反向过程
串联起来形成整体反向传播图(简称反向图)。最终,将反向图在设备上进行执行计
算出梯度。
MindSpore 中,我们可以通过控制模式输入参数来切换执行使用动态图还是静态图。
但是,由于在静态图下,对于 Python 语法有所限制,因此从动态图切换成静态图时,
需要符合静态图的语法限制,才能正确使用静态图来进行执行。
MindIR MindSpore 提供的中间表达形式,可以帮助大家实现一次训练多处部署,实
现端云互通。简单来说,就是你可以在 Ascend GPU CPU 硬件平台上训练生成
MindIR 格式的模型,然后快速部署到手机端、推理服务器等环境上,体验到
MindSpore 的全场景能力。
MindIR 通过统一的算子 IR 定义,消除了不同后端的模型差异,大家可以基于同一个模
型文件在端、边、云不同平台上进行协同任务。
中间表示 ( intermediate representation IR) 指编译器对于源程序进行扫描后生成
的内部表示,代表源程序的语义和语法结构,编译器的各个阶段都在 IR 上进行分析或
优化变换,因而它对编译器的整体结构、效率和健壮性都有着极大的影响。中间表示
对提高编译器的可移植性以及代码生成起到关键作用,在编译器的研究中,应该设计
一种结构良好的中间表示,这种中间表示应在适当的抽象层次上,向上能支持多语言
的映射,向下能适应多平台转换且易于进行各种优化
打开 MindIR ,它是一种基于图表示的函数式 IR ,定义了可扩展的图结构以及算子的 IR
表示,它存储了 MindSpore 基础数据结构,包括计算图、参数权重等。
计算流程:
        用户设置网络执行的后端(device );
        用户设置特定算子执行后端;
        框架根据计算图算子标志进行切图。
        框架调度不同后端执行子图。
当前典型使用异构并行计算的场景有:优化器异构 Embedding 异构 PS 异构
MindSpore 抽象各个硬件下的统一算子接口,因此,在不同硬件环境下,网络模型的
编程代码可以保持一致。同时加载相同的模型文件,在 MindSpore 支持的各个不同硬
件上均能有效执行推理。 推理考虑到大量用户使用 C++/C 编程方式,因此提供了 C++
的推理编程接口,相关编程接口在形态上与 Python 接口的风格较接近。
离线模块:
        3rd Model Parsers: 将第三方模型转换为统一的 MindIR ,其中第三方模型包括
        TensorFlow、 TensorFlow Lite Caffe 1.0 ONNX 模型。
        MindIR: MindSpore端云统一的 IR
        Optimizer: 基于 IR 进行图优化,如算子融合、常量折叠等。
        Quantizer: 训练后量化模块,支持权重量化、激活值量化等训练后量化手段。
        benchmark: 测试性能以及调试精度的工具集。
        Micro CodeGen: 针对 IoT 场景,将模型直接编译为可执行文件的工具。
在线模块:
        Training/Inference APIs: 端云统一的 C++/Java 训练推理接口。
        MindRT Lite: 轻量化的在线运行时,支持异步执行。
        MindData Lite: 用于端侧数据处理
        Delegate: 用于对接专业 AI 硬件引擎的代理。
        Kernels: 内置的高性能算子库,提供 CPU GPU NPU 算子。
        Learning Strategies: 端侧学习策略,如迁移学习。
https://www.mindspore.cn/mindinsight/docs/zh-CN/r1.7/index.html
提供的高级功能包括:
        分类: 建立在引擎系统上的深层神经网络工作流程。
        主干网络: ResNet MobileNet 等模型的基础主干网络。
        引擎: 用于模型训练的回调函数。
        数据集: 面向各个领域的丰富的数据集接口。
        工具: 丰富的可视化接口和 IO( 输入 / 输出 ) 接口。
MindSpore Golden Stick 除了提供丰富的模型压缩算法外,一个重要的设计理念是针
对业界种类繁多的模型压缩算法,提供给用户一个尽可能统一且简洁的体验,降低用
户的算法应用成本。
云环境相较于本地环境提供了充足的算力和存储空间,是开发过程中一个较好的选择。
此次应用所使用的是开源数据集,所以不需要对数据集本身做太多处理。如果使用的
数据是收集的相关业务数据,还需要对数据做清洗和整理等操作。
mindspore.dataset.vision 此模块用于图像数据增强,包
c_transforms py_transforms 两个子模块。 c_transforms 是使用 C++ OpenCv
开发的高性能图像增强模块。 py_transforms 是使用 Python Pillow 开发的图像增强
模块。
mindspore.dataset.text :此模块用于文本数据增强,包括 transforms utils 两个
子模块。
▫ transforms 是一个高性能文本数据增强模块,支持常见的文本数据增强处理。
▫ utils 提供了一些文本处理的工具方法。
mindspore.dataset.audio 此模块用于音频数据增强,包括 transforms utils 两个
子模块。 transforms 是一个高性能音频数据增强模块,支持常见的音频数据增强操
作。 utils 提供了一些音频处理的工具方法。
MindSpore 中,自定义网络结构、损失函数等可以通过继承对应的父类来快速创建。
具体函数及类的使用请参看 MindSpore 文档: https://www.mindspore.cn/docs/zh
CN/r1.7/index.html
MindSpore 中神经网络的基本构成单元为 nn.Cell 。模型或神经网络层应当继承该基类。
基类的成员函数 construct 是定义要执行的计算逻辑,所有继承类都必须重写此方法。
训练网络模型的过程中,实际上我们希望保存中间和最后的结果,用于微调( fine
tune )和后续的模型部署和推理。且当模型过于庞大时,需要边训练边保存。
第二种保存方式首先需要初始化一个 CheckpointConfig 类对象,用来设置保存策略。
▫ save_checkpoint_steps 表示每隔多少个 step 保存一次。
▫ keep_checkpoint_max 表示最多保留 CheckPoint 文件的数量。
▫ prefix 表示生成 CheckPoint 文件的前缀名。
▫ directory 表示存放文件的目录。
创建一个 ModelCheckpoint 对象把它传递给 model.train 方法,就可以在训练过程中使
CheckPoint 功能了。
由于移动端算力不足问题,需要考虑模型的大小和计算量。
答案: ABC

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/3657.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

交互式探索微生物群落与生态功能的关系

微生物群落在生态系统中发挥则重要功能,我们在对微生物群落进行分析时,会将不同分类水平(从门到属)的微生物类群的相对丰度与测定的某一生态功能进行相关性分析。但由于微生物类群数较多,又有不同的分类水平&#xff0…

leetcode-二叉树的镜像-91

题目要求 思路1 1.遍历一遍二叉树,将左边的结点对应创建一个右边的结点 2.用此方法空间复杂度O(n),并不是最优 思路2 1.将一个结点的左右子树进行交换,如果左子树还有左右结点,就再交换左子树的左右结点,以此递归下去…

Kubernetes:云原生时代的核心引擎

文章目录 一、Kubernetes简介:引领云原生潮流二、K8s的核心特性:自动化与智能化三、K8s的实践应用:打造高效云原生应用架构四、K8s的挑战与应对:安全与性能并重五、K8s的未来展望:无限可能与挑战并存《Kubernetes快速进…

【windows-搭建Ubuntu22LTS】

一、环境要求 1. windows版本要求 至少Windows 10 2020年5月(2004) 版, Windows 10 2019年5月(1903) 版,或者 Windows 10 2019年11月(1909) 版 2. 控制面板开启相关的程序(需要重启) 二、Microsoft store安装unbuntu 下载后直接运行(稍微等会&#…

从开发角度理解漏洞成因(01)

文章目录 PHP开发漏洞环境(SQL注入)生成前端代码生成后端代码数据库写功能调试功能 测试SQL注入漏洞字符型注入布尔盲注 PHP开发漏洞环境(SQL注入) 持续更新中… 文章中代码资源已上传资源,如需要打包好的请点击PHPM…

亿道三防onerugged|工业车载电脑在港口正面吊上的应用

港口正面吊是港口作业中至关重要的设备,它承担着装卸集装箱等重要任务。作为专业人员,我深知港口作业的复杂性和挑战性。在这方面,亿道三防onerugged系列的工业车载电脑为港口正面吊的应用提供了一种创新的解决方案。 首先,工业车…

milvus对象存储和消息中间件的工厂设计模式分析

milvus对象存储和消息中间件的工厂设计模式分析 需求 根据参数设置创建mq和storage mq有kafka,pulsar storage有local,minio,remote 配置文件 根据配置文件选择初始化mq和存储: mq:type: pulsarcommon:storageType: minio对于这种类型一个是mq,一个是存储&…

springboot+vue新疆肉牛智慧牧场养殖系统

系统涉及的对象是奶牛。 系统使用员工有管理员和普通员工。 管理员有修改的权限,普通员工没有。 系统需要包含奶牛的编号,种类,体重,健康情况、生长情况、牛奶产量,以及上次更新数据时间等信息,管理员可以对…

关于权限的设计

首先系统权限,每个账号登录后,都需要知道这个账号允许访问哪些api,哪些数据权限(一般是指其他账号的一些数据) 这里就需要通过角色来关联。 --1.角色绑定菜单,每个菜单设计的时候包含了这个菜单会用到的所…

HarmonyOS 实战开发-使用canvas实现图表系列之折线图

一、功能结构 实现一个公共组件的时候,首先分析一下大概的实现结构以及开发思路,方便我们少走弯路,也可以使组件更加容易拓展,维护性更强。然后我会把功能逐个拆开来讲,这样大家才能学习到更详细的内容。下面简单阐述…

【Linux系统编程】基础指令(二)

💞💞 前言 hello hello~ ,这里是大耳朵土土垚~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥个人主页&#x…

架构师系列- 定时任务(二)- Quartz框架

quartz特点 Quartz是一个优秀的任务调度框架, 具有以下特点 强大的调度功能,例如支持丰富多样的调度方法,可以满足各种常规及特殊需求;负载均衡高可用 quartz 架构体系 Quartz 设计有四个核心类,分别是Scheduler(调度…

一个简单的java递归下降语法分析器例子

import parser.Parser; import parser.RecursiveDescentParser;import java.util.ArrayList; import java.util.Arrays; import java.util.List;public class Main {public static void main(String[] args) {// 关键词List<String> keyList new ArrayList<>(Arra…

NXP i.MX8系列平台开发讲解 - 3.10 Linux PCIe资源分配与访问(二)

目录 1. PCIe BFD 2. PCIe 配置空间 2.1 PCIe 配置空间访问 PCIe I/O访问方法 PCIe MMIO访问方法 3. PCIe BAR相关 4. PCIe Capbility 5. PCIe 操作 本文将重点讲解PCIe的资源访问相关内容&#xff0c;对于PCIe资源访问是从Host 端老看可以对PCIe进行配置与访问的资源主…

【opencv 加速推理】如何安装 支持cuda的opencv 包 用于截帧加速

要在支持CUDA的系统上安装OpenCV&#xff0c;您可以使用pip来安装支持CUDA的OpenCV版本。OpenCV支持CUDA加速&#xff0c;但需要安装额外的库&#xff0c;如cuDNN和NVIDIA CUDA Toolkit。以下是一般步骤&#xff1a; 安装NVIDIA CUDA Toolkit: 首先&#xff0c;您需要安装NVID…

深度学习基础之《TensorFlow框架(12)—图片数据》

一、图像基本知识 1、如何转换图片文件 回忆&#xff1a;之前我们在特征抽取中讲过如何将文本处理成数据 思考&#xff1a;如何将图片文件转换成机器学习算法能够处理的数据&#xff1f; 我们经常接触到的图片有两种&#xff0c;一种是黑白图片&#xff08;灰度图&#xff09;…

网站被SmartScreen标记为不安全怎么办?

在互联网时代&#xff0c;网站的安全性和可信度是用户选择是否继续访问的重要因素之一&#xff0c;然而&#xff0c;网站运营者偶尔会发现使用Edge浏览器访问网站时&#xff0c;会出现Microsoft Defender SmartScreen&#xff08;以下简称SmartScreen&#xff09;提示网站不安全…

Windows下搭建Flutter开发环境

IDE:VS code Flutter官网:Flutter: 为所有屏幕创造精彩 - Flutter 中文开发者网站 - Flutter 下载&安装 下载Flutter SDK,如图,建议自行下载安装: SDK还是挺大的,近1G,使用迅雷下载会快不少。 下载完成,解压缩到指定目录即可! 设置Local SDK,按下面步骤操作即…

【数据结构(邓俊辉)学习笔记】绪论05——动态规划

文章目录 0.前言1. Fibonacci数应用1.1 fib&#xff08;&#xff09;&#xff1a;递归1.1.1 问题与代码1.1.2 复杂度分析1.1.3 递归分析 1.2 fib&#xff08;&#xff09;&#xff1a;迭代 0.前言 make it work,make it right,make it fast. 让代码能够不仅正确而且足够高效地…

适合初学者的自然语言处理 (NLP) 综合指南

一、简述 自然语言处理 (NLP) 是人工智能 (AI) 最热门的领域之一&#xff0c;现在主要指大语言模型了。这要归功于人们热衷于能编写故事的文本生成器、欺骗人们的聊天机器人以及产生照片级真实感的文本到图像程序等应用程序。近年来&#xff0c;计算机理解人类语言、编程语言&a…