赶在2020年最后一天,Gitee明星开源项目全场景AI框架 MindSpore 也发布了 1.1 的版本,也意味着MindSpore迎来了新的起点新的征程。年底的MindCon极客周活动让我收获不少,新版本发布,怎么少得了Copy攻城狮的Hello World呢?
全新体验
继2020年3月, MindSpore 正式开源,到2020年9月正式发布1.0版本,MindSpore一步一个脚印,终于在2020年11月喜获 OSC 中国开源项目最佳人气项目奖。2021年,MindSpore发布了1.1版本,在新版本增加了统一IR格式MindIR实现一次训练多次部署;提供了全场景部署能力实现MindSpore端云互通;完善了PyNative模式,开发调试更友好;重新设计了调试器的检查能力,更加易用精准;新增了端侧训练特性,使得AI应用越用越精准……而对于Copy攻城狮来说,最喜爱的是教程大规模更新以及打通了一站式AI开发平台ModelArts,在手机上也能学习模型开发及训练;另一个喜爱的点是在Windows上有了更好的安装体验。今天就给大家简单跑一跑 MindSpore 1.1 的 HelloWorld -- 跑通图片分类 LeNet 模型,弥补之前在Windows上安装失败而放弃学习的遗憾!
安装
在新版下,Windows的安装体验似乎变得更加丝滑,一行命令安装,一行命令验证安装结果。安装使用的是官方文档提供的脚本,使用到了华为云自家的资源和清华pip镜像,这也许是我和清华唯一的交集:
pip install https://ms-release.obs.cn-north-4.myhuaweicloud.com/1.1.0/MindSpore/cpu/windows_x64/mindspore-1.1.0-cp37-cp37m-win_amd64.whl --trusted-host ms-release.obs.cn-north-4.myhuaweicloud.com -i https://pypi.tuna.tsinghua.edu.cn/simple
# 注意参考官方文档的安装指南,确保安装依赖以及环境变量配置正确
# 本次选择选项 1.1.0 Windows CPU Python3.7.5 pip

mindspore windows install
安装完毕之后还需校验一下本次安装是否成功:
python -c "import mindspore;print(mindspore.__version__)"
# 1.1.0

mindspore check install
以上能正常输出MindSpore版本号,Windows上成功安装 MindSpore 1.1.0。接下来开始疯狂Copy代码吧!
实操
本次实操会基于Lenet实现一个简单的图片分类的功能,涉及到数据集的准备和处理、定义网络&损失函数&优化器、数据集加载、模型加载\保存\推理\验证等过程,是一些基本的操作,万丈高楼平地起,Copy攻城狮就从这平地开始吧!
数据集准备
数据集: http://yann.lecun.com/exdb/mnist/
能够自己动,绝不手动!我们通过python脚本来下载数据集。我们会引入文件下载和加压gzip文件必备的依赖;定义解压gzip文件的方法;定义下载进度的方法,下载完毕就解压文件最后移除;最后定义数据集下载主函数。
具体代码请查阅:https://gitee.com/mindspore/docs/blob/r1.1/tutorials/tutorial_code/lenet/utils/dataset.py
数据集的准备工作主要是为了生成如下的文件夹结构,test存放推理数据,train存放训练数据:
└─MNIST_Data ├─test │ t10k-images.idx3-ubyte │ t10k-labels.idx1-ubyte │ └─train train-images.idx3-ubyte train-labels.idx1-ubyte

mindspore lenet mnist
训练及推理
我们会用到一些python库和MindSpore中的一些模块,如 os 指定数据集路径,context模块配置运行需要的信息,dataset模块处理数据集如定义数据集、数据增强等,继承mindspore.nn.Cell
定义神经网络,从mindspore.nn.loss
引入损失函数等等,可以在文件开头引入我们所需要的依赖。然后使用mindspore.dataset
模块进行数据集处理;接着定义Lenet网络、定义损失函数及优化器并对模型保存和训练网络进行配置。
具体代码请查阅:https://gitee.com/mindspore/docs/blob/r1.1/tutorials/tutorial_code/lenet/lenet.py
最后执行python命令进行训练,训练及推理完毕即可查看结果:
epoch: 1 step: 1866, loss is 0.1575163 epoch: 1 step: 1867, loss is 0.31445956 epoch: 1 step: 1868, loss is 0.043173585 epoch: 1 step: 1869, loss is 0.12036275 epoch: 1 step: 1870, loss is 0.12131009 epoch: 1 step: 1871, loss is 0.3510599 epoch: 1 step: 1872, loss is 0.078447945 epoch: 1 step: 1873, loss is 0.08664515 epoch: 1 step: 1874, loss is 0.15272087 epoch: 1 step: 1875, loss is 0.007838262 ============== Starting Testing ============== ============== Accuracy:{'Accuracy': 0.9649439102564102} ==============

mindspore lenet
小结
整个流程走完不超过15分钟,在我16年的粗粮笔记本上居然也能流畅运行,尽管因为有代码容易跑起来,但真正想搞懂里边涉及的方方面面可不是一朝一夕就能实现的。路漫漫兮其修远,Copy攻城狮也将上下求索!
如有不当,欢迎指正!
联系作者:huqi@gpdi.com