摘要:一文带你看看MindSpore 2.0.0 for Windows GPU版。
本文分享自华为云社区《MindSpore 2.0.0 for Windows GPU泄漏版尝鲜》,作者:张辉 。
在看了MindSpore架构师王磊老师的帖子( https://zhuanlan.zhihu.com/p/574507930 )之后,本来张小白要源码编译MindSpore for Windows GPU版的,尽管已经安装了CUDA 11.1和配套的cuDNN 8.6.0 for CUDA 11.X( https://bbs.huaweicloud.com/blogs/381666 ),但是由于各种意外,编译的进度停滞了。然而,凭一点点小道消息,张小白发现了别人编译好的pip安装包:
![](http://dev-img.mos.moduyun.com/20231008/f30fcbd6-9f4c-4d88-9671-646b9d755b60.webp)
嗟来之食张小白也可以吃的,毕竟饿了很久了,慌不择路饥不择食也是情有可原的。
于是,开干!
从上面的文件名 mindspore_gpu-2.0.0-cp37-cp37m-win_amd64.whl 可以看出,这个whl包应该是用Python 3.7编译的。
首先打开Windows的命令行,查看下当前的Python版本:
![](http://dev-img.mos.moduyun.com/20231008/25c7e661-82ff-475d-9065-21ec8197db33.webp)
正好对应了。所以如果文件名是 xxx_cp39_cp39m_xxxx.whl,张小白会怎么办?显然是要先准备一个Anaconda的Python 3.9环境再安装。这个思路不知道读者们Get到了没有。。
不过,这个时候必须要解决一下 安装了CUDA和cuDNN之后的一个小BUG(这其实是源码编译发现的问题,等张小白真的源码编译成功后再仔细解释这件事儿)
就是在 CUDA 11.1和配套的cuDNN 8.6.0 for CUDA 11.X安装手册( https://bbs.huaweicloud.com/blogs/381666 )中,简单的将cuDNN解压是不行的:
![](http://dev-img.mos.moduyun.com/20231008/57d6baee-a362-4040-96dc-f3556723d6b6.webp)
因为MindSpore会直接到$CUDNN_HOME的lib下找文件,而不是到lib/x64目录下找。
所以,自然需要将上图左边的文件拷贝到 $CUDNN_HOME的lib目录下。
好了,这个小插曲解决了之后,我们再来安装MindSpore 2.0.0 for Windows GPU版吧!
pip install mindspore_gpu-2.0.0-cp37-cp37m-win_amd64.whl
![](http://dev-img.mos.moduyun.com/20231008/05218c83-5191-4162-8272-0e1a6e649431.webp)
这就装好了?!张小白有点不相信自己的眼睛(后来的事实表明,确实没那么简单)
再安装MindVision:
pip install mindvision
![](http://dev-img.mos.moduyun.com/20231008/75f1725d-2e6a-4630-90c7-95761aea1350.webp)
...
![](http://dev-img.mos.moduyun.com/20231008/bf82e438-4d80-4021-88aa-15867fee4421.webp)
下载 mindspore_quick_start.py
python mindspore_quick_start.py --device_target=GPU
![](http://dev-img.mos.moduyun.com/20231008/e135e22e-b62c-41f2-a43b-f44e963a1636.webp)
奇怪,刚才不是装过了mindvision了吗?怎么还会报找不到mindvision的错?难道pip被装到了不该装的地方?
那只有一个办法:使用python -m pip install xxx这种安装法了。
python -m pip install mindspore_gpu-2.0.0-cp37-cp37m-win_amd64.whl
![](http://dev-img.mos.moduyun.com/20231008/a78113e8-e4ba-470d-aadd-15e5062aaee7.webp)
python -m pip install mindvision
![](http://dev-img.mos.moduyun.com/20231008/276e034f-b2c9-4acb-9d50-dcffd27c4c42.webp)
![](http://dev-img.mos.moduyun.com/20231008/30cefcdb-cf64-4db0-8910-b742dd1730d6.webp)
下载验证脚本:
下载可以获得 mindspore_quick_start.py 文件。
![](http://dev-img.mos.moduyun.com/20231008/7533cf46-9206-4bee-a0d0-6f9592f63a96.webp)
GPU的第一次验证:
python mindspore_quick_start.py --device_target=GPU
![](http://dev-img.mos.moduyun.com/20231008/7ab620b0-f2a4-4025-8c47-d9a2cbb1d6d8.webp)
好像有点卡:
不过居然走下去了:
![](http://dev-img.mos.moduyun.com/20231008/3f8cab33-aa57-435c-aca3-919fbee214d5.webp)
从目录结构可以看出,它自动创建了lenet和mnist两个目录,然后下载了mnist数据集,然后开始例行的训练、评估、推理流程:
![](http://dev-img.mos.moduyun.com/20231008/8c245e1f-1f5b-43b1-86e0-c7a29a01a8d9.webp)
虽然10轮epoch都已经做完了,但是python代码迟迟没有退出:
![](http://dev-img.mos.moduyun.com/20231008/7033577c-f18d-474c-80c0-5253b3243091.webp)
恐怕真的有点什么问题。
张小白强行中断了当前脚本的执行。
先用以前在ubuntu的GPU环境中常用的test.py脚本试试:
编辑test.py
![](http://dev-img.mos.moduyun.com/20231008/c271fe7e-0f4f-4015-804f-b54a2fd76058.webp)
执行python test.py
![](http://dev-img.mos.moduyun.com/20231008/e5d5d349-713d-4667-878b-d8a45dd431a3.webp)
奇怪,这倒是OK的。应该说明MindSpore GPU版应该是没问题的。
再来试试:
python mindspore_quick_start.py --device_target=GPU
![](http://dev-img.mos.moduyun.com/20231008/fa5a2129-6c80-4d82-8786-aa2e0f688d90.webp)
![](http://dev-img.mos.moduyun.com/20231008/c2a6950e-6ff5-4912-92cd-544357f1a4d9.webp)
![](http://dev-img.mos.moduyun.com/20231008/8398473a-4d10-40ad-95e7-143f5bd833cf.webp)
关闭图形的小窗口后:
![](http://dev-img.mos.moduyun.com/20231008/74d37108-bbe1-42a1-8c53-50f7d41e4983.webp)
居然打印出来了训练的结果:预测:126133,实际126133。嗯,孺子可教也!
不过张小白总觉得GPU训练的时间有点慢,不如用CPU方式训练比较一下:
python mindspore_quick_start.py --device_target=CPU
![](http://dev-img.mos.moduyun.com/20231008/c9ff7f15-65ec-45d9-aafb-1453492db3f6.webp)
![](http://dev-img.mos.moduyun.com/20231008/b413ce56-d4ef-4924-983a-0ac8a5c6d4e7.webp)
![](http://dev-img.mos.moduyun.com/20231008/86bf78a7-a7dd-48c1-adb0-26e3a437ab05.webp)
CPU训练后居然会出现有个图片推理结果错误了。
但是这也许不重要。
我们看下训练的速度比较:
![](http://dev-img.mos.moduyun.com/20231008/200b10da-13fa-4c33-bbab-8b9f623ad522.webp)
看来不能光靠感觉,得靠数字说话,虽然LeNet是个最简单的网络,但是张小白这台2019年的笔记本的GPU的训练速度还是比CPU略快的。