MindSpore 是一种新的开源深度学习训练/推理框架,可用于移动、边缘和云场景。
项目描述
什么是心灵孢子
MindSpore 是一种新的开源深度学习训练/推理框架,可用于移动、边缘和云场景。MindSpore旨在为数据科学家和算法工程师提供友好设计和高效执行的开发体验,原生支持升腾AI处理器,软件硬件协同优化。同时MindSpore作为全球人工智能开源社区,旨在进一步推进人工智能软硬件应用生态系统的开发和丰富。
有关更多详细信息,请查看我们的架构指南。
自动微分
目前主流深度学习框架中有两种自动微分技术:
- 运算符重载(OO):重载编程语言的基本运算符以封装其梯度规则。以算子重载的方式记录前向执行过程中网络的运行轨迹,然后将链式法则应用到动态生成的数据流图上,实现自动微分。
- Source Transformation(ST):该技术是从函数式编程框架演变而来,以即时编译(JIT)的形式对中间表达式(程序在编译过程中的表达式形式)进行自动微分变换,支持复杂的控制流场景、高阶函数和闭包。
PyTorch 使用了 OO。相对于ST,OO在运行时生成梯度图,不需要考虑函数调用和控制流,开发起来更容易。但是OO不能在编译时进行梯度图优化,而且控制流必须在运行时展开,因此很难在性能上做到极致优化。
MindSpore 基于 ST 实现了自动微分。一方面,它支持自动控制流的自动微分,所以像 PyTorch 那样构建模型还是相当方便的。另一方面,MindSpore 可以对神经网络进行静态编译优化,以达到出色的性能。
MindSpore自动微分的实现可以理解为程序本身的符号微分。由于MindSpore IR是一个泛函中间表达式,它与基础代数中的复合函数有着直观的对应关系。可以推导出任意基本函数组成的复合函数的求导公式。MindSpore IR中的每一个原语操作都可以对应基本代数中的基本函数,可以构建更复杂的流控制。
自动并联
MindSpore自动并行的目标是构建一种数据并行、模型并行、混合并行相结合的训练方法。它可以自动选择成本最低的模型拆分策略,实现自动分布式并行训练。
目前MindSpore采用细粒度的拆分算子并行策略,即将图中的每个算子拆分成一个集群,完成并行运算。这期间的拆分策略可能会很复杂,但作为崇尚 Pythonic 的开发者,不需要关心底层实现,只要顶层 API 计算高效即可。
安装
pip模式方法安装
MindSpore 提供跨多个后端的构建选项:
| 硬件平台 | 操作系统 | 地位 |
|---|---|---|
| 升腾910 | Ubuntu-x86 | ✔️ |
| Ubuntu-aarch64 | ✔️ | |
| EulerOS-aarch64 | ✔️ | |
| CentOS-x86 | ✔️ | |
| CentOS-aarch64 | ✔️ | |
| GPU CUDA 10.1 | Ubuntu-x86 | ✔️ |
| 中央处理器 | Ubuntu-x86 | ✔️ |
| Ubuntu-aarch64 | ✔️ | |
| Windows-x86 | ✔️ |
使用安装pip,以CPU构建Ubuntu-x86版本为例:
-
从MindSpore 下载页面下载 whl ,并安装包。
pip install https://ms-release.obs.cn-north-4.myhuaweicloud.com/1.2.0-rc1/MindSpore/cpu/ubuntu_x86/mindspore-1.2.0rc1-cp37-cp37m-linux_x86_64.whl
-
运行以下命令以验证安装。
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.]
使用 pip 方式方法在不同环境下安装 MindSpore。请参阅以下文档。
源码编译安装
使用源码编译方式在不同环境下安装MindSpore。请参阅以下文档。
码头工人形象
MindSpore docker 镜像托管在Docker Hub上,目前支持的容器化构建选项如下:
| 硬件平台 | Docker 映像存储库 | 标签 | 描述 |
|---|---|---|---|
| 中央处理器 | mindspore/mindspore-cpu |
x.y.z |
预装 MindSpore x.y.zCPU 版本的生产环境。 |
devel |
提供开发环境,用于从源代码构建MindSpore(带CPU后端),安装详情参考https://www.mindspore.cn/install/en。 |
||
runtime |
提供运行环境来安装 MindSpore 二进制包和CPU后端。 |
||
| 图形处理器 | mindspore/mindspore-gpu |
x.y.z |
预装 MindSpore x.y.zGPU 版本的生产环境。 |
devel |
提供开发环境,用于从源代码构建MindSpore(带GPU CUDA10.1后端),安装详情参考https://www.mindspore.cn/install/en。 |
||
runtime |
提供运行环境来安装 MindSpore 二进制包和GPU CUDA10.1后端。 |
注意:对于 GPU
develdocker 镜像,不建议从源代码构建后直接安装 whl 包,我们强烈建议您将 whl 包转移并安装在 GPU dockerruntime镜像中。
-
中央处理器
对于
CPU后端,您可以使用以下命令直接拉取并运行最新的稳定映像:docker pull mindspore/mindspore-cpu:1.1.0 docker run -it mindspore/mindspore-cpu:1.1.0 /bin/bash
-
图形处理器
对于
GPU后端,请确保nvidia-container-toolkit已提前安装,以下是一些Ubuntu用户安装指南:DISTRIBUTION=$(. /etc/os-release; echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | apt-key add - curl -s -L https://nvidia.github.io/nvidia-docker/$DISTRIBUTION/nvidia-docker.list | tee /etc/apt/sources.list.d/nvidia-docker.list sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit nvidia-docker2 sudo systemctl restart docker
然后编辑文件 daemon.json:
$ vim /etc/docker/daemon.json { "runtimes": { "nvidia": { "path": "nvidia-container-runtime", "runtimeArgs": [] } } }
再次重启docker:
sudo systemctl daemon-reload sudo systemctl restart docker
然后,您可以使用以下命令拉取并运行最新的稳定映像:
docker pull mindspore/mindspore-gpu:1.1.0 docker run -it -v /dev/shm:/dev/shm --runtime=nvidia --privileged=true mindspore/mindspore-gpu:1.1.0 /bin/bash
要测试 docker 镜像是否有效,请执行下面的 python 代码并检查输出:
import numpy as np import mindspore.context as context from mindspore import Tensor from mindspore.ops import functional as F context.set_context(mode=context.PYNATIVE_MODE, device_target="GPU") x = Tensor(np.ones([1,3,3,4]).astype(np.float32)) y = Tensor(np.ones([1,3,3,4]).astype(np.float32)) print(F.tensor_add(x, y))
[[[ 2. 2. 2. 2.], [ 2. 2. 2. 2.], [ 2. 2. 2. 2.]], [[ 2. 2. 2. 2.], [ 2. 2. 2. 2.], [ 2. 2. 2. 2.]], [[ 2. 2. 2. 2.], [ 2. 2. 2. 2.], [ 2. 2. 2. 2.]]]
如果您想了解更多关于 MindSpore docker 镜像的构建过程,请查看 docker repo了解详细信息。
快速开始
请参阅快速入门 以实现图像分类。
文档
有关安装指南、教程和 API 的更多详细信息,请参阅 用户文档。
社区
治理
查看 MindSpore 开放式治理是如何工作的。
沟通
- MindSpore Slack - 开发人员的交流平台。
- IRC 频道位于
#mindspore(仅用于会议记录记录目的) - 视频会议:待定
- 邮件列表:https ://mailweb.mindspore.cn/postorius/lists
贡献
欢迎投稿。有关更多详细信息,请参阅我们的贡献者 Wiki。
维护阶段
项目稳定分支将处于以下状态之一:
| 状态 | 大体时间 | 概括 |
|---|---|---|
| 规划 | 1 - 3 个月 | 功能正在规划中。 |
| 发展 | 3个月 | 功能正在开发中。 |
| 保持 | 6 - 12 个月 | 所有错误修正都是适当的。发行的产品。 |
| 未维护 | 0 - 3 个月 | 所有错误修正都是适当的。没有维护者,也没有发布版本。 |
| 寿命终止 (EOL) | 不适用 | 分支不再接受更改。 |
维护状态
| 分支 | 地位 | 初始发布日期 | 下一阶段 | 停产日期 |
|---|---|---|---|---|
| r1.8 | 保持 | 2022-07-29 | 估计未维护 2023-07-29 |
|
| r1.7 | 保持 | 2022-04-29 | 估计未维护 2023-04-29 |
|
| r1.6 | 保持 | 2022-01-29 | 估计未维护 2023-01-29 |
|
| r1.5 | 保持 | 2021-10-15 | 估计未维护 2022-10-15 |
|
| r1.4 | 保持 | 2021-08-15 | 估计未维护 2022-08-15 |
|
| r1.3 | 生命的尽头 | 2021-07-15 | 2022-07-15 | |
| r1.2 | 生命的尽头 | 2021-04-15 | 2022-04-29 | |
| r1.1 | 生命的尽头 | 2020-12-31 | 2021-09-30 | |
| r1.0 | 生命的尽头 | 2020-09-24 | 2021-07-30 | |
| r0.7 | 生命的尽头 | 2020-08-31 | 2021-02-28 | |
| r0.6 | 生命的尽头 | 2020-07-31 | 2020-12-30 | |
| r0.5 | 生命的尽头 | 2020-06-30 | 2021-06-30 | |
| r0.3 | 生命的尽头 | 2020-05-31 | 2020-09-30 | |
| r0.2 | 生命的尽头 | 2020-04-30 | 2020-08-31 | |
| r0.1 | 生命的尽头 | 2020-03-28 | 2020-06-30 |
发行说明
发行说明,请参阅我们的RELEASE。
执照
项目详情
mindspore_gpu -1.8.1-cp39-cp39-manylinux1_x86_64.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 22daea9ddb5db45d2fbb29582fdb86b4518590366154214423359c86b6c89054 |
|
| MD5 | 7a772bc037cb146229128a2879dbccca |