云赛道---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.rhkb.cn/news/313769.html

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

相关文章

IIR滤波器的设计与实现(内含设计IIR滤波器的高效方法)

写在前面:初学者学习这部分内容,要直接上手写代码可能会感到比较困难,我这里推荐一种高效快速的设计IIR,FIR滤波器的方法——MATLAB工具箱:filterDesigner。打开的方法很简单,就是在命令行键入:filterDesig…

Visual Studio安装MFC开发组件

MFC由于比较古老了,Visual Studio默认没有这个开发组件。最近由于一些原因,需要使用这个库,这就需要另外安装。 参考了网上的一些资料,根据实际使用,其实很多步骤不是必须的。 https://zhuanlan.zhihu.com/p/68117276…

TypeScript 装饰器

​🌈个人主页:前端青山 🔥系列专栏:React篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来React篇专栏内容:TypeScript 装饰器 目录 一、是什么 二、使用方式 类装饰 方法/属性装饰 参数装饰 访问器…

Objective-C网络数据捕获:使用MWFeedParser库下载Stack Overflow示例

概述 Objective-C开发中,网络数据捕获是一项常见而关键的任务,特别是在处理像RSS源这样的实时网络数据流时。MWFeedParser库作为一个优秀的解析工具,提供了简洁而强大的解决方案。本文将深入介绍如何利用MWFeedParser库,以高效、…

深度学习系列64:数字人wav2lip详解

1. 整体流程 第一步,加载视频/图片和音频/tts。用melspectrogram将wav文件拆分成mel_chunks。 第二步,调用face_detect模型,给出人脸检测结果(可以改造成从文件中读取),包装成4个数组batch:img…

ExcelVBA把当前工作表导出为PDF文档

我们先问问Kimi Excel导出为PDF的方法有多种,以下是一些常见的方法: 1 使用Excel软件的内置功能: 打开Excel文件,点击“文件”菜单。 选择“另存为”,在“保存类型”中选择“PDF”。 设置保存路径和文件名&#xff…

transformer 最简单学习3, 训练文本数据输入的形式

1、输入数据中,源数据和目标数据的定义 def get_batch(source,i):用于获取每个批数据合理大小的源数据和目标数据参数source 是通过batchfy 得到的划分batch个 ,的所有数据,并且转置列表示i第几个batchbptt 15 #超参数,一次输入多少个ba…

GPU深度学习环境搭建:Win10+CUDA 11.7+Pytorch1.13.1+Anaconda3+python3.10.9

1. 查看显卡驱动及对应cuda版本关系 1.1 显卡驱动和cuda版本信息查看方法 在命令行中输入【nvidia-smi】可以当前显卡驱动版本和cuda版本。 根据显示,显卡驱动版本为:Driver Version: 516.59,CUDA 的版本为:CUDA Version 11.7。 此处我们可以根据下面的表1 显卡驱动和c…

iText生成PDF文件

导语: 本文基于 iText7 :7.1.16 生成。 官方文档链接:iText 从版本入口可进入到下面页面 一、引言 常见生成PDF文件的有两种方法,一是先生成 word文档,然后将word转换成PDF文件;另一种则是直接生成PDF文件…

改变 centos yum源 repo

centos 使用自带的 repo 源 速度慢,可以改为国内的,需要改两个地方 centos7.repo CentOS-Base.repo 首先备份/etc/yum.repos.d/CentOS-Base.repo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup下载对应版本repo文件…

NameNode锁细粒度优化在B站的实践

1. 背景 随着业务的高速发展,针对HDFS元数据的访问请求量呈指数级上升。在之前的工作中,我们已经通过引入HDFS Federation和Router机制实现NameNode的平行扩容,在一定程度上满足了元数据的扩容需求;也通过引入Observer NameNode读…

Quarto Dashboards 教程 2:Dashboard Layout

「写在前面」 学习一个软件最好的方法就是啃它的官方文档。本着自己学习、分享他人的态度,分享官方文档的中文教程。软件可能随时更新,建议配合官方文档一起阅读。推荐先按顺序阅读往期内容: 1.quarto 教程 1:Hello, Quarto 2.qu…

C语言扫雷游戏完整实现(上)

文章目录 前言一、新建好头文件和源文件二、实现游戏菜单选择功能三、定义游戏函数四、初始化棋盘五、 打印棋盘函数六、布置雷函数七、玩家排雷菜单八、标记功能的菜单九、标记功能菜单的实现总结 前言 C语言从新建文件到游戏菜单,游戏函数,初始化棋盘…

【C语言】深入解析选择排序算法

一、算法原理二、算法性能分析三、C语言实现示例四、总结 一、算法原理 选择排序(Selection Sort)是一种简单直观的排序算法。它的工作原理是不断地选择剩余元素中的最小(或最大)元素,放到已排序的序列的末尾&#xff…

普乐蛙VR航天航空体验馆VR双人旋转座椅元宇宙VR飞船

多长假来袭!!想为门店寻找更多新鲜有趣的吸粉体验?想丰富景区体验?别着急,小编为你准备了一款爆款设备——时光穿梭机,720无死角旋转!!吸睛、刺激体验,将亲子、闺蜜、情侣…

微信小程序酒店选择日期和入住人数(有效果图)

效果图 app.vue onLaunch:function(options){this.defaultcache()}defaultcache(){// 入住信息缓存var arr this.getDateTime();var ReserVation {reservType:0,//1 人数 2日期InCheckin:{},//入离日期peopleArr:[{title:成人,num:2},{title:儿童,num:0},{title:宝子,num:1…

宁盾LDAP统一用户认证与单点登录:构建高效安全的企业身份认证

在信息化时代,企业面临着众多的应用系统和数据资源,如何有效地管理和保护这些资源,确保信息安全和高效利用,成为了企业信息化建设的核心问题。LDAP统一用户认证和单点登录(SSO)作为一种高效、安全的身份验证…

全开源小狐狸Ai系统 小狐狸ai付费创作系统 ChatGPT智能机器人2.7.6免授权版

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 测试环境:Linux系统CentOS7.6、宝塔、PHP7.4、MySQL5.6,根目录public,伪静态thinkPHP,开启ssl证书 具有文章改写、广告营销文案、编程…

一个java项目中,如何使用sse协议,构造一个chatgpt的流式对话接口

前言 如何注册chatGPT,怎么和它交互,本文就不讲了;因为网上教程一大堆,而且你要使用的话,通常会再包一个算法服务,用来做一些数据训练和过滤处理之类的,业务服务基本不会直接与原生chatGPT交互。…

Git操作与异常处理

文章目录 常用操作1、代码拉取2、代码提交3、暂存区状态4、提交代码5、推送远程仓库 异常处理【1】报错信息:Cannot pull into a repository with state: MERGING【2】报错信息:You have not concluded your merge (MERGE_HEAD exists)【3】报错信息&…