{ "cells": [ { "cell_type": "markdown", "id": "c55e51c5-4069-4134-8f68-7ea9a45f0038", "metadata": {}, "source": [ "[![查看源文件](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/r2.0/resource/_static/logo_source.png)](https://gitee.com/mindspore/docs/blob/r2.0/tutorials/source_zh_cn/beginner/introduction.ipynb)\n", "\n", "**基本介绍** || [快速入门](https://www.mindspore.cn/tutorials/zh-CN/r2.0/beginner/quick_start.html#) || [张量 Tensor](https://www.mindspore.cn/tutorials/zh-CN/r2.0/beginner/tensor.html) || [数据集 Dataset](https://www.mindspore.cn/tutorials/zh-CN/r2.0/beginner/dataset.html) || [数据变换 Transforms](https://www.mindspore.cn/tutorials/zh-CN/r2.0/beginner/transforms.html) || [网络构建](https://www.mindspore.cn/tutorials/zh-CN/r2.0/beginner/model.html) || [函数式自动微分](https://www.mindspore.cn/tutorials/zh-CN/r2.0/beginner/autograd.html) || [模型训练](https://www.mindspore.cn/tutorials/zh-CN/r2.0/beginner/train.html) || [保存与加载](https://www.mindspore.cn/tutorials/zh-CN/r2.0/beginner/save_load.html)" ] }, { "cell_type": "markdown", "id": "e2b9aa7d", "metadata": { "tags": [] }, "source": [ "# 基本介绍\n", "\n", "本节将会整体介绍昇思MindSpore和华为昇腾AI全栈,并介绍昇思MindSpore在华为昇腾AI全栈中的位置。对昇思MindSpore感兴趣的开发者,最后可以参与昇思MindSpore的[社区](https://gitee.com/mindspore/mindspore)并一键三连[(Watch/Star/Fork)](https://gitee.com/mindspore/mindspore)。\n", "\n", "## 昇思MindSpore介绍\n", "\n", "昇思MindSpore是一个全场景深度学习框架,旨在实现易开发、高效执行、全场景覆盖三大目标。\n", "\n", "其中,易开发表现为API友好、调试难度低;高效执行包括计算效率、数据预处理效率和分布式训练效率;全场景则指框架同时支持云、边缘以及端侧场景。\n", "\n", "昇思MindSpore总体架构如下图所示:\n", "\n", "![MindSpore-arch](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/r2.0/tutorials/source_zh_cn/beginner/images/introduction2.png)\n", "\n", "- **ModelZoo(模型库)**:ModelZoo提供可用的深度学习算法网络,也欢迎更多开发者贡献新的网络([ModelZoo地址](https://gitee.com/mindspore/models))。\n", "- **Extend(扩展库)**:昇思MindSpore的领域扩展库,支持拓展新领域场景,如GNN/深度概率编程/强化学习等,期待更多开发者来一起贡献和构建。\n", "- **Science(科学计算)**:MindScience是基于昇思MindSpore融合架构打造的科学计算行业套件,包含了业界领先的数据集、基础模型、预置高精度模型和前后处理工具,加速了科学行业应用开发。\n", "- **Expression(全场景统一API)**:基于Python的前端表达与编程接口,支持两个融合(函数/OOP编程范式融合、AI+数值计算表达融合)以及两个统一(动静表达统一、单机分布式表达统一)。\n", "- **第三方前端**:支持第三方多语言前端表达,未来计划陆续提供C/C++、华为自研编程语言前端-仓颉(目前还处于预研阶段)等第三方前端的对接工作,引入更多的第三方生态。\n", "- **Data(数据处理层)**:提供高效的数据处理、常用数据集加载等功能和编程接口,支持用户灵活地定义处理注册和pipeline并行优化。\n", "- **Compiler(AI编译器)**:图层的核心编译器,主要基于端云统一的MindIR实现三大功能,包括硬件无关的优化(类型推导、自动微分、表达式化简等)、硬件相关优化(自动并行、内存优化、图算融合、流水线执行等)、部署推理相关的优化(量化、剪枝等)。\n", "- **Runtime(全场景运行时)**:昇思MindSpore的运行时系统,包含云侧主机侧运行时系统、端侧以及更小IoT的轻量化运行时系统。\n", "- **Insight(可视化调试调优工具)**:昇思MindSpore的可视化调试调优工具,能够可视化地查看训练过程、优化模型性能、调试精度问题、解释推理结果([了解更多](https://mindspore.cn/mindinsight/docs/zh-CN/r2.0/index.html))。\n", "- **Armour(安全增强库)**:面向企业级运用时,安全与隐私保护相关增强功能,如对抗鲁棒性、模型安全测试、差分隐私训练、隐私泄露风险评估、数据漂移检测等技术([了解更多](https://mindspore.cn/mindarmour/docs/zh-CN/r2.0/index.html))。\n", "\n", "### 执行流程\n", "\n", "有了对昇思MindSpore总体架构的了解后,我们可以看看各个模块之间的整体配合关系,具体如图所示:\n", "\n", "![MindSpore](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/r2.0/tutorials/source_zh_cn/beginner/images/introduction4.png)\n", "\n", "昇思MindSpore作为全场景AI框架,所支持的有端(手机与IOT设备)、边(基站与路由设备)、云(服务器)场景的不同系列硬件,包括昇腾系列产品、英伟达NVIDIA系列产品、Arm系列的高通骁龙、华为麒麟的芯片等系列产品。\n", "\n", "左边蓝色方框的是MindSpore主体框架,主要提供神经网络在训练、验证相关的基础API功能,另外还会默认提供自动微分、自动并行等功能。\n", "\n", "蓝色方框往下是MindSpore Data模块,可以利用该模块进行数据预处理,包括数据采样、数据迭代、数据格式转换等不同的数据操作。在训练的过程会遇到很多调试调优的问题,因此有MindSpore Insight模块对loss曲线、算子执行情况、权重参数变量等调试调优相关的数据进行可视化,方便用户在训练过程中进行调试调优。\n", "\n", "AI安全最简单的场景就是从攻防的视角来看,例如,攻击者在训练阶段掺入恶意数据,影响AI模型推理能力,于是MindSpore推出了MindSpore Armour模块,为MindSpore提供AI安全机制。\n", "\n", "蓝色方框往上的内容跟算法开发相关的用户更加贴近,包括存放大量的AI算法模型库ModelZoo,提供面向不同领域的开发工具套件MindSpore DevKit,另外还有高阶拓展库MindSpore Extend,这里面值得一提的就是MindSpore Extend中的科学计算套件MindSciences,MindSpore首次探索将科学计算与深度学习结合,将数值计算与深度学习相结合,通过深度学习来支持电磁仿真、药物分子仿真等等。\n", "\n", "神经网络模型训练完后,可以导出模型或者加载存放在MindSpore Hub中已经训练好的模型。接着有MindIR提供端云统一的IR格式,通过统一IR定义了网络的逻辑结构和算子的属性,将MindIR格式的模型文件 与硬件平台解耦,实现一次训练多次部署。因此如图所示,通过IR把模型导出到不同的模块执行推理。\n", "\n", "### 设计理念\n", "\n", "- 支持全场景协同\n", "\n", " 昇思MindSpore源于全产业的最佳实践,向数据科学家和算法工程师提供了统一的模型训练、推理和导出等接口,支持端、边、云等不同场景下的灵活部署,推动深度学习和科学计算等领域繁荣发展。\n", "\n", "- 提供Python编程范式,简化AI编程\n", "\n", " 昇思MindSpore提供了Python编程范式,用户使用Python原生控制逻辑即可构建复杂的神经网络模型,AI编程变得简单。\n", "\n", "- 提供动态图和静态图统一的编码方式\n", "\n", " 目前主流的深度学习框架的执行模式有两种,分别为静态图模式和动态图模式。静态图模式拥有较高的训练性能,但难以调试。动态图模式相较于静态图模式虽然易于调试,但难以高效执行。\n", " 昇思MindSpore提供了动态图和静态图统一的编码方式,大大增加了静态图和动态图的可兼容性,用户无需开发多套代码,仅变更一行代码便可切换动态图/静态图模式,用户可拥有更轻松的开发调试及性能体验。例如:\n", "\n", " 设置`set_context(mode=PYNATIVE_MODE)`可切换成动态图模式。\n", "\n", " 设置`set_context(mode=GRAPH_MODE)`可切换成静态图模式。\n", "\n", "- 采用函数式可微分编程架构,使用户聚焦于模型算法的数学原生表达\n", "\n", " 神经网络模型通常基于梯度下降算法进行训练,但手动求导过程复杂,结果容易出错。昇思MindSpore的基于源码转换(Source Code Transformation,SCT)的自动微分(Automatic Differentiation)机制采用函数式可微分编程架构,在接口层提供Python编程接口,包括控制流的表达。用户可聚焦于模型算法的数学原生表达,无需手动进行求导。\n", "\n", "- 统一单机和分布式训练的编码方式\n", "\n", " 随着神经网络模型和数据集的规模不断增大,分布式并行训练成为了神经网络训练的常见做法,但分布式并行训练的策略选择和编写十分复杂,这严重制约着深度学习模型的训练效率,阻碍深度学习的发展。MindSpore统一了单机和分布式训练的编码方式,开发者无需编写复杂的分布式策略,在单机代码中添加少量代码即可实现分布式训练,提高神经网络训练效率,大大降低了AI开发门槛,使用户能够快速实现想要的模型。\n", "\n", " 例如设置`set_auto_parallel_context(parallel_mode=ParallelMode.AUTO_PARALLEL)`便可自动建立代价模型,为用户选择一种较优的并行模式。\n", "\n", "### 层次结构\n", "\n", "昇思MindSpore向用户提供了3个不同层次的API,支撑用户进行AI应用(算法/模型)开发,从高到低分别为High-Level Python API、Medium-Level Python API以及Low-Level Python API。高阶API提供了更好的封装性,低阶API提供更好的灵活性,中阶API兼顾灵活及封装,满足不同领域和层次的开发者需求。\n", "\n", "![MindSpore API](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/r2.0/tutorials/source_zh_cn/beginner/images/introduction3.png)\n", "\n", "- High-Level Python API\n", "\n", " 第一层为高阶API,其在中阶API的基础上又提供了训练推理的管理、混合精度训练、调试调优等高级接口,方便用户控制整网的执行流程和实现神经网络的训练推理及调优。例如用户使用Model接口,指定要训练的神经网络模型和相关的训练设置,对神经网络模型进行训练。\n", "\n", "- Medium-Level Python API\n", "\n", " 第二层为中阶API,其封装了低阶API,提供网络层、优化器、损失函数等模块,用户可通过中阶API灵活构建神经网络和控制执行流程,快速实现模型算法逻辑。例如用户可调用Cell接口构建神经网络模型和计算逻辑,通过使用Loss模块和Optimizer接口为神经网络模型添加损失函数和优化方式,利用Dataset模块对数据进行处理以供模型的训练和推导使用。\n", "\n", "- Low-Level Python API\n", "\n", " 第三层为低阶API,主要包括张量定义、基础算子、自动微分等模块,用户可使用低阶API轻松实现张量定义和求导计算。例如用户可通过Tensor接口自定义张量,使用grad接口计算函数在指定处的导数。\n", "\n", "## 华为昇腾AI全栈介绍\n", "\n", "昇腾计算,是基于昇腾系列处理器构建的全栈AI计算基础设施及应用,包括昇腾Ascend系列芯片、Atlas系列硬件、CANN芯片使能、MindSpore AI框架、ModelArts、MindX应用使能等。\n", "\n", "华为Atlas人工智能计算解决方案,是基于昇腾系列AI处理器,通过模块、板卡、小站、服务器、集群等丰富的产品形态,打造面向“端、边、云”的全场景AI基础设施方案,涵盖数据中心解决方案、智能边缘解决方案,覆盖深度学习领域推理和训练全流程。\n", "\n", "昇腾AI全栈如下图所示:\n", "\n", "![昇腾全栈](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/r2.0/tutorials/source_zh_cn/beginner/images/introduction1.png)\n", "\n", "下面简单介绍每个模块的作用:\n", "\n", "- **Atlas系列产品**:提供AI训练、推理卡及训练服务器([了解更多](https://www.hiascend.com/ecosystem/industry))。\n", "- **CANN(异构计算架构)**:芯片使能、驱动层([了解更多](https://ascend.huawei.com/zh/#/software/cann))。\n", "- **MindSpore(AI框架)**:全场景AI框架([了解更多](https://www.mindspore.cn/))。\n", "- **MindX SDK(昇腾SDK)**:行业SDK和应用解决方案([了解更多](https://ascend.huawei.com/zh/#/software/mindx-sdk))。\n", "- **ModelArts(AI开发平台)**:华为云AI开发平台([了解更多](https://www.huaweicloud.com/product/modelarts.html))。\n", "- **MindStudio(全流程开发工具链)**:AI全流程开发IDE([了解更多](https://www.hiascend.com/software/mindstudio))。\n", "\n", "详细信息请点击[华为昇腾官网](https://e.huawei.com/cn/products/servers/ascend)。\n", "\n", "## 参与社区\n", "\n", "欢迎每一个开发者都加入到昇思MindSpore的社区中,为全场景AI框架昇思MindSpore添砖加瓦!\n", "\n", "- **昇思MindSpore 官网**:可以全方位了解昇思MindSpore,包括安装、教程、文档、社区、资源下载和资讯栏目等([了解更多](https://www.mindspore.cn/))。\n", "- **昇思MindSpore 代码**:\n", "\n", " - [MindSpore Gitee](https://gitee.com/mindspore/mindspore):2020年Gitee千万开源项目中Gitee指数TOP1项目,一键三连(Watch/Star/Fork)即可随时跟踪MindSpore最新进展,参与issues讨论、提交代码!\n", "\n", " - [MindSpore Github](https://github.com/mindspore-ai/mindspore):Gitee的MindSpore代码镜像,习惯用github的开发者可以在这里进行MindSpore的学习,查看最新代码实现!\n", "\n", "- **昇思MindSpore 论坛**:我们努力地服务好每一个开发者,在昇思MindSpore中,无论是入门开发者还是高手大咖都能找到知音,共同学习,共同成长!([了解更多](https://www.hiascend.com/forum/forum-0106101385921175002-1.html))" ] } ], "metadata": { "kernelspec": { "display_name": "MindSpore", "language": "python", "name": "mindspore" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.5" } }, "nbformat": 4, "nbformat_minor": 5 }