【环境配置】MindSpore GPU环境配置

文章目录

  • 前言
  • 1. 安装NVIDIA-docker 2.0
  • (1)若是以前安装过NVIDIA-docker1.0的要先删除原先的版本,若没有,忽略这一步
  • (2)配置依赖包
  • (3)安装nvidia-docker2
  • 2 拉取镜像
  • 3 启动容器
  • 补充
  • 参考

前言

最近参加了CCF BDCI 2021的一个比赛,基于MindSpore AI框架实现零售商品识别,这个比赛中使用了华为的新框架,MindSpore,这个框架的环境特别难配置。CPU版本又不支持调试模型,GPU版本的要改底层的glibc,gcc等版本,要是使用的是服务器,这些也不敢折腾,要是改不成功,服务器崩了就很难受,还要重新装服务器系统。因此去网上查找看看有没有比较好的方法,能不用更改这些底层的东西,就能很方便的使用这个框架。
于是发现了docker,下面简要介绍下docker配置MindSpore1.3GPU版本的一些步骤。

1. 安装NVIDIA-docker 2.0

我的环境是Ubuntu 18 LTS版本
NVIDIA-docker是docker的升级版,让docker可以只配置宿主机的NVIDIA驱动,然后在docker容器内部直接调用GPU,可以
使用NVIDIA-docker虽然不用配置CUDA和cudnn,但是NVIDIA驱动是必须的,首先看下驱动有没有安装成功。

(1)若是以前安装过NVIDIA-docker1.0的要先删除原先的版本,若没有,忽略这一步

第一步
sudo docker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f
第二步
sudo apt-get purge nvidia-docker

(2)配置依赖包

curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
  sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
  sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update

获取sudo权限后,一下子全部粘到shell就行了

(3)安装nvidia-docker2

sudo apt-get install nvidai-docker2

然后输入docker version就能查看docker是否安装成功。
【环境配置】MindSpore GPU环境配置_第1张图片
出现上图即为安装成功。
最后还有一步是需要修改docker的配置文件,使得MindSpore可以使用Docker的nvidia-container-runtime:

vim /etc/docker/daemon.json
编辑成如下形式
{
	"runtimes": {
		"nvidia": {
			"path": "/usr/bin/nvidia-container-runtime",
			"runtimeArgs": []
					}
				}
}

【环境配置】MindSpore GPU环境配置_第2张图片

2 拉取镜像

经过配置环境后,镜像直接拉去就行了。

docker pull swr.cn-south-1.myhuaweicloud.com/mindspore/mindspore-gpu:1.3.0

这里安装的是1.3版本,其他版本的镜像请查看官网
到这里,输入 docker images命令,如果出现有镜像,则表示成功实现
在这里插入图片描述

3 启动容器

※这里解释下docker里面的几个概念
镜像和容器,这里可以认为镜像(images)是你安装Ubuntu时做的系统盘,容器(container)是你用系统盘安装的系统,每个容器(container)都是一个新的系统。
启动容器命令

sudo docker run -it -v /dev/shm:/dev/shm -v /home/dechin/projects/mindspore/test/:/home -v /home/code/mindspore:/home/Downloads --name ms -p 22:22 --runtime=nvidia --privileged=true swr.cn-south-1.myhuaweicloud.com/mindspore/mindspore-gpu:1.3.0 /bin/bash 

用到了几个参数,在使用docker时会比较的好用
这是一个很长的命令 解释下这个是什么意思
-it:指的是用终端的方式进行交互
-v:表示将宿主机的目录挂载到docker内,这样就能之间在宿主机编辑修改文件,直接将数据集挂载到容器里,在容器内部就能直接运行了,其中冒号前面的是本地的目录,冒号后面是挂载到容器里面的目录。
--name:给容器起个名字
-p:将宿主机的端口号和容器之间的端口号建立映射
输入 docker ps -a命令,就可以查看你启动的容器了
【环境配置】MindSpore GPU环境配置_第3张图片
测试代码

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")   #  此处一定要注意将设备改为GPU,源代码是Ascend
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))

如果运行成功,就说明GPU版本的MindSpore环境安装成功了。
好啦,进入到你挂在的目录下,就可以进行进行训练任务了
【环境配置】MindSpore GPU环境配置_第4张图片

补充

如果提示container xxxxx is not running
docker start CONTAINER ID
docker exec -it CONTAINER ID /bin/bash
就行了,其中, CONTAINER ID可以通过docker ps -a命令查看。
附上一些比较常用的docker命令

docker ps -a  #show all docker
docker images  #show local docker
docker start  ID
docker stop  ID
docker attach ID
exit = ctrl +d
docker exec -it c62d0ebaf99d /bin/bash  # 进入docker

docker rm ID  # 删除容器
docker rmi IMAGES  # 删除镜像

参考

https://blog.csdn.net/nidongla/article/details/116495024

你可能感兴趣的:(MindSpore,DeepLearning,python,深度学习)