摘要:一文带你看看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安装包:

嗟来之食张小白也可以吃的,毕竟饿了很久了,慌不择路饥不择食也是情有可原的。

于是,开干!

从上面的文件名 mindspore_gpu-2.0.0-cp37-cp37m-win_amd64.whl 可以看出,这个whl包应该是用Python 3.7编译的。

首先打开Windows的命令行,查看下当前的Python版本:

正好对应了。所以如果文件名是 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解压是不行的:

因为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

这就装好了?!张小白有点不相信自己的眼睛(后来的事实表明,确实没那么简单)

再安装MindVision:

pip install mindvision

...

打开 https://obs.dualstack.cn-north-4.myhuaweicloud.com/mindspore-website/notebook/r1.8/tutorials/zh_cn/beginner/mindspore_quick_start.py

下载 mindspore_quick_start.py

python mindspore_quick_start.py --device_target=GPU

奇怪,刚才不是装过了mindvision了吗?怎么还会报找不到mindvision的错?难道pip被装到了不该装的地方?

那只有一个办法:使用python -m pip install xxx这种安装法了。

python -m pip install mindspore_gpu-2.0.0-cp37-cp37m-win_amd64.whl

python -m pip install mindvision

下载验证脚本:

打开 https://obs.dualstack.cn-north-4.myhuaweicloud.com/mindspore-website/notebook/r1.8/tutorials/zh_cn/beginner/mindspore_quick_start.py

下载可以获得 mindspore_quick_start.py 文件。

GPU的第一次验证:

python mindspore_quick_start.py --device_target=GPU

好像有点卡:

不过居然走下去了:

从目录结构可以看出,它自动创建了lenet和mnist两个目录,然后下载了mnist数据集,然后开始例行的训练、评估、推理流程:

虽然10轮epoch都已经做完了,但是python代码迟迟没有退出:

恐怕真的有点什么问题。

张小白强行中断了当前脚本的执行。

先用以前在ubuntu的GPU环境中常用的test.py脚本试试:

编辑test.py

执行python test.py

奇怪,这倒是OK的。应该说明MindSpore GPU版应该是没问题的。

再来试试:

python mindspore_quick_start.py --device_target=GPU

关闭图形的小窗口后:

居然打印出来了训练的结果:预测:126133,实际126133。嗯,孺子可教也!

不过张小白总觉得GPU训练的时间有点慢,不如用CPU方式训练比较一下:

python mindspore_quick_start.py --device_target=CPU

CPU训练后居然会出现有个图片推理结果错误了。

但是这也许不重要。

我们看下训练的速度比较:

看来不能光靠感觉,得靠数字说话,虽然LeNet是个最简单的网络,但是张小白这台2019年的笔记本的GPU的训练速度还是比CPU略快的。

点击关注,第一时间了解华为云新鲜技术~

这是你没见过的MindSpore 2.0.0 for Windows GPU版的更多相关文章

  1. 超赞!12套你没见过的社交媒体 & 社交网站图标

    如今,社交网络成为我们信息获取和传播的重要途径,很多网站都有把内容分享到社交媒体的功能.社交媒体图标作为向用户传递信息的重要媒介,不管是在网页还是 Web 应用程序中都非常需要.今天这篇文章和大家分享 ...

  2. 这是你没见过的不一样的redis

    转: 这是你没见过的不一样的redis 提到Redis,大家一定会想到的几个点是什么呢? 高并发,KV存储,内存数据库,丰富的数据结构,单线程(6版本之前) 那么,接下来,上面提到的这些,都会一一给大 ...

  3. 漫谈Python魔术方法,见过的没见过的都在这里了

    漫谈Python魔术方法,见过的没见过的都在这里了 就说一下,不深入 假的一览 提到魔术方法,学过python都应该知道一些.至少你得会__init__吧. 在我之前写的博文中有很多都涉及魔术方法.比 ...

  4. 创建 userSettings/Microsoft.SqlServer.Configuration.LandingPage.Properties.Settings 的配置节处理程序时出错: 未能加载文件或程序集“System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”或它的某一个依赖项。系统没找到指定的文件

    创建 userSettings/Microsoft.SqlServer.Configuration.LandingPage.Properties.Settings 的配置节处理程序时出错: 未能加载文 ...

  5. 【MindSpore】Docker上成功使用MindSpore1.0.0的GPU版本

    本文是在宿主机Ubuntu16.04上安装Docker(nvidia-docker),并成功进行MindSpore1.0.0的GPU训练: Ubuntu 16.04 Docker Nvidia-doc ...

  6. 地址重写了,只是ip 没转发,应该是9999那个才对,rewrite /sbgl/(.*) http://127.0.0.1:9999/$1 permanent;,这样,

    记录想nginx搞路径重写的失败历程. 1.想将从nginx发出的127.0.0.1:80 请求过来的带sbgl的字眼去掉,然后,代理为127.0.0.1:9999, 所以我就百度出这个  这个  r ...

  7. Qt国际化相关类(以前没见过codec->toUnicode,QTextCodec,QLocale.toString和QLocale::setDefault,QInputMethod::locale())

    QTextCodec QTextCodec为文本编码之间提供转换. Qt用Unicode 来存储,绘制和操作字符串.在很多情况下你可能希望操作不同编码的数据.例如,大部分日本文档是以Shift-JIS ...

  8. 一封来自恶魔的挑战邀请函,那些你见过或者没见过的C语言指针都在这里了

    前言 相信大多数的同学都是第一门能接触到语言是C/C++,其中的指针也是比较让人头疼的部分了,因为光是指针都能专门出一本叫<C和指针>的书籍,足见指针的强大.但如果不慎误用指针,这些指针很 ...

  9. WinAPI你知道多少?!(上千个,好多都没见过)

    http://www.cnblogs.com/vanver/archive/2013/06/13/NO-2013_06_13pm.html 播客开篇,讲讲废话:本篇播客只是推荐给热与钻研的同学们... ...

  10. Qt国际化(Q_DECLARE_TR_FUNCTIONS() 宏给非Qt类添加翻译支持,以前没见过QTextEncoder和QTextDecoder和QLibraryInfo::location()和QEvent::LanguageChange)

    Internationalization with Qt 应用程序的国际化就是使得程序能在国际间可用而不仅仅是在本国可用的过程. Relevant Qt Classes andAPIs 以下的类支持Q ...

随机推荐

  1. 老派Sql之必要,逆天,我在ef core中使用ado.net!

    Wlkr.Core.EFCore 逆天,我在ef core中使用ado.net! 老派Sql之必要 当你开发生涯中基本只用一两种数据库 当你觉得用EF的类写报表时很别扭 当你觉自己的Sql( Serv ...

  2. 关于 Python 字符串切片的小领悟

    1. 什么是 Python 字符串切片? 例如存在字符串 str2 = "abcd1234" ,有以下简单的切片应用. str2[0] # a str2[0:3] # abc st ...

  3. 『STAOI』G - Round 1 半个游记

    很刺激. 挂个链接

  4. 2023寒鹭Tron-CTF迎新赛 CRYPTO Misc 全WP

    CRYPTO 简简单单 1.题目信息 U2FsdGVkX1+2gTXPuTetdM1p+IETUDXAHe2eC33jQfgdJoOmmrJq 2.解题方法 兔子密码,在线工具直接解 简简单单2 1. ...

  5. idea的mybatis插件free mybatis plugin(或 Free MyBatis Tool),很好用

    为大家推荐一个idea的mybatis插件----free mybatis plugin(或 Free MyBatis Tool),很好用(个人觉得free mybatis plugin更好用一点,可 ...

  6. Istio:微服务开发的终极利器,你还在为繁琐的通信和部署流程烦恼吗?

    引言 在前面的讲解中,我们已经提及了微服务的一些弊端,并介绍了Istio这样的解决方案.那么,对于我们开发人员来说,Istio究竟会带来哪些变革呢?今天我们就来简要探讨一下! Kubernetes简单 ...

  7. 归并排序(merge_sort)

    算法时间复杂度:妥妥的nlogn 步骤: 1.确定分界点 mid = (l+r) >> 1 2.递归排序左右两边 3.归并--合二为一(用两个指针,分别指向两个序列) 就是递归到最底部,然 ...

  8. 编辑linux服务启动命令(app-script.sh命令编写)

    #!/bin/sh# 注:这里可替换为你自己的执行程序,其他代码无需更改APP_NAME=app-biz.jar #使用说明,用来提示输入参数usage() { echo "Usage: s ...

  9. 1 HTTP是什么,HTTP不是什么?

    HTTP是什么? HTTP 全程超文本传输协议(HyperText Transfer Protocol). 包含三部分:超文本.传输.协议. 1. 协议 HTTP是一个用在计算机世界里的协议.它使用计 ...

  10. 解决Tensorflow2.0出现:AttributeError: module 'tensorflow' has no attribute 'get_default_graph'的问题

    问题描述 在使用tensorflow2.0时,遇到了这个问题: AttributeError: module 'tensorflow' has no attribute 'get_default_gr ...