赞
踩
昇思是华为推出的一个深度学习框架。为华为昇腾AI全栈中的一个重要部分,其推出主要的目标为:易开发、高效执行、全场景统一部署。支持端(手机与IOT设备)、边(基站与路由设备)、云(服务器)场景不同系列硬件,如昇腾产品、英伟达NVIDIA产品、Arm高通骁龙、华为麒麟芯片等。目前市场上不同公司都在推出自己的深度学习框架,出了昇思之外还有百度的飞浆(PaddlePaddle),谷歌TensorFlow、facebook的Pytorch。本系列博客主要介绍华为内部的昇思深度学习框架的介绍以及使用。
所有算法和模型都托管在模型库ModelZoo中,模型库地址:https://gitee.com/mindspore/models
全场景统一API 为什么叫全场景统一,是因为Expression 集成了端边云三个场景的API并且语法统一化,极大地方便了开发者使用,不同的应用场景下都可以做到一键部署。
AI编译器:主要对我们编写的神经网络模型代码进行编译,编译成计算机可以识别的语言或者指令流。在这个过程中会做一些自动微分、自动并行,以及一些硬件无关的优化,算子融合硬件相关优化。还有推理部署优化。
CANN(NPU)、CUDA(GPU)、Eign(CPU) oneDNN(CPU)为易购计算框架,可以承载硬件执行的算子和驱动。
“端”(手机与IOT设备) 是指边缘设备,如传感器、智能手机、摄像头等。这些设备可以收集到各种类型的数据,如图像、视频、音频、温度、湿度等。在边缘计算中,“端”是数据来源的地方,它能够实时处理和存储数据,并将数据传输到“边”和“云”中。
“边”(基站与路由设备) 是指边缘服务器,它是位于“端”和“云”之间的计算设备。边缘服务器能够对数据进行预处理、存储和处理,然后将处理后的数据传输到“云”中。边缘服务器通常部署在靠近数据来源的地方,能够更快地处理数据,提高数据处理效率。
“云”(服务器) 是指云计算,它是边缘计算的重要组成部分。云计算是指将数据和应用程序存储在远程服务器上,并通过互联网进行访问和操作。在边缘计算中,“云”是用于存储和处理“端”和“边”传输来的数据的地方。它可以对数据进行高级分析、机器学习和预测模型建立等操作,以便更好地应对不断变化的应用场景。
MindSpore各个模块之间的整体配合关系如图所示:
在处理流程中最重要的为模型的训练和验证模块也是MindSpore主体框架,即图片中的蓝色部分,主要提供神经网络在训练、验证过程中相关的基础API功能。
MindSpore Data模块进行数据预处理,包括数据采样、数据迭代、数据格式转换等不同的数据操作。
MindSpore Insight模块对loss曲线、算子执行情况、权重参数变量等调试调优相关的数据进行可视化,方便用户在训练过程中进行调试调优。
MindSpore Armour模块,为MindSpore提供AI安全机制。如攻击者在训练阶段掺入恶意数据,影响AI模型推理能力,该模块为框架提供了约定的安全能力。
蓝色方框往上的内容跟算法开发相关的用户更加贴近,包括存放大量的AI算法模型库ModelZoo,提供面向不同领域的开发工具套件MindSpore DevKit,另外还有高阶拓展库MindSpore Extend,这里面值得一提的就是MindSpore Extend中的科学计算套件MindSciences,MindSpore首次探索将科学计算与深度学习结合,将数值计算与深度学习相结合,通过深度学习来支持电磁仿真、药物分子仿真等等。
神经网络模型训练完后,可以导出模型或者加载存放在MindSpore Hub中已经训练好的模型。接着有MindIR提供端云统一的IR格式,通过统一IR定义了网络的逻辑结构和算子的属性,将MindIR格式的模型文件 与硬件平台解耦,实现一次训练多次部署。因此如图所示,通过IR把模型导出到不同的模块执行推理。
昇思MindSpore源于全产业的最佳实践,向数据科学家和算法工程师提供了统一的模型训练、推理和导出等接口,支持端、边、云等不同场景下的灵活部署,推动深度学习和科学计算等领域繁荣发展。
昇思MindSpore提供了Python编程范式,用户使用Python原生控制逻辑即可构建复杂的神经网络模型,AI编程变得简单。
目前主流的深度学习框架的执行模式有两种,分别为静态图模式和动态图模式。静态图模式拥有较高的训练性能,但难以调试。动态图模式相较于静态图模式虽然易于调试,但难以高效执行。 昇思MindSpore提供了动态图和静态图统一的编码方式,大大增加了静态图和动态图的可兼容性,用户无需开发多套代码,仅变更一行代码便可切换动态图/静态图模式,用户可拥有更轻松的开发调试及性能体验。例如:
设置set_context(mode=PYNATIVE_MODE)可切换成动态图模式。
设置set_context(mode=GRAPH_MODE)可切换成静态图模式。
在友好支持AI模型训练推理编程的基础上,扩展支持灵活自动微分编程能力,支持对函数、控制流表达情况下的微分求导和各种如正向微分、高阶微分等高级微分能力的支持,用户可基于此实现科学计算常用的微分函数编程表达,从而支持AI和科学计算融合编程开发。
随着神经网络模型和数据集的规模不断增大,分布式并行训练成为了神经网络训练的常见做法,但分布式并行训练的策略选择和编写十分复杂,这严重制约着深度学习模型的训练效率,阻碍深度学习的发展。MindSpore统一了单机和分布式训练的编码方式,开发者无需编写复杂的分布式策略,在单机代码中添加少量代码即可实现分布式训练,提高神经网络训练效率,大大降低了AI开发门槛,使用户能够快速实现想要的模型。
例如设置set_auto_parallel_context(parallel_mode=ParallelMode.AUTO_PARALLEL)便可自动建立代价模型,为用户选择一种较优的并行模式。
昇思MindSpore向用户提供了3个不同层次的API,支撑用户进行AI应用(算法/模型)开发,高级API提供了更好的封装性,低阶API具有更高的灵活性,其结构如下图所示。
昇腾计算或者也称为昇腾AI,其包含了从底层硬件到顶层应用的全流程基础硬件及软件。包含昇腾Ascend系列芯片、Atlas系列硬件、CANN芯片使能、MindSpore AI框架、ModelArts、MindX应用使能等。昇腾AI全栈如下:
昇腾应用使能:华为各大产品线基于MindSpore提供的AI平台或服务能力
MindSpore:支持端、边、云独立的和协同的统一训练和推理框架
CANN:昇腾芯片使能、驱动层
计算资源:昇腾系列化IP、芯片和服务器
昇思版本:2.2.14
硬件平台:CPU
操作系统: Windows-x64
编程语言: Python 3.9
安装方式:Pip
pip install https://ms-release.obs.cn-north-4.myhuaweicloud.com/2.2.14/MindSpore/cpu/x86_64/mindspore-2.2.14-cp39-cp39-win_amd64.whl --trusted-host ms-release.obs.cn-north-4.myhuaweicloud.com -i https://pypi.tuna.tsinghua.edu.cn/simple
# 注意参考下方安装指南,添加运行所需的环境变量配置
更多其他系统硬件安装方式参考:
https://www.mindspore.cn/install/
基于昇思框架的快速入门示例
import numpy as np import mindspore.context as context import mindspore.nn as nn from mindspore import Tensor from mindspore.ops import operations as P context.set_context(mode=context.GRAPH_MODE, device_target="CPU") class Mul(nn.Cell): def __init__(self): super(Mul, self).__init__() self.mul = P.Mul() def construct(self, x, y): return self.mul(x, y) x = Tensor(np.array([1.0, 2.0, 3.0]).astype(np.float32)) y = Tensor(np.array([4.0, 5.0, 6.0]).astype(np.float32)) mul = Mul() print(mul(x, y))
输出:
[ 4. 10. 18.]
[ERROR] CORE(240,ffffb7bb4930,python):2024-07-13-06:51:31.616.630 [mindspore/core/utils/file_utils.cc:253] GetRealPath] Get realpath failed, path[/tmp/ipykernel_240/1604708453.py]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。