![MindSporeæ ‡å¿—](https://gitee.com/mindspore/mindspore/raw/master/docs/MindSpore-logo.png "MindSpore logo") [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/mindspore.svg)](https://pypi.org/project/mindspore) [![PyPI](https://badge.fury.io/py/mindspore.svg)](https://badge.fury.io/py/mindspore) [![Downloads](https://pepy.tech/badge/mindspore)](https://pepy.tech/project/mindspore) [![DockerHub](https://img.shields.io/docker/pulls/mindspore/mindspore-cpu.svg)](https://hub.docker.com/r/mindspore/mindspore-cpu) [![LICENSE](https://img.shields.io/github/license/mindspore-ai/mindspore.svg?style=flat-square)](https://github.com/mindspore-ai/mindspore/blob/master/LICENSE) [![Slack](https://img.shields.io/badge/slack-chat-green.svg?logo=slack)](https://join.slack.com/t/mindspore/shared_invite/zt-dgk65rli-3ex4xvS4wHX7UDmsQmfu8w) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](https://gitee.com/mindspore/mindspore/pulls) [View English](./README.md) <!-- TOC --> - [MindSpore介ç»](#mindspore介ç») - [自动微分](#自动微分) - [自动并行](#自动并行) - [安装](#安装) - [pipæ–¹å¼å®‰è£…](#pipæ–¹å¼å®‰è£…) - [æºç 编译方å¼å®‰è£…](#æºç 编译方å¼å®‰è£…) - [Dockeré•œåƒ](#dockeré•œåƒ) - [快速入门](#快速入门) - [文档](#文档) - [社区](#社区) - [æ²»ç†](#æ²»ç†) - [交æµ](#交æµ) - [贡献](#贡献) - [分支维护ç–ç•¥](#分支维护ç–ç•¥) - [现有分支维护状æ€](#现有分支维护状æ€) - [版本说明](#版本说明) - [许å¯è¯](#许å¯è¯) <!-- /TOC --> ## MindSporeä»‹ç» MindSpore是一ç§é€‚用于端边云场景的新型开æºæ·±åº¦å¦ä¹ è®ç»ƒ/推ç†æ¡†æž¶ã€‚ MindSporeæ供了å‹å¥½çš„设计和高效的执行,旨在æå‡æ•°æ®ç§‘å¦å®¶å’Œç®—法工程师的开å‘体验,并为Ascend AI处ç†å™¨æ供原生支æŒï¼Œä»¥åŠè½¯ç¡¬ä»¶ååŒä¼˜åŒ–。 åŒæ—¶ï¼ŒMindSpore作为全çƒAIå¼€æºç¤¾åŒºï¼Œè‡´åŠ›äºŽè¿›ä¸€æ¥å¼€å‘和丰富AI软硬件应用生æ€ã€‚ <img src="https://gitee.com/mindspore/mindspore/raw/master/docs/MindSpore-architecture-zh.png" alt="MindSpore Architecture"/> 欲了解更多详情,请查看我们的[总体架构](https://www.mindspore.cn/tutorials/zh-CN/master/beginner/introduction.html)。 ### 自动微分 当å‰ä¸»æµæ·±åº¦å¦ä¹ 框架ä¸æœ‰ä¸¤ç§è‡ªåŠ¨å¾®åˆ†æŠ€æœ¯ï¼š - **æ“作符é‡è½½æ³•**: 通过æ“作符é‡è½½å¯¹ç¼–程è¯è¨€ä¸çš„基本æ“作è¯ä¹‰è¿›è¡Œé‡å®šä¹‰ï¼Œå°è£…其微分规则。 在程åºè¿è¡Œæ—¶è®°å½•ç®—å过载æ£å‘执行时网络的è¿è¡Œè½¨è¿¹ï¼Œå¯¹åŠ¨æ€ç”Ÿæˆçš„æ•°æ®æµå›¾åº”用链å¼æ³•åˆ™ï¼Œå®žçŽ°è‡ªåŠ¨å¾®åˆ†ã€‚ - **代ç å˜æ¢æ³•**: 该技术是从功能编程框架演进而æ¥ï¼Œä»¥å³æ—¶ç¼–译(Just-in-time Compilation,JIT)的形å¼å¯¹ä¸é—´è¡¨è¾¾å¼ï¼ˆç¨‹åºåœ¨ç¼–译过程ä¸çš„表达å¼ï¼‰è¿›è¡Œè‡ªåŠ¨å·®åˆ†è½¬æ¢ï¼Œæ”¯æŒå¤æ‚的控制æµåœºæ™¯ã€é«˜é˜¶å‡½æ•°å’Œé—包。 PyTorch采用的是æ“作符é‡è½½æ³•ã€‚相较于代ç å˜æ¢æ³•ï¼Œæ“作符é‡è½½æ³•æ˜¯åœ¨è¿è¡Œæ—¶ç”Ÿæˆå¾®åˆ†è®¡ç®—图的, æ— éœ€è€ƒè™‘å‡½æ•°è°ƒç”¨ä¸ŽæŽ§åˆ¶æµç‰æƒ…况, å¼€å‘更为简å•ã€‚ 但该方法ä¸èƒ½åœ¨ç¼–译时刻åšå¾®åˆ†å›¾çš„优化, 控制æµä¹Ÿéœ€è¦æ ¹æ®è¿è¡Œæ—¶çš„ä¿¡æ¯æ¥å±•å¼€ï¼Œ 很难实现性能的æžé™ä¼˜åŒ–。 MindSpore则采用的是代ç å˜æ¢æ³•ã€‚一方é¢ï¼Œå®ƒæ”¯æŒè‡ªåŠ¨æŽ§åˆ¶æµçš„è‡ªåŠ¨å¾®åˆ†ï¼Œå› æ¤åƒPyTorchè¿™æ ·çš„æ¨¡åž‹æž„å»ºéžå¸¸æ–¹ä¾¿ã€‚å¦ä¸€æ–¹é¢ï¼ŒMindSporeå¯ä»¥å¯¹ç¥žç»ç½‘络进行é™æ€ç¼–译优化,以获得更好的性能。 <img src="https://gitee.com/mindspore/mindspore/raw/master/docs/Automatic-differentiation.png" alt="Automatic Differentiation" width="600"/> MindSpore自动微分的实现å¯ä»¥ç†è§£ä¸ºç¨‹åºæœ¬èº«çš„符å·å¾®åˆ†ã€‚MindSpore IR是一个函数ä¸é—´è¡¨è¾¾å¼ï¼Œå®ƒä¸ŽåŸºç¡€ä»£æ•°ä¸çš„å¤åˆå‡½æ•°å…·æœ‰ç›´è§‚的对应关系。å¤åˆå‡½æ•°çš„å…¬å¼ç”±ä»»æ„å¯æŽ¨å¯¼çš„基础函数组æˆã€‚MindSpore IRä¸çš„æ¯ä¸ªåŽŸè¯æ“作都å¯ä»¥å¯¹åº”基础代数ä¸çš„基本功能,从而å¯ä»¥å»ºç«‹æ›´å¤æ‚çš„æµæŽ§åˆ¶ã€‚ ### 自动并行 MindSpore自动并行的目的是构建数æ®å¹¶è¡Œã€æ¨¡åž‹å¹¶è¡Œå’Œæ··åˆå¹¶è¡Œç›¸ç»“åˆçš„è®ç»ƒæ–¹æ³•ã€‚该方法能够自动选择开销最å°çš„模型切分ç–略,实现自动分布并行è®ç»ƒã€‚ <img src="https://gitee.com/mindspore/mindspore/raw/master/docs/Automatic-parallel.png" alt="Automatic Parallel" width="600"/> ç›®å‰MindSpore采用的是算å切分的细粒度并行ç–略,å³å›¾ä¸çš„æ¯ä¸ªç®—å被切分为一个集群,完æˆå¹¶è¡Œæ“作。在æ¤æœŸé—´çš„切分ç–ç•¥å¯èƒ½éžå¸¸å¤æ‚,但是作为一åPythonå¼€å‘è€…ï¼Œæ‚¨æ— éœ€å…³æ³¨åº•å±‚å®žçŽ°ï¼Œåªè¦é¡¶å±‚API计算是有效的å³å¯ã€‚ ## 安装 ### pipæ–¹å¼å®‰è£… MindSporeæ供跨多个åŽç«¯çš„构建选项: | ç¡¬ä»¶å¹³å° | æ“作系统 | çŠ¶æ€ | | :------------ | :-------------- | :--- | | Ascend 910 | Ubuntu-x86 | âœ”ï¸ | | | Ubuntu-aarch64 | âœ”ï¸ | | | EulerOS-aarch64 | âœ”ï¸ | | | CentOS-x86 | âœ”ï¸ | | | CentOS-aarch64 | âœ”ï¸ | | GPU CUDA 10.1 | Ubuntu-x86 | âœ”ï¸ | | CPU | Ubuntu-x86 | âœ”ï¸ | | | Ubuntu-aarch64 | âœ”ï¸ | | | Windows-x86 | âœ”ï¸ | 使用`pip`命令安装,以`CPU`å’Œ`Ubuntu-x86`build版本为例: 1. 请从[MindSpore下载页é¢](https://www.mindspore.cn/versions)下载并安装whl包。 ```bash 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 ``` 2. 执行以下命令,验è¯å®‰è£…结果。 ```python 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)) ``` ```text [ 4. 10. 18.] ``` 使用pipæ–¹å¼ï¼Œåœ¨ä¸åŒçš„环境安装MindSpore,å¯å‚考以下文档。 - [Ascend环境使用pipæ–¹å¼å®‰è£…MindSpore](https://gitee.com/mindspore/docs/blob/master/install/mindspore_ascend_install_pip.md) - [GPU环境使用pipæ–¹å¼å®‰è£…MindSpore](https://gitee.com/mindspore/docs/blob/master/install/mindspore_gpu_install_pip.md) - [CPU环境使用pipæ–¹å¼å®‰è£…MindSpore](https://gitee.com/mindspore/docs/blob/master/install/mindspore_cpu_install_pip.md) ### æºç 编译方å¼å®‰è£… 使用æºç 编译方å¼ï¼Œåœ¨ä¸åŒçš„环境安装MindSpore,å¯å‚考以下文档。 - [Ascend环境使用æºç 编译方å¼å®‰è£…MindSpore](https://gitee.com/mindspore/docs/blob/master/install/mindspore_ascend_install_source.md) - [GPU环境使用æºç 编译方å¼å®‰è£…MindSpore](https://gitee.com/mindspore/docs/blob/master/install/mindspore_gpu_install_source.md) - [CPU环境使用æºç 编译方å¼å®‰è£…MindSpore](https://gitee.com/mindspore/docs/blob/master/install/mindspore_cpu_install_source.md) ### Dockeré•œåƒ MindSporeçš„Dockeré•œåƒæ‰˜ç®¡åœ¨[Docker Hub](https://hub.docker.com/r/mindspore)上。 ç›®å‰å®¹å™¨åŒ–构建选项支æŒæƒ…况如下: | ç¡¬ä»¶å¹³å° | Dockeré•œåƒä»“库 | æ ‡ç¾ | 说明 | | :----- | :------------------------ | :----------------------- | :--------------------------------------- | | CPU | `mindspore/mindspore-cpu` | `x.y.z` | å·²ç»é¢„安装MindSpore `x.y.z` CPU版本的生产环境。 | | | | `devel` | æ供开å‘环境从æºå¤´æž„建MindSpore(`CPU`åŽç«¯ï¼‰ã€‚安装详情请å‚考<https://www.mindspore.cn/install> 。 | | | | `runtime` | æä¾›è¿è¡Œæ—¶çŽ¯å¢ƒå®‰è£…MindSpore二进制包(`CPU`åŽç«¯ï¼‰ã€‚ | | GPU | `mindspore/mindspore-gpu` | `x.y.z` | å·²ç»é¢„安装MindSpore `x.y.z` GPU版本的生产环境。 | | | | `devel` | æ供开å‘环境从æºå¤´æž„建MindSpore(`GPU CUDA10.1`åŽç«¯ï¼‰ã€‚安装详情请å‚考<https://www.mindspore.cn/install> 。 | | | | `runtime` | æä¾›è¿è¡Œæ—¶çŽ¯å¢ƒå®‰è£…MindSpore二进制包(`GPU CUDA10.1`åŽç«¯ï¼‰ã€‚ | > **注æ„:** ä¸å»ºè®®ä»Žæºå¤´æž„建GPU `devel` Dockeré•œåƒåŽç›´æŽ¥å®‰è£…whl包。我们强烈建议您在GPU `runtime` Dockeré•œåƒä¸ä¼ 输并安装whl包。 - CPU 对于`CPU`åŽç«¯ï¼Œå¯ä»¥ç›´æŽ¥ä½¿ç”¨ä»¥ä¸‹å‘½ä»¤èŽ·å–并è¿è¡Œæœ€æ–°çš„稳定镜åƒï¼š ```bash docker pull mindspore/mindspore-cpu:1.1.0 docker run -it mindspore/mindspore-cpu:1.1.0 /bin/bash ``` - GPU 对于`GPU`åŽç«¯ï¼Œè¯·ç¡®ä¿`nvidia-container-toolkit`å·²ç»æå‰å®‰è£…,以下是`Ubuntu`用户安装指å—: ```bash 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: ```bash $ vim /etc/docker/daemon.json { "runtimes": { "nvidia": { "path": "nvidia-container-runtime", "runtimeArgs": [] } } } ``` å†æ¬¡é‡å¯docker: ```bash sudo systemctl daemon-reload sudo systemctl restart docker ``` 使用以下命令获å–并è¿è¡Œæœ€æ–°çš„稳定镜åƒï¼š ```bash 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代ç 并检查输出: ```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)) ``` ```text [[[ 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](https://gitee.com/mindspore/mindspore/blob/master/scripts/docker/README.md) repo了解详细信æ¯ã€‚ ## 快速入门 å‚考[快速入门](https://www.mindspore.cn/tutorials/zh-CN/master/beginner/quick_start.html)实现图片分类。 ## 文档 有关安装指å—ã€æ•™ç¨‹å’ŒAPI的更多详细信æ¯ï¼Œè¯·å‚阅[用户文档](https://gitee.com/mindspore/docs)。 ## 社区 ### æ²»ç† æŸ¥çœ‹MindSpore如何进行[开放治ç†](https://gitee.com/mindspore/community/blob/master/governance.md)。 ### äº¤æµ - [MindSpore Slack](https://join.slack.com/t/mindspore/shared_invite/zt-dgk65rli-3ex4xvS4wHX7UDmsQmfu8w) å¼€å‘者交æµå¹³å°ã€‚ - `#mindspore`IRC频é“(仅用于会议记录) - 视频会议:待定 - 邮件列表:<https://mailweb.mindspore.cn/postorius/lists> ## 贡献 欢迎å‚与贡献。更多详情,请å‚阅我们的[贡献者Wiki](https://gitee.com/mindspore/mindspore/blob/master/CONTRIBUTING.md)。 ## 分支维护ç–ç•¥ MindSporeçš„ç‰ˆæœ¬åˆ†æ”¯æœ‰ä»¥ä¸‹å‡ ç§ç»´æŠ¤é˜¶æ®µï¼š | **状æ€** | **æŒç»æ—¶é—´** | **说明** | |-------------|---------------|--------------------------------------------------| | Planning | 1 - 3 months | 特性规划。 | | Development | 3 months | 特性开å‘。 | | Maintained | 6 - 12 months | å…许所有问题修å¤çš„åˆå…¥ï¼Œå¹¶å‘布版本。 | | Unmaintained| 0 - 3 months | å…许所有问题修å¤çš„åˆå…¥ï¼Œæ— 专人维护,ä¸å†å‘布版本。 | | End Of Life (EOL) | N/A | ä¸å†æŽ¥å—修改åˆå…¥è¯¥åˆ†æ”¯ã€‚ | ## çŽ°æœ‰åˆ†æ”¯ç»´æŠ¤çŠ¶æ€ | **分支å** | **当å‰çŠ¶æ€** | **上线时间** | **åŽç»çŠ¶æ€** | **EOL 日期**| |------------|--------------|----------------------|----------------------------------------|------------| | **r1.8** | Maintained | 2022-07-29 | Unmaintained <br> 2023-07-29 estimated | | | **r1.7** | Maintained | 2022-04-29 | Unmaintained <br> 2023-04-29 estimated | | | **r1.6** | Maintained | 2022-01-29 | Unmaintained <br> 2023-01-29 estimated | | | **r1.5** | Maintained | 2021-10-15 | Unmaintained <br> 2022-10-15 estimated | | | **r1.4** | Maintained | 2021-08-15 | Unmaintained <br> 2022-08-15 estimated | | | **r1.3** | End Of Life | 2021-07-15 | | 2022-07-15 | | **r1.2** | End Of Life | 2021-04-15 | | 2022-04-29 | | **r1.1** | End Of Life | 2020-12-31 | | 2021-09-30 | | **r1.0** | End Of Life | 2020-09-24 | | 2021-07-30 | | **r0.7** | End Of Life | 2020-08-31 | | 2021-02-28 | | **r0.6** | End Of Life | 2020-07-31 | | 2020-12-30 | | **r0.5** | End Of Life | 2020-06-30 | | 2021-06-30 | | **r0.3** | End Of Life | 2020-05-31 | | 2020-09-30 | | **r0.2** | End Of Life | 2020-04-30 | | 2020-08-31 | | **r0.1** | End Of Life | 2020-03-28 | | 2020-06-30 | ## 版本说明 版本说明请å‚阅[RELEASE](https://gitee.com/mindspore/mindspore/blob/master/RELEASE.md)。 ## 许å¯è¯ [Apache License 2.0](https://gitee.com/mindspore/mindspore/blob/master/LICENSE) --- ## OpenHarmony MindSpore系统组件 Mindspore Lite,和MindIR构图接å£å·²å†…置到OpenHarmonyæ ‡å‡†ç³»ç»Ÿã€‚ 如需了解MindSpore Lite推ç†æ¡†æž¶ï¼Œè¯·è¯¦è§[MindSpore Lite介ç»](mindspore/lite/README_CN.md)。 ### OpenHarmony组件使用MindSpore Lite 在组件BUILD.gnä¸åŠ 入如下ä¾èµ–å³å¯ä½¿ç”¨MindSpore Lite: ```gn include_dirs = [ "//third_party/mindspore/mindspore-src/source/" ] external_deps = ["mindspore:mindspore_lib"] ``` 注æ„:`mindspore-src/`为构建时生æˆçš„æºç 目录,仅下载æºä»£ç 时,æ¤ç›®å½•ä¸å˜åœ¨ï¼ - 使用C++ API C++ API头文件å˜æ”¾åœ¨`include/api`目录ä¸ï¼Œä½¿ç”¨å¦‚下方å¼åŒ…å«ï¼š ```C++ #include "include/api/xxx.h" ``` C API头文件å˜æ”¾åœ¨`include/c_api`目录ä¸ï¼Œä½¿ç”¨å¦‚下方å¼åŒ…å«ï¼š ```C #include "include/c_api/xxx.h" ``` ### MindIR æž„å›¾æŽ¥å£ MindIR是MindSpore Lite用于æ述模型计算图的ä¸é—´è¡¨è¾¾æ–¹å¼ã€‚ Primitive 是一套基于flatbuffers的对模型进行åºåˆ—化的工具,MindSpore Lite使用它å˜å‚¨å›¾ç»“æž„ã€ç®—åã€å¼ é‡ç‰ä¿¡æ¯ã€‚ Lite Graph是MindSpore Lite用于æ述模型ä¸èŠ‚点ã€å¼ é‡ã€å图ç‰ä¿¡æ¯çš„结构,å¯é€šè¿‡MindIR接å£æž„建。 #### 使用MindIR 在BUILD.gnä¸åŠ 入如下ä¾èµ–å³å¯ä½¿ç”¨MindIR 构图接å£: ```gn include_dirs = [ "//third_party/mindspore/mindspore-src/source/mindspore/lite/mindir/include" ] external_deps = ["mindspore:mindir"] ``` MindIR C++ API接å£å˜æ”¾ç›®å½•ä¸º`third_party/mindspore/mindspore-src/source/mindspore/lite/mindir/include`。 ``` ├── include # 对外的所有头文件 │ ├── mindir.h # MindIR所有功能的头文件 │ ├── mindir_lite_graph.h # Lite Graph相关的头文件 │ ├── mindir_primitive.h # Primitive相关头文件 │ ├── mindir_tensor.h # Tensor相关头文件 │ └── mindir_types.h # 类型相关的头文件 ├── inner_headers # 内部使用的头文件 ├── src # MindIR构图接å£çš„æºä»£ç └── tests # 测试代ç ``` ### 编译MindSpore Lite 以rk3568为例,å•ç‹¬ç¼–译mindspore lite动æ€åº“: ```bash ./build.sh --product-name rk3568 --target-cpu arm -T mindspore_lib --ccache ``` 编译出的so文件ä½äºŽ`out/rk3568/thirdparty/mindspore/`目录。 ``` libmindir.z.so libmindspore-lite.huawei.so ```