MindSpore基本原理
• MindSpore介绍
o 自动微分
o 自动并行
• 安装
o pip方式安装
o 源码编译方式安装
o Docker镜像
• 快速入门
• 文档

MindSpore介绍
MindSpore是一种适用于端边云场景的新型开源深度学习训练/推理框架。 MindSpore提供了友好的设计和高效的执行,旨在提升数据科学家和算法工程师的开发体验,并为Ascend AI处理器提供原生支持,以及软硬件协同优化。
同时,MindSpore作为全球AI开源社区,致力于进一步开发和丰富AI软硬件应用生态。

自动微分
当前主流深度学习框架中有三种自动微分技术:
• 基于静态计算图的转换:编译时将网络转换为静态数据流图,将链式法则应用于数据流图,实现自动微分。
• 基于动态计算图的转换:记录算子过载正向执行时,网络的运行轨迹,对动态生成的数据流图,应用链式法则,实现自动微分。
• 基于源码的转换:该技术是从功能编程框架演进而来,以即时编译(Just-in-time Compilation,JIT)的形式,对中间表达式(程序在编译过程中的表达式)进行自动差分转换,支持复杂的控制流场景、高阶函数和闭包。
TensorFlow早期采用的是静态计算图,PyTorch采用的是动态计算图。静态映射可以利用静态编译技术,来优化网络性能,但是构建网络或调试网络非常复杂。动态图的使用非常方便,但很难实现性能的极限优化。
MindSpore找到了另一种方法,即基于源代码转换的自动微分。一方面,它支持自动控制流的自动微分,像PyTorch这样的模型构建非常方便。另一方面,MindSpore可以对神经网络进行静态编译优化,以获得更好的性能。

MindSpore自动微分的实现可以理解为程序本身的符号微分。MindSpore IR是一个函数中间表达式,它与基础代数中的复合函数具有直观的对应关系。复合函数的公式由任意可推导的基础函数组成。MindSpore IR中的每个原语操作都可以对应基础代数中的基本功能,从而可以建立更复杂的流控制。
自动并行
MindSpore自动并行的目的,构建数据并行、模型并行和混合并行相结合的训练方法。该方法能够自动选择开销最小的模型切分策略,实现自动分布并行训练。

目前MindSpore采用的是算子切分的细粒度并行策略,即图中的每个算子被切分为一个集群,完成并行操作。在此期间的切分策略可能非常复杂,但是作为一名Python开发者,无需关注底层实现,只要顶层API计算是有效的即可。
安装
pip方式安装
MindSpore提供跨多个后端的构建选项:

使用pip命令安装,以CPU和Ubuntu-x86build版本为例:

  1. 请从MindSpore下载页面下载并安装whl包。
    pip install https://ms-release.obs.cn-north-4.myhuaweicloud.com/1.1.0/MindSpore/cpu/ubuntu_x86/mindspore-1.1.0-cp37-cp37m-linux_x86_64.whl
  2. 执行以下命令,验证安装结果。
  3. import numpy as np
  4. import mindspore.context as context
  5. import mindspore.nn as nn
  6. from mindspore import Tensor
  7. from mindspore.ops import operations as P
  8. context.set_context(mode=context.GRAPH_MODE, device_target=“CPU”)
  9. class Mul(nn.Cell):
  10. def __init__(self):
    
  11.     super(Mul, self).__init__()
    
  12.     self.mul = P.Mul()
    
  13. def construct(self, x, y):
    
  14.     return self.mul(x, y)
    
  15. x = Tensor(np.array([1.0, 2.0, 3.0]).astype(np.float32))
  16. y = Tensor(np.array([4.0, 5.0, 6.0]).astype(np.float32))
  17. mul = Mul()
    print(mul(x, y))
    [ 4. 10. 18.]
    使用pip方式,在不同的环境安装MindSpore,可参考以下文档。
    • Ascend环境使用pip方式安装MindSpore
    • GPU环境使用pip方式安装MindSpore
    • CPU环境使用pip方式安装MindSpore
    源码编译方式安装
    使用源码编译方式,在不同的环境安装MindSpore,可参考以下文档。
    • Ascend环境使用源码编译方式安装MindSpore
    • GPU环境使用源码编译方式安装MindSpore
    • CPU环境使用源码编译方式安装MindSpore
    Docker镜像
    MindSpore的Docker镜像托管在Docker Hub上。 目前容器化构建选项支持情况如下:

注意: 不建议从源头构建GPU devel Docker镜像后直接安装whl包。强烈建议在GPU runtime Docker镜像中传输,并安装whl包。
• CPU
对于CPU后端,可以直接使用以下命令获取并运行最新的稳定镜像:
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用户安装指南:
DISTRIBUTION=$(. /etc/os-release; echo IDIDIDVERSION_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基本原理相关推荐

  1. 一文带你认识MindSpore新一代分子模拟库SPONGE

    [本期推荐专题]物联网从业人员必读:华为云专家为你详细解读LiteOS各模块开发及其实现原理. 摘要:基于MindSpore自动并行.图算融合等特性,SPONGE可高效地完成传统分子模拟过程,利用Mi ...

  2. 技术干货| MindSpore新一代自主研发分子模拟库:Mind-Sponge

    MindSpore新一代分子模拟库:SPONGE,由北大和深圳湾实验室高毅勤课题组与华为MindSpore团队联合开发,具有高性能.模块化等特性,是一个完全自主研发的分子模拟软件库.基于MindSpo ...

  3. 人工智能导论实验——基于MindSpore的广告推荐

    实验目的 掌握Wide&Deep算法的基本原理以及点击率预测的实验流程. 实验任务 基于Criteo数据,使用推荐系统的深度学习算法wide&deep实现广告推荐. 实验步骤 在命令行 ...

  4. Computer OS系统基本原理

    Computer OS系统基本原理 第一章 绪论(考概念) 什么是OS? o 操作系统是一组控制和管理计算机软硬件资源.合理地对各类作业进行调度以及方便用户使用的程序集合. o 操作系统是位于硬件层( ...

  5. MindSpore循环神经网络

    MindSpore循环神经网络 一. 神经网络的组成 神经元模型:首先简单的了解以下构成神经网络的最基础单元:神经元.每个神经元与其它神经元相连,处于激活状态时,就会向相连的神经元发送相应信号.从而改 ...

  6. XGBoost4J-Spark基本原理

    XGBoost4J-Spark基本原理 XGBoost4J-Spark是一个项目,旨在通过使XGBoost适应Apache Spark的MLLIB框架,无缝集成XGBoost和Apache Spark ...

  7. Docker基本原理概述

    Docker基本原理概述 Docker是一个用于开发,交付和运行应用程序的开放平台.Docker能够将应用程序与基础架构分开,从而可以快速交付软件.借助Docker,可以以与管理应用程序相同的方式来管 ...

  8. 多机多卡训练基本原理

    多机多卡训练基本原理 在工业实践中,许多较复杂的任务需要使用更强大的模型.强大模型加上海量的训练数据,经常导致模型训练耗时严重.比如在计算机视觉分类任务中,训练一个在ImageNet数据集上精度表现良 ...

  9. 超轻量AI引擎MindSpore Lite

    超轻量AI引擎MindSpore Lite 揭秘一下端上的AI引擎:MindSpore Lite. MindSpore Lite是MindSpore全场景AI框架的端侧引擎,目前MindSpore L ...

最新文章

  1. C++ template
  2. Windows程序设计“圣经”
  3. STDIN_FILENO和stdin区别
  4. php主机转发ipv6,php实现ipv4转换ipv6
  5. 基于weblogic 的EJB 学习笔记-JSP教程,资料/其它
  6. 关于内核页表和进程页表的一个问题
  7. 算法 --- 插入排序的JS实现
  8. php table 下拉框,LayerUI的table 里面加 select 下拉框 – Fly社区-Mikel
  9. JS高级——错误处理
  10. 奇点汽车黄浴:SLAM的动态地图和语义问题
  11. 优秀软件架构师成长之路
  12. Process Explorer工具
  13. 史上最全Linux面试题(2020最新版)
  14. 企业级自动化运维工具Ansible详解(上)
  15. Express 路由
  16. 《并发数据结构与多核编程》作业题答案
  17. APP关键词的选词方法
  18. Android Banner
  19. Java 集成阿里大鱼平台短信服务发送验证码 --- 补齐注册部分
  20. Calibre物理验证技术点滴 (中)

热门文章

  1. 2022-2028年中国煤制天然气市场投资分析及前景预测报告
  2. 2022-2028年中国节能建材行业深度调研及投资前景预测报告
  3. Linux 运维常用命令 find、awk、sed、grep、vi、ps、lsof、rpm
  4. 【Docker】Ubuntu18.04国内源安装Docker-准备工作(一)
  5. Bert系列(二)——源码解读之模型主体
  6. Centos7开机之后连不上网ens33mtu 1500 qdisc noop state DOWN group default qlen 1000
  7. LeetCode简单题之字符串中的最大奇数
  8. NVIDIA A100 GPUs上硬件JPEG解码器和NVIDIA nvJPEG库
  9. 谷歌不更新android studio,彻底迈向64位:谷歌宣布 Android Studio 将停止 32 位版本更新...
  10. Andriod TextView typeface