MindSpore是华为于2019年8月推出的新一代全场景AI框架。
2020年3月28日,华为宣布昇思MindSpore正式开源。2024年12月14日,昇思人工智能框架峰会在北京召开。
MindSpore的总体框架包括多领域扩展、开发态友好、运行态高效、全场景部署和多样性硬件等,并通过Parameter Server架构支持分布式训练,提供模型缓存、内存复用及超大规模稀疏特征训练能力,同时集成了科学计算套件、强化学习扩展库及模型推理服务模块。MindSpore自2020年昇思开源以来,已孵化、支持50多个国内外主流大模型,开源版本已累计获得1100万次下载,覆盖全球130多个国家和地区的2400多个城市。
发展历史
2019年8月,华为推出新一代全场景AI框架MindSpore。2020年3月28日,华为宣布昇思MindSpore正式开源。9月28日,MindSpore1.0正式发布。
总体架构
参考资料
设计理念
参考资料
安装要求
安装命令
参考资料
第三方依赖
下表列出了安装MindSpore所需的系统环境和第三方依赖。
下面给出第三方依赖的安装方法。
安装Python
Python可通过Conda进行安装。
安装Miniconda:
安装完成后,可以为Conda设置清华大学源加速下载,参考此处。
创建虚拟环境,以Python 3.9.11为例:
可以通过以下命令查看Python版本。
如果您的环境为ARM架构,请确认当前使用的Python配套的pip版本>=19.3。使用以下命令升级PIP。
安装昇腾AI处理器配套软件包
昇腾软件包提供商用版和社区版两种下载途径:
安装包默认安装路径为/usr/local/Ascend。安装后确认当前用户有权限访问昇腾AI处理器配套软件包的安装路径,若无权限,需要root用户将当前用户添加到/usr/local/Ascend所在的用户组。
安装昇腾AI处理器配套软件所包含的whl包。如果之前已经安装过昇腾AI处理器配套软件包,需要先使用如下命令卸载对应的whl包。
默认安装路径使用以下指令安装。如果安装路径不是默认路径,需要将命令中的路径替换为安装路径。
安装GCC
安装MindSpore
首先参考版本列表选择想要安装的MindSpore版本,并进行SHA-256完整性校验。以2.4.1版本为例,执行以下命令。
然后根据系统架构及Python版本执行如下命令安装MindSpore。
在联网状态下,安装whl包时会自动下载MindSpore安装包的依赖项(依赖项详情参见setup.py中的required_package),其余情况需自行安装。运行模型时,需要根据ModelZoo中不同模型指定的requirements.txt安装额外依赖,常见依赖可以参考requirements.txt。
环境变量配置
如果昇腾AI处理器配套软件包没有安装在默认路径,安装好MindSpore之后,需要导出Runtime相关环境变量,下述命令中LOCAL_ASCEND=/usr/local/Ascend的/usr/local/Ascend表示配套软件包的安装路径,需注意将其改为配套软件包的实际安装路径。
验证安装
方法一:
如果输出:
说明MindSpore安装成功了。
方法二:
如果输出:
说明MindSpore安装成功了。
版本情况
v2.4.0
昇思MindSpore2.4版本在硬件架构超节点上使用长序列并行算法Ring Attention和高维张量并行优化,提升模型训练效率。在调试调优阶段,提供流水并行自动负载均衡工具,自动优化集群算力和内存利用率,降低空等时间,实现Pipeline并行分钟级策略寻优,从而降低调试调优成本。支持算子级策略传播算法,简化模型并行策略配置过程, LLAMA类网络和Mixtral类网络策略传播算法可以降低配置80%以上的算子级并行策略。 在大模型推理方面,提供8bit混合量化能力,支持并行解码方式、SLoRA服务化部署,并结合MindIE服务化支持PD分离部署,提升推理效率。其支持长序列并行算法Ring Attention,解决了Transformer模型在长序列训练时面临的内存开销问题。该技术打破了Attention计算的内存限制,实现了超长序列的训练,并优化了计算与通信过程。
昇思MindSpore2.4版本新增支持高维张量并行,允许灵活控制对张量的切分次数和切分轴,支持1D、2D、3D切分。2D/3D切分相对于1D切分,在合适的切分策略下,通信量随着TP设备数增长更慢,在TP设备数较大时有着更低的通信量。
昇思MindSpore2.4版本提供了SAPP(Symbolic Automatic Parallel Planner)自动负载均衡工具。工具将自行构建线性规划问题,通过全局求解的方式,为大模型自动生成流水线并行中的stage-layer配比,调整各layer重计算策略,自动优化集群算力和内存利用率,降低性能调优成本,提升端到端训练性能。
昇思MindSpore金箍棒新增训练后量化PTQ算法提供8bit混合量化能力,通过将网络中线性层从浮点域量化到整型域,能够缓解memory bound,并降低显存和算力开销,从而提升推理性价比。PTQ算法是一种training-free的量化算法,可以通过配置项支持8bit权重量化、SmoothQuant、KVCache 8bit量化以及他们之间的组合算法。
大模型推理在Prefill和Decoding阶段在资源需求和执行时间上有差异,Prefill是计算密集型任务,而Decodeing是存储密集型任务,PD混部会面临资源竞争、缓存压力、延迟增加和负载不均衡等问题。昇思MindSpore2.4版本通过结合MindIE服务化支持PD分离部署。通过将Prefill和Decoding阶段分别部署到不同节点,并结合分布式调度等机制,简化了缓存管理。
LoRA通过对大模型的权重矩阵进行隐式的低秩转换,可以解决大模型微调时存在的参数数量庞大、计算成本高等问题。昇思MindSpore2.4版本支持SloRA,可以在服务化部署时自动修改网络模型,实现LoRA网络结构适配和多LoRA权重加载并共享大部分模型参数。在推理时SLoRA提供了LoRA模型控制接口,实现LoRA任务的自由组合和快速切换。
v2.3.0
昇思MindSpore2.3版本中动态图开发支持算子直调提升API性能,静态图开发支持O(n)多级编译提升调试调优能力,在大模型训练方面,支持大模型场景计算与通信掩盖的优化,并新增接口FlopsUtilizationCollector,提供算力利用率统计能力,在大模型推理方面,推出针对LLM的推理优化方案提升推理性能,MindSpore Transformers提升推理性能与易用性,在科学计算套件方面,MindSpore Flow新增偏微分方程基础模型PDEformer和谱神经算子SNO。
昇思MindSpore框架中,大部分的API使用了小算子进行拼接,因此会有额外的Python和算子launch开销。昇思MindSpore2.3版本提出了算子直调的方式,即正向算子执行直接调用到底层算子接口,减少整体流程和数据结构转换开销。不同API,性能提升0.5~4倍,SD文生图训练端到端性能提升2倍+。昇思MindSpore2.3版本提供了多级编译技术,O0原生构图不优化、O1增加自动算子融合优化、O2整图下沉执行优化。
在O0的编译选项下,发挥原生图编译优势,大部分模型编译性能相比O2提升50%+,同时也支持了DryRun功能,结合这两项技术可以使得大模型调试效率增加;在内存复用方面,使能了SOMAS/LazyInline/控制流Inline来提升内存复用率,同时落地了虚拟内存碎片整理技术,解决了内存碎片导致训练OOM问题;在执行性能方面,使能了计算通信多流并行/运行时流水异步调度技术,同时在O1编译选项下落地了算子融合技术,提升执行性能。
昇思MindSpore 2.3版本针对Tensor并行的通信,昇思MindSpore提出了多副本并行以及反向梯度计算与反向过程Tensor并行的通信掩盖两个技术,达成计算与通信的掩盖。还推出针对LLM的推理优化方案,除在框架层面使用静态图编译模式优化计算图、通过kernel by kernel调度方式降低模型编译耗时外,还结合了金箍棒的量化模型压缩算法、业界主流Flash Attention、Paged Attention算法、算子融合等加速技术,降低显存同时提升大模型推理性能。
MindFormers 1.2.0版本支持昇思MindSpore带框架推理,已支持LLaMA2、LLaMA3、GLM3、Mixtral、Baichuan2、InternLM2等主流大模型的推理。统一训推并行策略接口、封装推理加速接口,实现从训练到高性能推理的迁移。
昇思MindSpore 2.3版新增偏微分方程基础模型PDEformer和谱神经算子SNO。PDEformer是一种可以接受任意PDE形式作为直接输入的神经算子模型,通过生成 PDE 计算图、编码图数据、解码求解的技术路线以达到快速、精准求解大多数一维 PDE 的目的。谱神经算子(Spectral Neural Operator,SNO)是利用多项式将计算变换到频谱空间(Chebyshev, Legendre等)的类似FNO的架构。SNO的特点是由混淆误差引起的系统偏差较小,而且SNO的基的选择更为宽泛,因此可以在其中找到一组最方便表示的多项式。
v2.2.0
昇思MindSpore2.2版本提供Lazy inline模式提高大模型编译效率、大模型开发套件MindSpore Transformers。在生成式领域发布套件MindSpore One集成接口和算法模型,在科学智能领域发布AI4Science高频模型套件MindSpore SciAI和地球科学套件MindSpore 地球。在神经网络模型的流水线并行场景下,对于被重复多次调用的计算单元,传统编译过程会将层级的代码表达inline成一张扁平图,Lazy inline模式则不执行inline或只在执行前的最后阶段inline,从而显著降低了图的规模,实现了编译性能的提升。
MindSpore SciAI是基于昇思MindSpore打造的AI4Science高频模型套件,内置了高频SOTA模型;提供了高阶API,方便开发者和用户使用。 MindSpore SciAI为开发者和用户提供了AI4Science通用计算平台。昇思MindSpore发布了MindSpore 地球地球科学套件0.1版本。该套件集成了多时空尺度下的AI气象预报SOTA模型,提供了数据前处理、预报可视化等工具。
v2.0.0
在MindSpore2.0版本中支持多维混合自动并行能力,提供大模型套件支持一站式训练和训推。提供了大量开箱即用的模型套件,且支持动静统一,同时打造AI+科学计算领域套件,助力技术创新等。昇思MindSpore已支持数据并行、模型并行、MoE并行、流水线并行、优化器并行、异构训练等多种并行方式,可以原生实现大模型训练。基于昇思MindSpore,新增支持LLaMA、Bloom、GLM、GPT等百亿大模型。昇思MindSpore联合中科大、西交、西安电子科技大学等高校打造了CV、NLP、Audio、OCR、YOLO等领域的AI套件,集成了主流的算法模型,统一了接口模块、降低了学习开发成本。
从2.0版本开始,昇思MindSpore默认为动态图模式。在动态图模式下,框架通过多级流水加速算子下发,提升了动态图模式下的网络性能。动态shape场景下优化了自动导数实现,使能CANN的免编译算子能力,降低了反向图构建和算子编译开销,当前已支持语音类、推荐类、CV类网络等各类型动态shape网络编程,性能基本可用。同时通过Fallback方式实现语法支持扩展,提供顶层图支持返回list,dict,标量,none等基础类型的表达能力,从而提升Python语法兼容能力。
v1.9.0
昇思MindSpore1.9版本采用了融合编程的形式,结合函数式和面向对象编程范式,既可以保留面向对象编程的易用性和较低的学习成本,又可以引入函数式编程的数学表达优势,同时避免纯函数式编程陡峭的学习曲线。计算图中所有的通信算子被抽出至画布顶层。计算图中同时展示了并行策略信息。用户能够清晰地观察并行策略相关算子及计算图的执行序,从而确认通信算子存在的合理性。将性能数据与计算图并行策略相结合,提供包含集群层次、卡层次、算子层次等多层次分析的性能可视分析链路,能够帮助用户发现大模型并行训练过程中的常见异常、理解并行训练执行过程。
v1.8.0
在昇思MindSpore1.8版本中发布了MindSpore Golden Stick,提供丰富的模型压缩算法;开源大模型训练套件MindSpore Transformer、推荐网络训练套件MindSpore Recommender,帮助开发者实现高性能的模型并行训练和推荐网络大模型训练;升级了自定义算子能力,实现多平台的统一算子开发表达;统一图像处理类接口、提供model.fit高阶API和早停功能,提升API接口易用性;新增180多个算子的functional接口,并支持NPU、GPU、CPU平台,方便开发者调用。
Transformer为了结合昇思的并行能力和高性能优化特性,让开发者能够快速进行Transformer类网络训练,专门提供的MindSpore 变压器是一个开源的Transformer类网络训练和推理套件。
推荐系统中部署了多种点击率(CTR)模型,为提高推荐点击率,需要对深度CTR模型进行高效的训练,推荐网络的训练性能是模型实时性的重要因素之一。昇思MindSpore 1.8版本在套件中提供了主流推荐网络模型(如Wide&Deep)端到端的训练流程,包括数据集预处理、模型训练、Benchmark等,为开发者提供了一站式的推荐大模型训练能力。
昇思MindSpore1.8版本中,MindSpore 数据模块对于图像类数据预处理操作进行重新设计及改造,从原有的c_transforms和py_transforms两种类型操作合并为transforms统一接口,同时对其中包含的各类数据处理算子进行归一合并,减少开发者混用算子的转换操作。
v1.7.0
昇思MindSpore1.7版本提供了一种数据处理自动调优的工具——Dataset AutoTune。在训练过程中,此工具可以帮助用户根据系统环境资源的情况自动调整MindSpore Data数据处理管道的并行度和内存使用度,利用当前系统资源加快数据处理管道的处理速度。MindSpore Quantum:支持含噪声量子模拟器和量子线路的SVG绘制模式在昇思MindSpore1.7版本中,引入了噪声模拟功能,只用在量子线路中引入不同的噪声信道就能完成含噪量子模拟,从而使自己的模型更接近真实情形,这些噪声信道包含沃尔夫冈·泡利信道、比特翻转信道、相位反转信道等。还支持在Jupiter notebook中展示量子线路的svg格式图片,可以直观地了解线路的构成并方便传播自己的量子算法。
v1.6.0
昇思MindSpore全场景AI框架发布高效易用的图学习框架昇思MindSpore Graph Learning,高性能可扩展的强化学习计算框架昇思MindSpore Reinforcement,提供支持第三方框架模型迁移工具,同时升级自定义算子能力支持高效添加算子,持续提升框架的训练与推理性能。昇思MindSpore Graph Learning:公式即代码,训练加速3到4倍。图数据能自然表达真实世界对象之间的关系,表征能力和可解释性强,图关系大都错综复杂,数据规模较大,通常有数十亿点,数百亿边,点边类型有几百种,图神经网络计算更加复杂耗时,因此迫切需要高效的图神经网络系统。昇思MindSpore Reinforcement:昇思MindSpore全场景AI框架 1.6版本推出了独立的强化学习计算框架昇思MindSpore Reinforcement,通过框架中的Python 编程API以及算法与执行分离的设计使其具有易编程,可扩展等特点。统一Custom接口帮助用户高效添加算子,昇思MindSpore全场景AI框架1.6版本升级了自定义算子的能力,提供支撑包括Ascend,GPU和CPU在内的多平台的统一算子开发接口Custom,帮助用户在昇思MindSpore全场景AI框架方便快捷地进行不同类型自定义算子的定义和使用,可以满足包括快速验证,实时编译和第三方算子接入等不同场景下的用户需求。
v1.5.0
昇思MindSpore1.5版本支持混合专家(MoE)与异构并行、亲和算法库MindSpore Boost、集群调优支持大规模分布式训练,并完善控制流使用,新增对外开放机制等诸多新特性。科学计算行业套件,为高性能科学应用提供计算新范式。通过多尺度混合计算和高阶混合微分两大关键技术,将MindSpore原有的AI计算引擎升级为AI与科学计算的统一引擎,实现融合的统一加速。
如下图所示,Transformer中每层是由Attention和FeedForward(FFN)这两个基础结构组成的。将FFN看作是一个专家(expert),MoE结构是由多个专家并行组成,其入口是一个路由器(router),负责将token分发给各个专家,可以有多种路由策略可选择(如Top,Top2等),其出口是加权求和。
异构并行:受限于GPU/NPU设备的内存瓶颈,有效利用Host端的内存成为解决大模型扩展的一种可行的途径。异构并行训练方法是通过分析图上算子内存占用和计算密集程度,将内存消耗巨大和适合CPU处理的算子切分到CPU子图,将内存消耗较小计算密集的算子切分到硬件加速器子图,框架协同不同子图进行网络训练的过程,能够充分利用异构硬件特点,有效的提升单卡可训练模型规模。
在此版本中,在控制流语法的使用方面提供以下支持与优化:进一步强化了对于静态图控制流的支持,通过使用虚拟机机制执行控制流算子,解决了控制流非尾递归场景的图递归执行问题,实现了对循环求反向的支持。同时扩大了控制流的语法支持范围,控制流已可以支持if、while、for、break、continue表达。优化静态图编译过程,减少了控制流网络的子图数量,大幅提升部分复杂控制流网络场景下的编译性能和执行性能。支持控制流MindIR导入导出功能,可以在云侧训练控制流网络导出MindIR,在端侧导入MindIR进行推理。
v1.3.0
端云场景下的参与方是非常大量的手机或者IoT设备,其分布规模和设备不可靠性带来了系统异构、通信效率、隐私安全和标签缺失等挑战。MindSpore Federated设计了松耦合分布式服务器、限时通信模块、容忍退出的安全聚合等模块,使得任何时候只要部分客户端可用,都可以进行联邦学习任务,并解决了系统异构带来的“长尾效应”,提高了学习效率。搭载于昇思MindSpore端边云全场景统一的基础架构,MindSpore Federated将会作为华为的核心竞争力之一,在保护用户隐私的前提下,提供更具有个性化的用户信息决策。
MindSpore Lite采用了训练内存复用、virtual batch、混合精度训练、在线融合、量化等手段对减少端侧训练时的内存占用。同时在联邦学习MindSpore Federated场景下支持云侧对端侧权重的读写,权重采用差分隐私方式进行端云传输进一步保证了端云训练中的安全性。其通过图层融合与算子生成的协同优化来提升网络执行性能。在之前版本,使能了NPU(昇腾)和GPU上图算融合的基本能力。在1.3版本中,加强了图算融合在GPU上的泛化能力,通过对Model Zoo 40多张主流网络的验证,平均可获得89%的性能提升。
v1.2.0
昇思MindSpore采用多维度自动并行,通过数据并行、模型并行、Pipeline并行、异构并行、重复计算、高效内存复用及拓扑感知调度,降低通信开销,实现整体迭代时间最小(计算时间+通信时间)。
MindSpore Lite正式开源了代码自动生成工具Codegen,旨在将模型编译为极简的代码,用于推理。Codegen可对接MindSpore Lite的NNACL算子库和ARM的CMSIS算子库,支持生成可在X86/ARM64/ARM32A/ARM32M平台部署的推理代码。MindSpore在MindInsight部件中集成了的可解释AI能力:显著图可视化、反事实解释和可解释AI评估体系(度量体系),旨在帮忙开发者更好进行模型调优。显著图可视化和反事实解释:能够为图片分类模型的推理结果,标志影响分类结果的关键特征,方便理解分类依据,帮助分析定位分类错误原因,加速模型调优。面向各种解释方法,给出在具体场景下,选中解释方法在不同度量方法下的解释效果得分,助力用户选择最优的解释方法,从而更好的帮助模型调优。
v1.1.0
MindIR是MindSpore提供的中间表达形式,可以实现一次训练多处部署,实现端云互通。MindIR通过统一的算子IR定义,消除了不同后端的模型差异,大家可以基于同一个模型文件在端、边、云不同平台上进行协同任务。MindSpore Serving是一个轻量级、高性能的服务模块,旨在帮助MindSpore开发者在生产环境中高效部署在线推理服务。MindSpore开源了端侧训练特性,能够使用端侧计算单元对模型进行fine tuning,以达到AI应用越用越精准的目标。在MindSpore PyNative模式下,大家可以像调试python代码一样调试网络模型,打断点,看输出,分析问题。
单节点数据缓存是指缓存服务器为在同一台机器上的多个客户端提供数据缓存服务,用于加速模型训练中的数据预处理。缓存服务,支持两类数据的缓存,即元数据缓存和预处理后数据缓存,可避免重复的数据加载和预处理,提升数据处理的吞吐量,实现高速数据供给,缩短简单模型的训练时间。
并行拓扑内存约束优化器SOMAS对并行流信息与数据依赖进行聚合分析,得到算子间祖先关系,构建张量全局生命期互斥约束,再使用多种启发式算法求解获得最优的内存静态规划,实现逼近理论极限的内存复用,可大幅降低多流大型计算图训练内存使用量,进而提升训练的Batch Size数量和训练吞吐量FPS。
v1.0.0
MindSporev1.0.0版本有三大创新分别是为全流程极简,多套件打造极致开发体验。在1.0版本中,官方提供了40+个典型的高性能模型,覆盖了CV、NLP、推荐、语音等各个领域。该版本中MindSpore提供了所见即所得的模型开发和调优套件。在模型开发阶段,MindSpore基于统一的自动微分引擎,支持用户用一行代码切换动态图和静态图模式;为全自动并行,最大释放集群算力在算法层面,MindSpore拥有自动并行能力,可以根据集群配置对模型和张量自动切分,将串行算法进行自动并行,减少分布式代码开发和调优的负担;在算子层面,MindSpore提供了算子级并行自动融合,通过细粒度pipeline的并行执行的方式,进一步提高计算性能;·在硬件层面,MindSpore进行整图调度,可以根据计算特征,自动把算子调度到异构设备上执行,实现异构多核的高效并行执行;全场景协同,智能匹配端、边、云多样设备.MindSpore 1.0提供模型自适应生成能力,通过平衡模型精度和设备资源约束,自动搜索匹配的模型,开发者只需要做一次训练,得到的模型就可以在端、边、云等多处部署,可保证生成的精度损失小于1%。
MindSpore自研二阶优化算法THOR通过减少二阶矩阵求逆次数以及降低二阶矩阵的维度来降低求逆时间。MindSpore图算融合优化是通过分析和优化现有网络计算图逻辑,对原有计算逻辑进行拆分、重组、融合等操作,以减少算子执行间隙的开销并且提升设备计算资源利用率。MindSpore Lite是MindSpore新发布的一个轻量级神经网络推理框架,帮助开发者使能端侧及边缘侧AI能力。主要包含离线转换工具和轻量级运行时两部分。
0.7.0-beta
昇思MindSpore发布了针对手机及IoT场景,端到端的解决方案——MindSpore Lite。从模型开始到编译发布,提供了包括转换工具、Runtime等工具链,帮助用户在手机以及后续的IoT设备上使能MindSpore的AI能力。深度概率编程:深度概率编程融合了深度学习和托马斯·贝叶斯建模,深度概率模型相比于传统的深度神经网络模型,引入了不确定性,提升了模型的鲁棒性和可解释性。MindSpore在v0.7版本中,提供了概率模型的高效编程库,可以与深度学习模型无缝融合,以面向不同需求的开发者。
MindSpore数据处理组件新增了自动数据增强的能力,支持用户在处理数据过程中定制及调整数据增强操作。主要有以下两种特性:支持基于概率动态调整数据增强策略,根据用户预置策略列表,每次随机选择一个策略,同时同一策略各数据增强算子有不同的概率,按照概率选择算子执行;支持用户根据pipeline上下文信息或训练结果动态调整数据增强策略,支持batch、 epoch粒度调整数据增强策略
0.6.0-beta
模型训练、验证完善后,如何生产上线使用,针对这种情况,MindSpore突出了Serving模块,它是一个轻量级的服务模块,为生产环境而设计,旨在帮助开发者在生产环境中部署在线推理服务。它支持多种编程语言开发客户端,例如C++和Python。当用户使用MindSpore完成模型训练后,导出MindSpore模型,即可使用MindSpore Serving创建该模型的推理服务。
MindSpore Serving当前的主要功能为训练完成后无缝对接推理服务;支持推理模型的预加载,获得更佳性能的推理服务。
PS分布式训练:分布式训练作为MindSpore的特性之一,MindSpore团队在v0.6版本里又添加了新的内容——PS分布式训练。
Parameter Server(参数服务器)是分布式训练中一种广泛使用的架构,既支持同步SGD,也支持异步SGD的训练算法。在扩展性上,将模型的计算与模型的更新分别部署在Worker和Server两类进程中,使得Worker和Server的资源可以独立地横向扩缩。
在MindSpore的参数服务器一共包含三个独立的组件,分别是Server、Worker和Scheduler,作用分别是:保存模型的权重和反向计算的梯度值,并使用优化器通过Worker上传的梯度值对模型进行更新(当前版本仅支持单Server);执行网络的正反向计算,正向计算的梯度值通过Push接口上传至Server中,通过Pull接口把Server更新好的模型下载到Worker本地;用于建立server和Worker的通信关系;相较于同步的AllReduce训练方法,Parameter Server具备着很好的灵活性、可扩展性以及节点容灾的能力。
超大规模稀疏特征训练:像wide&Deep的推荐网络,根据场景不同特征数量可能是千万到百亿的规模,Embedding参数量是GB级到TB级。这么大的参数量,远远超过了设备内存容量,无法直接在设备卡上进行训练。
MindSpore在全下沉模式(所有计算都在Device上)之外,提供了Host-Device混合执行模式,即Embedding部署在host测,DNN和通信下沉到Device侧,来解决embedding容量的问题,发挥昇腾芯片算力;并在此基础上实现了混合并行(Embedding模型并行,DNN数据并行)实现超大规模Embedding的高性能训练。
0.5.0-beta
图算融合将算子与图层的表达进行统一,提供了一种简洁而统一的表达能力,作为算子的一种新的表达方式、融合方法、编译流程。在中间表达中,它用基础原语组成的子图来表达算子的内部计算逻辑,打破了原有算子和图层之间的信息边界。利用统一的表达能力,图算融合实现一种更通用的更细粒度的算子融合能力,通过分析和优化现有网络计算图逻辑,对原有计算逻辑进行拆分、重组、融合,在中间表达中自动形成融合子图。在后端,这些融合子图会由AKG(Auto Kernel Generator)自动生成高性能的融合算子,且基于polyhedral实现了Auto schedule,从而实现网络整体执行时间的端到端深度优化。在昇思MindSpore 0.5版本,MindSpore上线了量化训练部分,用户可以使用MindSpore进行量化训练,它能在不明显降低精度的情况下,把模型尺寸减低为原来的25%~40%,同时能减少模型内存占用,加快模型推理速度,降低功耗等。昇思MindSpore 0.5版本上线了混合异构特性,即支持网络中部分算子跑在Host端,部分算子跑在Device端。在一些网络执行过程中需要用到大量的内存,而Device内存无法满足训练要求,有了Host/Device异构执行,用户可以将操作大数据的算子设置在Host执行,从而解决网络无法在纯Device端训练的问题。
图神经网络的研究成为一个热门方向,在社交网络、知识图谱、推荐系统,生命科学等领域有广泛的应用场景;MindSpore新版本可支持图神经网络的训练,最典型的GCN和GAT网络在Cora和Citeseer数据集上做混合精度训练。MindSpore可视化组件(MindInsight)更新了系统化的性能分析工具——Profiler,用户能够使用它来帮助理解、分析、调试并优化神经网络的性能。使用Profiler可以在训练脚本中启动、停止Profiler功能,收集性能分析数据;查看训练的迭代轨迹(指step间隔、前向/反向计算、AllReduce等各阶段时间占比)统计信息,定位性能瓶颈所在的阶段;分析神经网络中算子的执行性能,包括单算子性能分析和算子类型性能分析;分析训练数据准备(MindData)阶段的性能,定位数据算子的瓶颈所在;查看训练timeline,分析stream/task在Ascend芯片上的执行序列和执行时间。
0.3.0-alpha
MindSpore的安全组件提供了差分隐私训练模块,用户可以使用添加高斯噪声的差分隐私优化器(DP-SGD),训练出保护隐私的AI模型。同时MindSpore还提供了差分隐私预算监测器,方便用户在训练过程中跟踪差分隐私的保护效果。昇思MindSpore在v0.3版本中重磅推出了二阶优化,平衡了二阶带来的额外计算量,在ResNet网络上达到目标精度(0.759)仅用了42个迭代(epoch),比同样软硬件环境下的一阶优化快了近1倍(一阶优化使用了81epoch达到目标精度),训练效率得到提高。昇思MindSpore提供了模型转换工具,目标将PyTorch训练脚本快速转换成MindSpore训练脚本,自动替换其中90%以上的算子,节省大量算子查询和替换工作。剩余未替换部分也会标注出来,让用户快速定位,聚焦工作。除了这些,MindSpore还新增支持了DeepFM、DeepLabV3、Wide&Deep等新的模型,修复了一些关键bug,增添了网络迁移教程、自定义算子教程等等。
0.2.0-alpha
MindSpore 0.2.0-alpha版本支持Windows,其使用上与Linux CPU版本无异,支持LeNet网络等。昇思MindSpore 0.2版本发布了benchmark,包含有机器视觉类常用网络ResNet-50 v1.5、自然语言处理常用网络BERT-Large,分别在1*Ascend 910、8*Ascend 910、16*Ascend 910等不同规格的昇腾AI处理器上训练速度和加速比。可视化工具功能强化参数直方图MindSpore 0.1版本发布时,可视化功能已经包含有模型可视化、模型溯源、数据溯源等功能,0.2版本推出可视化组件的新特性“参数分布图”,支持可视化权重和梯度分布情况。支持在网络优化过程中,观察权重&梯度随训练过程的变化,可以帮助用户在网络调优时,判断网络的优化进展。其溯源自定义可以帮助用户记录、查询模型迭代调试开发过程使用的模型超参和数据处理增强。只需要在模型训练测试过程添加TrainLineage/EvalLineage callback记录溯源信息,即可在MindInsight模型溯源和数据溯源标签页回溯查看。它还支持通过user_defined_info参数记录自定义溯源信息以及模型参数和数据处理参数的筛选和排序。
影响作用
MindSpore自2020年昇思开源以来,已孵化、支持50多个国内外主流大模型,开源版本已累计获得1100万次下载,覆盖全球130多个国家和地区的2400多个城市。国际开源资源门户网站PaperwithCode网站显示,基于昇思的原创论文发表已累计超过1700篇,位列全球第二、中国第一。
相关事件
2024年12月14日,昇思人工智能框架峰会在北京召开,峰会汇聚国内AI领域领军院士、开源社区领袖、商业精英以及技术大咖等,共同探讨AI技术发展趋势与产业机遇。
参考资料 >
华为昇思人工智能框架峰会即将召开 AI应用端加速繁荣.今日头条.2024-12-17
MindSpore.MindSpore.2024-12-17
昇思支持50个主流大模型 华为称持续投入AI开源框架.今日头条.2024-12-17
华为MindSpore1.0正式发布.界面新闻.2024-12-17
安装.MindSpore.2024-12-18
昇思MindSpore 2.4版本发布,提供SAPP、8bit混合量化等关键能力,提升大模型训练与推理效率 | 昇思MindSpore社区.MindSpore.2024-12-18
昇思MindSpore2.3版本正式上线,增强动/静态图与大模型能力.昇思MindSpore.2024-12-18
昇思MindSpore 2.2,提升大模型编译效率,支持更多热门预训练大模型.昇思MindSpore.2024-12-18
昇思MindSpore 2.0,框架全新升级,使能科研创新与产业应用 | 昇思MindSpore社区.昇思MindSpore.2024-12-18
昇思MindSpore 1.9,不断提升易用性和效率!.mindspore.2024-12-18
昇思MindSpore 1.8:丰富的算法集与套件,实现高性能训练,降低部署门槛.昇思MindSpore .2024-12-18
昇思MindSpore 1.7:易用灵活新起点,带给开发者新体验.MindSpore.2024-12-18
昇思MindSpore全场景AI框架 1.6版本,更高的开发效率,更好地服务开发者.MindSpore.2024-12-18
新版本|昇思MindSpore再升级,深度科学计算的极致创新.MindSpore.2024-12-18
新版本 | MindSpore 1.3,打造无所不在的智能,诠释可以信赖的开源.MindSpore.2024-12-18
MindSpore 1.2:国内首个支持千亿参数大模型训练的AI计算框架.MindSpore.2024-12-18
MindSpore 1.0版本正式发布!.MindSpore.2024-12-18
MindSpore 1.0版本正式发布!.MindSpore.2024-12-18
MindSpore新版本v0.7.0-beta发布!.mindspore.2024-12-18
MindSpore新版本v0.6.0-beta解读.MindSpore.2024-12-18
MindSpore新版本v0.5.0-beta解读.MindSpore社区隐私政策变更声明.2024-12-18
MindSpore新版本v0.3.0-alpha解读.MindSpore.2024-12-18
MindSpore 新版本(0.2.0-alpha)解读.MindSpore.2024-12-18