Anaconda安装
在要运行的环境下安装Anaconda(或Miniconda),我选择的是Anaconda。Anaconda下载地址
安装步骤

#获取下载的文件Anaconda3-2021.04-Linux-x86_64.sh
cd ./home
wget https://repo.anaconda.com/archive/Anaconda3-2021.05-Linux-x86_64.sh
#执行安装文件
bash ./Anaconda3-2021.04-Linux-x86_64.sh
#同意安装协议输入yes和一堆回车
#安装结束需要输入yes初始化Miniconda
source ~/.bashrc     #更新环境变量
conda -V   #查看是否安装成功(或者另开一个窗口测试)

MindSpore下载
版本列表地址:根据不同环境(CPU、GPU)下载不同版本MindSpore。本文以MindSpore1.1.1为例,GPU加速的MindSpore下载地址。

ResNet-50实现cifar10图像分类
具体实验介绍参考另一篇文章使用ResNet-50网络实现图像分类
文件结构
cifar10:下载地址。解压得到得到cifar10
resnet.py:下载地址
mindsporetest.py

from IPython import get_ipython
import mindspore.nn as nn
from mindspore import dtype as mstype
import mindspore.dataset as ds
import mindspore.dataset.vision.c_transforms as C
import mindspore.dataset.transforms.c_transforms as C2
from mindspore import context
import numpy as np
import matplotlib.pyplot as pltcontext.set_context(mode=context.GRAPH_MODE, device_target="CPU")
#根据不同加速环境选择CPU、GPU、Ascend
def create_dataset(data_home, repeat_num=1, batch_size=32, do_train=True, device_target="CPU"):"""create data for next use such as training or inferring"""cifar_ds = ds.Cifar10Dataset(data_home,num_parallel_workers=8, shuffle=True)c_trans = []if do_train:c_trans += [C.RandomCrop((32, 32), (4, 4, 4, 4)),C.RandomHorizontalFlip(prob=0.5)]c_trans += [C.Resize((224, 224)),C.Rescale(1.0 / 255.0, 0.0),C.Normalize([0.4914, 0.4822, 0.4465], [0.2023, 0.1994, 0.2010]),C.HWC2CHW()]type_cast_op = C2.TypeCast(mstype.int32)cifar_ds = cifar_ds.map(operations=type_cast_op, input_columns="label", num_parallel_workers=8)cifar_ds = cifar_ds.map(operations=c_trans, input_columns="image", num_parallel_workers=8)cifar_ds = cifar_ds.batch(batch_size, drop_remainder=True)cifar_ds = cifar_ds.repeat(repeat_num)return cifar_dsds_train_path = "./cifar10/train/"
dataset_show = create_dataset(ds_train_path)
with open(ds_train_path+"batches.meta.txt","r",encoding="utf-8") as f:all_name = [name.replace("\n","") for name in f.readlines()]iterator_show= dataset_show.create_dict_iterator()
dict_data = next(iterator_show)
images = dict_data["image"].asnumpy()
labels = dict_data["label"].asnumpy()
count = 1
get_ipython().run_line_magic('matplotlib', 'inline')
for i in images:plt.subplot(4, 8, count)# Images[0].shape is (3,224,224).We need transpose as (224,224,3) for using in plt.show().picture_show = np.transpose(i,(1,2,0))picture_show = picture_show/np.amax(picture_show)picture_show = np.clip(picture_show, 0, 1)plt.title(all_name[labels[count-1]])picture_show = np.array(picture_show,np.float32)plt.imshow(picture_show)count += 1plt.axis("off")print("The dataset size is:", dataset_show.get_dataset_size())
print("The batch tensor is:",images.shape)
plt.show()from resnet import resnet50net = resnet50(batch_size=32, num_classes=10)import mindspore.nn as nn
from mindspore.nn import SoftmaxCrossEntropyWithLogitsls = SoftmaxCrossEntropyWithLogits(sparse=True, reduction="mean")
opt = nn.Momentum(filter(lambda x: x.requires_grad, net.get_parameters()), 0.01, 0.9)from mindspore.train.callback import ModelCheckpoint, CheckpointConfig, LossMonitor
from mindspore import load_checkpoint, load_param_into_net
import os
from mindspore import Modelmodel = Model(net, loss_fn=ls, optimizer=opt, metrics={'acc'})
# As for train, users could use model.trainepoch_size = 10
ds_train_path = "./cifar10/train/"
model_path = "./models/ckpt/mindspore_vision_application/"
os.system('rm -f {0}*.ckpt {0}*.meta {0}*.pb'.format(model_path))dataset = create_dataset(ds_train_path )
batch_num = dataset.get_dataset_size()
config_ck = CheckpointConfig(save_checkpoint_steps=batch_num, keep_checkpoint_max=35)
ckpoint_cb = ModelCheckpoint(prefix="train_resnet_cifar10", directory=model_path, config=config_ck)
loss_cb = LossMonitor(142)
model.train(epoch_size, dataset, callbacks=[ckpoint_cb, loss_cb])# As for evaluation, users could use model.eval
ds_eval_path = "./cifar10/test/"
eval_dataset = create_dataset(ds_eval_path, do_train=False)
res = model.eval(eval_dataset)
print("result: ", res)# ## 总结
#
# 本次体验,带领体验者了解了MindSpore的卷积神经网络ResNet-50,通过构建ResNet-50对CIFAR-10进行分类。可以看出MindSpore的ResNet-50的构建非常容易,损失函数和优化器都有封装好的API,对于初学者和研发人员都非常的友善。

(Ubuntu18.04服务器)CPU运行

云服务器信息

环境配置
配置安装Anaconda
进入mindsporetest.py的目录

#安装好Anaconda#命令创建虚拟环境,Python版本为3.7.5
conda create –n MindSpore python==3.7.5
#激活对应虚拟环境:
conda activate MindSpore
#安装MindSpore 1.1.1版本
pip install https://ms-release.obs.cn-north-4.myhuaweicloud.com/1.1.1/MindSpore/cpu/ubuntu_x86/mindspore-1.1.1-cp37-cp37m-linux_x86_64.whl --trusted-host ms-release.obs.cn-north-4.myhuaweicloud.com
#测试是否安装成功
python
import mindspore     #无报错则说明安装成功
conda activate MindSpore
python mindsporetest.py
#如果报错相关的相关的包,再MindSpore下通过
#pip install matplotlib ipython
#进行下载

测试结果



结果分析
最后一个模型的正确率没有运行出来没因为前面有一行代码忘记注释掉了,前面发生了报错,时间主要花费在了训练和保存模型文件,并且一共迭代了十次,大概花费了9个小时,emmmm当初由于代金券余额不充足没有选择更高配置的环境。

还有一个有意思的事情,服务器下的CPU在运行时显示 training process will be performed with dataset no sink。具体分析可以查看这篇文章:MindSpore model.train中的dataset_sink_mode该如何理解?


至于或者Ubuntu18.04的图像化界面,刚开始直接使用命令行感觉不太舒服,总想安装一波图形化界面,其实也挺好玩的,就又试了一下。其实也很简单可以参考官方文章:Ubuntu系列弹性云服务器如何安装图形化界面?

(Ubuntu16.04服务器+18.04镜像)GPU加速

华为云服务器信息:

MindSpore环境搭建:
环境搭建思路:服务器能提供的GPU加速的Ubuntu版本只有16.04所以需要先在Ubuntu16.04上拉取cuda10.1-cudnn7-ubuntu18.04的镜像,然后在容器中通过Anaconda创建python3.7.5的环境并成功安装mindspore_gpu_1.1.1。

#安装nvidia-docker之前必须在宿主机上安装nvidia-driver和docker;nvidia-smi                    # 检查宿主机是否安装了 nvidia-driver
docker version                # 检查宿主机上安装的docker版本
nvidia-docker version         # 检查宿主机上安装的nvidia-docker版本
#貌似服务器上都已经安装了

安装步骤
为避免不必要的错误,后续使用的全部都是nvidia-docker

#拉取nvidia/cuda:10.1-cudnn8-devel-ubuntu18.04的镜像
nvidia-docker pull nvidia/cuda:10.1-cudnn7-devel-ubuntu18.04  #镜像内创建容器此处一定是nvidia-docker创建
nvidia-docker run -it nvidia/cuda:10.1-cudnn7-devel-ubuntu18.04 /bin/bash
#此时进入容器并有一个containerID#在容器内安装Anaconda
##容器内直接下载可能会报错,所以用exit退出容器
exit
##进入ubuntu下的./home文件夹下
cd ./home#获得Anaconda安装文件
wget https://repo.anaconda.com/archive/Anaconda3-2021.05-Linux-x86_64.sh
#anaconda3.sh 文件拷贝至容器根目录下,containID换成自己的
nvidia-docker  cp ./home/Anaconda3-2021.05-Linux-x86_64.sh containerID:/
# 启动容器并进入
nvidia-docker  start containerID
nvidia-docker exec -it containerID  /bin/bash
# 安装anaconda
bash Anaconda3-2021.05-Linux-x86_64.sh
………
……… #一系列操作安装Anaconda
conda -V #查看是否安装成功
#安装anaconda后需先退出容器再进入,才能再容器中使用conda
exit
nvidia-docker  start containerID
nvidia-docker exec -it containerID  /bin/bash
#进入容器,创建MindSpore虚拟环境
conda create -n mindspore1.1.1 python=3.7.5
# 激活指定环境
conda activate mindspore1.1.1
###在从ubuntu向容器中拷贝文件时可以多开一个远程连接就不用一直进入和退出容器。#下面操作为另一个连接窗口
#ubuntu下载GPU版本的mindspore_gpu-1.1.1-cp37-cp37m-linux_x86_64.whl并拷贝到容器中
cd ./home
wget https://ms-release.obs.cn-north-4.myhuaweicloud.com/1.1.1/MindSpore/gpu/ubuntu_x86/cuda-10.1/mindspore_gpu-1.1.1-cp37-cp37m-linux_x86_64.whl
nvidia-docker  cp ./home/mindspore_gpu-1.1.1-cp37-cp37m-linux_x86_64.whl containerID:/
#在ubuntu下创建testGPU.py并拷贝到容器中测试环境是否配置成功
vim testGPU.py
nvidia-docker  cp ./home/testGPU.py containerID:/#在容器中执行文件安装mindspore_gpu-1.1.1-cp37-cp37m-linux_x86_64.whl并测试
(mindspore1.1.1)root@containID: pip install mindspore_gpu-1.1.1-cp37-cp37m-linux_x86_64.whl
(mindspore1.1.1)root@containID: python testGPU.py
#运行结果如下,则说明安装成功
[[[ 2.  2.  2.  2.],[ 2.  2.  2.  2.],[ 2.  2.  2.  2.]],[[ 2.  2.  2.  2.],[ 2.  2.  2.  2.],[ 2.  2.  2.  2.]],[[ 2.  2.  2.  2.],[ 2.  2.  2.  2.],[ 2.  2.  2.  2.]]]

testGPU.py

import numpy as np
from mindspore import Tensor
from mindspore.ops import functional as F
import mindspore.context as context
context.set_context(device_target="GPU")
x = Tensor(np.ones([1,3,3,4]).astype(np.float32))
y = Tensor(np.ones([1,3,3,4]).astype(np.float32))
print(F.tensor_add(x, y))

实验文件结构
cifar10、resnet.py、mindsporetest.py(将device_target设为GPU)

nvidia-docker  cp ./home/cifar10 containerID:/
nvidia-docker  cp ./home/resnet.py containerID:/
nvidia-docker  cp ./home/mindsporetest.py containerID:/

测试结果

结果分析

实际测试结果还是比较快的,大概花费了40分钟左右吧,上面的实验步骤是参考了另一篇配置mindspore1.0.1的文章:【MindSpore】Ubuntu16.04上成功安装GPU版MindSpore1.0.1,收获颇多,而且文章很清晰。

在根据文章配置的时候也遇到了一些其他零碎的问题,但也参考搜索了其他文章并一一解决。(Nvidia-docker好像出了点问题)。

其实在前面测试了直接在ubuntu16.04配置环境,没有使用容器,也不了解这个概念,然后就把开始的那个服务器搞得进不去了,其实最开始参考的那篇文章也有问题。

(ModelArts服务器)Ascend加速

MindSpore:教程 (r1.2)机器视觉 >使用ResNet-50网络实现图像分类:使用ResNet-50网络实现图像分类

MindSpore教程:run in ModelAtrs

实验准备
使用ModelArts需要在对象存储服务中创建OBS桶,然后将通过OBS桶上传到ModelAtrs中。

实验结果:

实验分析
这个MoedelAtrs服务器是比较容易搭建的,而且测试速度极快,但是花费有点小高。而且对于那个文件目录我还是没有太过理解,不清楚那个wget下载的文件的存储位置,但也算是勉强出来结果了。具体代码和步骤可以参考官方教程。

最后贴上服务器费用…

分别在(ModelAtrs)Ascend、(Ubuntu16.04服务器+18.04镜像)GPU、(Ubuntu18.04)CPU下通过MindSpore实现(cifar10)图像分类相关推荐

  1. 【Ubuntu18.04】移动固态硬盘安装ubuntu18.04、NIVDIA、CUDA、CUDNN——01

    [Ubuntu18.04安装及配置唠叨版]"轻轻松松"拿下ubuntu18.04.NIVDIA.CUDA.CUDNN--01 心路简要:建议直接找到有用的部分操作hhh 为什么要装 ...

  2. linux18.04安装显卡驱动,详细介绍ubuntu18.04安装NVIDIA显卡驱动(亲测有效!)

    详细介绍ubuntu18.04安装NVIDIA显卡驱动(亲测有效!) 详细介绍ubuntu18.04安装NVIDIA显卡驱动(亲测有效!) 详细介绍ubuntu18.04安装NVIDIA显卡驱动(亲测 ...

  3. VMware Workstation Pro通过ISO系统镜像安装ubuntu-18.04.2

    Windows10 打开VMware 编辑→设备→更改设置→启动打印机 安装IOS镜像 主页→创建新的虚拟机→自定义→下一步→选择15下一步→选择ISO镜像安装→选择镜像→下一步→输入信息→命名虚拟机 ...

  4. ubuntu服务器ssh登录密码修改,Ubuntu-18.04 下修改root用户密码,安装SSH服务,允许root用户远程登录,安装vsftp服务器...

    修改root用户密码 打开终端,输入 sudo passwd root 指令: 安装SSH服务 ssh默认端口号是22,可以在/etc/ssh/sshd_config文件中修改 查看服务器否开启:ne ...

  5. 树莓派 4B安装ubuntu18.04与melodic版ROS

    使用的树莓派 Raspberry Pi 4 -- 8GB 在这个连接中http://old-releases.ubuntu.com/releases/bionic/或http://cdimage.ub ...

  6. Ubuntu系统升级16.04升级18.04

    一.需求说明   作为Linux发行版中的后起之秀,Ubuntu 在短短几年时间里便迅速成长为从Linux初学者到实验室用计算机/服务器都适合使用的发行版,目前官网最新版本是22.04.Ubuntu1 ...

  7. Linux实战001:VMware下安装Ubuntu18.04(服务器版)

    要想做好一个程序员,基本的服务器构架的能力还是需要有的.除了在本地开发,我们还要学会如何去部署我们开发好的系统.由于Linux的开源免费且功能强大,性能卓越.很多企业都会选择将服务部署在Linux系统 ...

  8. 基于Ubuntu18.04下深度学习服务器搭建

    基于Ubuntu18.04下深度学习服务器搭建 目录: 基于Ubuntu18.04下深度学习服务器搭建 主要模块组成 Anaconda安装 CUDA安装 pytorch安装 CuDNN安装 其他常用指 ...

  9. 【奶妈级教程】Ubuntu18.04服务器远程连接的anaconda安装与环境配置

    文章目录 前言 一.服务器anaconda下载安装与配置 二.客户端远程用户conda环境配置步骤 常见问题解答 三.多用户同时用服务器conda运行的兼容性分析 前文链接: [奶妈级教程]Ubunt ...

最新文章

  1. directx 游戏模拟键盘输入
  2. 怎么重置blockinput的锁_AppleID被锁如何解决 AppleID被锁激活方法介绍【图文】
  3. 什么是 ecommerce 的 distributor 概念以及如何实现 website redirect
  4. 前端学习(1537):为什么使用ng
  5. 写速度提升20%,Elasticsearch 创始人给腾讯云发来感谢信
  6. 【elasticsearch】elasticsearch 精确匹配 与 全文搜索
  7. c语言高级工程师试题,2020年.Net中高级开发工程师笔试题带答案(3)
  8. 【转载】DirectX支配游戏!历代GPU架构全解析
  9. 阿帕奇服务器配置站点,Apache的基本服务器配置
  10. sumifs 汇总_空标准单元格的SUMIFS公式
  11. pvt检查是什么意思_EVT、DVT、PVT是什么意思
  12. 归一法的计算方法讲解_初三化学计算题中归一法,XY法,拆分法,分配法,K值法是怎样的,最好有具体的例子...
  13. Bomb数据的存储与查询
  14. android fbe分析,(原创)Android FBE加密源码分析(二)
  15. 韩国电力供应商利用区块链构建生态友好型微电网
  16. 程序员职场小白修炼记1——安晓辉《解忧程序员》读书笔记
  17. python爬虫笔记四:大众点评店铺信息(字体反爬-静态映射)
  18. 【大数据】RAID介绍
  19. 免费好用的php系统,iCMS v7.0.2一款免费、简洁、高效、好用的PHP内容管理系统
  20. 【Linux普通用户指令权限】

热门文章

  1. 为什么要在WebAssembly中使用Rust?
  2. 讲故事形式解释什么是股票_讲故事的人可以教公开领导者什么
  3. (37)Gulp 文件清除
  4. TypeScript 中类型 any,void,unknown,never之间的区别
  5. Bootstrap3 工具提示插件的方法
  6. java matcher group_JAVA正则表达式matcher.find()和 matcher.matches()的区别
  7. 计算机网络中什么叫总衰耗_计算机网络中的“带宽”,为什么是指“在单位时间内...
  8. java哈喽word,JavaWeb之HelloWord
  9. opencv mat赋值_opencv-python 关于位操作
  10. 子弹短信 android,子弹短信精简版