Micro,Tiny,Mini,Lite是一群好搭档(傻傻分不清楚)。如果没有特别跟你说,一般情况下你都不知道带这些单词的词组到底是什么意思。比如MindSpore Lite是MindSpore的端边AI引擎,TensorFlow Lite是TF在移动设备和嵌入式设备的轻量级解决方案。这两个是要对标的。那么TinyMS,作为Tiny、Modular、Simple的缩写,对标的却是Keras——Tensorfow的高阶API。当然,同时被华为TinyMS对标的是Fastai——PyTorch的高阶API。我们一直知道的是,MindSpore的移植最常见的就是从TF和PyTorch迁移,那么Keras和Fastai这对胖哥俩,自然一个都少不了。
闲话少说,我们就看看TinyMS该怎么玩吧。
在玩转TinyMS之前,得先去B站看下曼sir的保姆级教程(一共10集,目前已推出了5集):
【保姆级教程】EP01-最适合小白的深度学习入门课程来了!
https://www.bilibili.com/video/BV1MB4y1P79S
【保姆级教程】EP02-计算机是如何识别图像的?+TinyMS三种安装方式详解
https://www.bilibili.com/video/BV18v41187fX
【保姆级教程】EP03-30min速成Shell脚本命令
https://www.bilibili.com/video/BV1vy4y1b7jh
【保姆级教程】EP04-30min速成Python指南(上)| MindSpore高阶API工具TinyMS系列教程
https://www.bilibili.com/video/BV1Tp4y1b7UG
【保姆级教程】EP05-30min速成Python指南(下)| MindSpore高阶API工具TinyMS系列教程
https://www.bilibili.com/video/BV1XS4y1Z7yp
其实看了第二段,就可以安装TinyMS了。
当然,我们还是要结合官网:https://tinyms.readthedocs.io/zh_CN/v0.3.1/quickstart/install.html
张小白还是用WSL2(Ubuntu 18.04)来安装吧。
这上面已经安装好了Anaconda,但是Python是3.8版本
所以用conda建一个python 3.7.5的环境:
按Y继续:
确认了3.7.5的大蟒蛇眼神之后,开始安装:
pip install tinyms==0.3.1 -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
看来还得降级装一下0.3.0的版本:
pip install tinyms==0.3.0 -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
。。。
验证安装是否成功:
查看tinyms的版本:
pip show tinyms
查看下wsl2的IP地址:(好像看了也没啥用)
启动jupyter lab:
我们到JupyterLab页面去看看怎么玩转TinyMS。
浏览器打开以下地址:
http://127.0.0.1:8888/lab?token=ce99234cec88f7be435dbb47d16cfe5d5de656d1d5369692
选择Python后打开:
奇怪,怎么没有tinyms包呢?
经过度娘得知,原来还需要安装下nb_conda:
安装之后,好像还是不行。
再二次度娘“jupyter notebook 设定指定conda环境”得知:jupyter notebook 设定指定conda环境_gs344937933的专栏-CSDN博客
需要做个设置:
python -m ipykernel install --user --name tinyms --display-name "Python (tinyms)"
然后再到Notebook中,切换下内核:
再重试下:
好了,那我们来试下样例的TinyMS吧( https://tinyms.readthedocs.io/zh_CN/v0.3.1/quickstart/quickstart_in_one_minute.html )
感觉好像还是版本不匹配引起的,试着安装下tinyms的0.3.1版本吧:
pip install tinyms==0.3.1
不使用国内pip源速度慢一点,但是却可以装。那就耐心等待安装结束吧。
再来重启jupyter lab和重新执行Notebook
终于可以了。(牛年不容易,期望虎年容易些。。)
创建LeNet网络:
下载数据集:
耐心等待下载完毕:
下面开始训练模型:
。。。
耐心等待第一个epoch 1875个step结束:
可见左边的ckpt模型文件已经生成。
然后开始评估:
定义servable json
启动服务器:
此时,因为这个命令没有执行完毕,所以出现不了数字。
再打开一个新的Notebook(选择TinyMS内核)
准备图片:
查看后台模型:
进行推理(通过serving发送请求)
可以看到推理的结果是7。
再切换到原来的服务端,关闭服务:
这就完成了手写数字LeNet网络的训练和推理过程。
从上面的体验可以看出:
(1)从主体代码来看,TinyMS像是将基本代码和MindSpore Serving做了个结合。
(2)训练代码在建立网络上略显得简洁,训练参数也略有减少,但是所有的步骤貌似都没减少。如果让用户看到更少的参数设置或许会更好一点。
(3)推理代码一行话完成,确实也简洁了很多。说明TinyMS团队的目标就是让开发者使用起来更简单一些。
(全文完,谢谢阅读)