大家好,好久未见的版本解读小编上线了。暨开源以来,MindSpore得到了大家的喜爱,得到了“TOP5 AI开源框架”,“满五维最佳开源项目”等等荣誉,积累起了一部分用户,在1.0版本后,考虑稳定性以及频繁升级可能会给大家带来的额外工作;另外一方面适当拉长开发周期也便于团队深入思考和设计MindSpore演进方向,打磨更加完善和成熟的特性,所以这次MindSpore v1.1.0(后简称1.1版本)发布与上次间隔了3个月左右。当然,看到这次版本特性列表,小编觉得这次发布绝对物有所值,值得期待。下面就带大家快速浏览1.1版本的关键特性。
老规矩,上版本特性视频
(请访问原文观看视频:https://mp.weixin.qq.com/s/JuNZ5bKIkvWJjnL4V4v9Rg)
MindIR是MindSpore提供的中间表达形式,可以帮助大家实现一次训练多处部署,实现端云互通。简单来说,就是你可以在Ascend、GPU、CPU硬件平台上训练生成MindIR格式的模型,然后快速部署到手机端、推理服务器等环境上,体验到MindSpore的全场景能力,而不需要因为训练和推理的硬件不同,单独调整、转换模型。打开MindIR,它是一种基于图表示的函数式IR,定义了可扩展的图结构以及算子的IR表示,它存储了MindSpore基础数据结构,包括计算图、参数权重等。
MindIR通过统一的算子IR定义,消除了不同后端的模型差异,大家可以基于同一个模型文件在端、边、云不同平台上进行协同任务。
MindIR图存储内容(anf图)示意如下:
MindSpore Serving是一个轻量级、高性能的服务模块,旨在帮助MindSpore开发者在生产环境中高效部署在线推理服务。
-
使用简单
提供Python接口配置和启动Serving服务,对客户端提供gRPC和RESTful访问接口,提供Python客户端接口,通过它,大家可以轻松定制、发布、部署和访问模型服务。
-
一键发布和部署
支持模型供应商打包发布模型、预处理和后处理,围绕模型提供定制化服务,并一键部署,服务使用者不需要感知模型处理细节。
-
支持batching
用户一次请求可发送数量不定样本,Serving分割和组合一个或多个请求的样本以匹配模型的实际batch,不仅仅加速了Serving请求处理能力,并且也简化了客户端的使用。
-
高性能高扩展
支持多模型多卡并发,通过client/master/worker的服务体系架构,实现MindSpore Serving的高性能和高扩展性。
-
使用教程:
https://www.mindspore.cn/tutorial/inference/zh-CN/r1.1/serving_example.html
MindSpore开源了端侧训练特性,能够使用端侧计算单元对模型进行fine tuning,以达到AI应用越用越精准的目标。以儿童成长为例,儿童成长过程外貌特征变化大,随着年龄、环境等因素的变化,云侧训练、端侧推理部署的传统形态容易导致误分类或识别错误等问题。
通过端侧训练,可以逐步地根据最新的数据进行模型fine tuning,感知数据的变化,在线学习更新模型。
-
端侧训练快速入门:
https://www.mindspore.cn/tutorial/lite/zh-CN/r1.1/quick_start/train_lenet.html
1.1版本完善了PyNative模式,能够更好地支持大家进行动态图模式执行。使用方式与之前并没有变化,仍然支持一行代码切换静态图模式与动态图模式,修改训练代码中的模式设置,将mode=context.GRAPH_MODE切换成context.PYNATIVE_MODE,从静态图模式切换至动态图模式执行,不过它支持的网络数量大大增加,当前已经支持Model Zoo中30+网络。
在MindSpore PyNative模式下,大家可以像调试python代码一样调试网络模型,打断点,看输出,分析问题。
PyNative模式支持的网络列表:
https://www.mindspore.cn/doc/note/zh-CN/r1.1/network_list_ms.html
MindSpore1.1版本重新设计了调试器的检查能力,增强了易用性,能够更好地帮助用户定位精度问题。
-
丰富了训练信息检查能力
新增近二十项检查规则,支持对权重、激活、梯度、张量等进行针对性的检查,提前发现训练问题。
-
支持重新检查
调整检查规则后支持对当前数据进行重新检查,不漏过可疑点。
-
开箱即用
调试器会自动推荐监测点,帮助用户发现常见精度问题。此外,页面上还会展示调优建议和张量关系图,帮助梳理问题定位思路,快速定位问题。
查看调试器教程:
https://www.mindspore.cn/tutorial/training/zh-CN/r1.1/advanced_use/debugger.html
单节点数据缓存,是指缓存服务器为在同一台机器上的多个客户端提供数据缓存服务,用于加速模型训练中的数据预处理。缓存服务,支持两类数据的缓存,即元数据缓存和预处理后数据缓存,可避免重复的数据加载和预处理,提升数据处理的吞吐量,实现高速数据供给,缩短简单模型的训练时间。
单节数据缓存带来的性能提升,使用单简单网络在ImageNet数据集开展训练任务,吞吐量提升16.1%,训练时长降低13.8%,获得了明显的性能提升。
当前神经网络呈现越来越大型的发展趋势,而越大型的网络在训练时所分配到的并行计算流越多,但是由于缺少多流内存优化器对训练内存进行优化导致内存浪费严重,甚至造成某些大型网络例如T5,GPT3,MegtronLM跑不起来。
针对上述问题MindSpore采用约束编程技术,设计开发了并行拓扑内存约束优化器SOMAS,对并行流信息与数据依赖进行聚合分析,得到算子间祖先关系,构建张量全局生命期互斥约束,再使用多种启发式算法求解获得最优的内存静态规划,实现逼近理论极限的内存复用,可大幅降低多流大型计算图训练内存使用量,进而提升训练的Batch Size数量和训练吞吐量FPS。
-
以BERT-Large数据并行为例 :
采用SOMAS优化后Batch-Size数量可以从160(MindSpore 0.6 Beta)提升到208(MindSpore 1.1)提升30%。
-
以两种模型并行配置对比测试
SOMAS优化后内存大幅降低。
MindSpore与ModelArts上线了在线体验的功能,你可以免(bai)费(piao)使用ModelArts提供的线上GPU、CPU环境,熟悉Google Colab的同学相信对此不陌生。只要浏览器,PC、Pad,甚至有同学通过手机来使用线上环境进行模型训练,让小编也学到了新姿势。
△手机体验线上训练
活跃在论坛的小伙伴通过前期活动体验了几个demo,好评率如潮,纷纷要求后续教程。
MindSpore文档团队加班加点,熬秃了头发,一个月新上线了35篇Notebook教程,方便大家体验MindSpore更多的特性。你可以通过官网教程首页的自定义入口(对,文档团队上线了筛选功能)筛选出在线体验的教程,点击教程上方的“Run in ModelArts”进行体验。
当然,因为ModelArts Notebook还在公测中,如果碰到资源不足的情况,请大家耐心等待,后续Notebook正式上线,会有更多的环境开放。
上面就是小编选的几个关键特性,还不过瘾,可以查看MindSpore v1.1.0的全量特性。
https://gitee.com/mindspore/mindspore/blob/r1.0/RELEASE.md
那么我们v1.2版本再见~
MindSpore官方资料GitHub:https://github.com/mindspore-ai/mindspore
Gitee:https://gitee.com/mindspore/mindspore官方QQ群: 871543426
长按下方二维码加入MindSpore项目↓