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

一、 先讲述成功的流程
【1】mindspore官网GPU安装教程查看具体流程

  • 系统需要ubuntu18.04,但是我的ubuntu系统版本是16.04,因为是多人共用系统,不能直接升级系统,只能通过安装docker的方式;
cat /proc/version     # 使用此命令查看系统版本

【2】安装Docker—我的系统已安装docker
这里提供一篇参考文章:在ubuntu16.04上安装docker的文章

docker version   # 宿主机内执行,用于查看docker是否安装成功

【3】安装nvidia-docker

  • 需要先确认已安装了docker 和 nvidia-driver
nvidia-smi   # 检查nvidia-driver 是否安装
  • 1

  • 为什么需要安装nvidia-docker
nvidia-docker是一个可以使用GPU的docker,nvidia-docker是在docker上做了一层封装,
通过nvidia-docker-plugin,然后调用到docker上,
其最终实现的还是在docker的启动命令上携带一些必要的参数。
因此在安装nvidia-docker之前,还是需要安装docker的。 docker一般都是使用基于CPU的应用,而如果是GPU的话,就需要安装特有的硬件环境,
比如需要安装nvidia driver。
所以docker容器并不直接支持Nvidia GPU。
为了解决这个问题,最早的处理办法是在容器内部,全部重新安装nvidia driver,
然后通过设置相应的设备参数来启动container,然而这种办法是很脆弱的。
因为宿主机的driver的版本必须完全匹配容器内的driver版本,这样导致docker image无法共享,
很可能本地机器的不一致导致每台机器都需要去重复操作,这很大的违背了docker的设计之初。 为了使docker image能很便利的使用Nvidia GPU,从而产生了nvidia-docker,
由它来制作nvidia driver的image,这就要求在目标机器上启动container时,确保字符设备以及驱动文件已经被挂载。
nvidia-docker-plugin是一个docker plugin,被用来帮助我们轻松部署container到GPU混合的环境下。
类似一个守护进程,发现宿主机驱动文件以及GPU 设备,并且将这些挂载到来自docker守护进程的请求中。
以此来支持docker GPU的使用。

1、ubuntu系统移除nvidia-docker 1.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


3、安装nvidia-driver2.0

4、验证nvidia-docker安装成功;
docker run --runtime=nvidia --rm nvidia/cuda:10.1-base nvidia-smi

【4】拉取mindspore-gpu:1.0.0镜像Dokcer hub上配置好的mindspore-gpu镜像

【5】注意:此处一定是使用nvidia-docker run 命令生成新容器,并直接python进入编译环境即可(镜像mindspore-gpu中已安装python3.7.5);

# 原docker命令生成新容器(mindspore/mindspore-gpu:1.0.0 是镜像名)
docker run -it mindspore/mindspore-gpu:1.0.0 /bin/bash # 现nvidia-docker命令生成新容器
nvidia-docker run -it mindspore/mindspore-gpu:1.0.0 /bin/bash
  • 1
  • 2
  • 3
  • 4
  • 5

直接执行mindspore官网提供的代码,验证是否成功;

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))

若出现以下结果,则安装验证通过;

二、这里是踩过的坑

【1】最开始是直接在docker上安装显卡驱动等,因为我的宿主机nvidia-driver是418.39版本,但是docker容器内安装的是推荐的nvidia-driver450版本,两者好像不兼容,中间一直各种出错;
参考至:
【Docker】在docker中安装显卡驱动、CUDA、CUDNN等

【2】得知有nvidia/cuda镜像,但是还是需要安装nvidia-docker;

【3】加入mindspore官网qq群:871543426 --有专业人员可帮忙解答问题;
在群里问疑惑,有人解答说有mindspore-gpu的镜像,简直太好用了。

 

【MindSpore】Docker上成功使用MindSpore1.0.0的GPU版本的更多相关文章

  1. 在CUDA8.0下编译安装OpenCV3.1.0来实现GPU加速(Compiling OpenCV3.1.0 with CUDA8.0 support)

    在CUDA8.0下编译安装OpenCV3.1.0 一.本人电脑配置:ubuntu 14.04, NVIDIA GTX1060. 二.编译OpenCV3.1.0前,读者需要成功安装CUDA8.0(网上有 ...

  2. 在CUDA8.0下指定位置编译安装OpenCV3.1.0来实现GPU加速(Compiling OpenCV3.1.0 with CUDA8.0 support)

    在CUDA8.0下指定位置编译安装OpenCV3.1.0 一.本人电脑配置:ubuntu 14.04, NVIDIA GTX1060. 二.编译OpenCV3.1.0前,读者需要成功安装CUDA8.0 ...

  3. docker上构建redis容器

    1.查看docker上的镜像 [root@holly ~]# docker images 2.搜索docker上的redis镜像,选择下载的版本 [root@holly ~]# docker sear ...

  4. 【MindSpore】Ubuntu16.04上成功安装GPU版MindSpore1.0.1

    本文是在宿主机Ubuntu16.04上拉取cuda10.1-cudnn7-ubuntu18.04的镜像,在容器中通过Miniconda3创建python3.7.5的环境并成功安装mindspore_g ...

  5. 【转】Ubuntu 14.04.3上配置并成功编译Android 6.0 r1源码

    http://www.linuxidc.com/Linux/2016-01/127292.htm 终于成功把Android 6.0 r1源码的源码编译.先上图,这是在Ubuntu中运行的Android ...

  6. .NET Core 3.0 部署在docker上运行

    自从.NET Core3.0发布之后,写了几篇关于.NET Core 3.0的文章,有助于你快速入门.NET Core3.0. 本篇文章主要讲解如何一步步创建一个mvc项目,然后发布并部署在Docke ...

  7. Centos7 & Docker & Jenkins & ASP.NET Core 2.0 自动化发布和部署

    写在前面 Docker一直很火热,一直想把原本的Jenkins自动部署工具搬到Docker上面,无奈今年一直忙于各种事情,迟迟未实施这个事情,正好迎来了dotnet core 2.0 的正式发布,升级 ...

  8. docker安装使用教程(Kali2.0)

    一.apt安装 apt直接安装是最好的,因为apt源中的其他docker相关组件,也是与docker匹配的版本. apt-get install docker docker-compose 二.手动安 ...

  9. docker(三):Harbor 1.8.0 仓库的安装和使用

    回顾: docker(一):docker是什么? docker(二):CentOS安装docker docker(部署常见应用):docker部署mysql 安装的先决条件 硬件环境 1.CPU    ...

随机推荐

  1. Public-Key Cryptosystems Based on Composite Degree Residuosity Classes

    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! 以下是对本文关键部分的摘抄翻译,详情请参见原文. 论文未全部翻译 Abstract. 本文研究了一个新的计算问题,即合数剩余阶问题(Com ...

  2. Ubuntu 磁盘满了处理方法。

    Ubuntu 磁盘满了处理方法: 1. 如果是虚拟机安装ubuntu,直接给虚拟机安装ubuntu 系统所在的盘符动态分配一点磁盘容量,就可以了. 2. 如果不是虚拟机安装ubuntu,那么有两个办法 ...

  3. RedHat 6.8 离线安装Docker (rpm包安装)

    我的环境: [root@localhost ~]# uname -r 2.6.32-642.el6.x86_64 [root@localhost ~]# cat /etc/redhat-release ...

  4. JMH-大厂是如何使用JMH进行Java代码性能测试的?必须掌握!

    Java 性能测试难题 现在的 JVM 已经越来越为智能,它可以在编译阶段.加载阶段.运行阶段对代码进行优化.比如你写了一段不怎么聪明的代码,到了 JVM 这里,它发现几处可以优化的地方,就顺手帮你优 ...

  5. zookeeper基本配置以及一些坑

    配置 1. 解压安装包:tar zxvf zookeeper-3.4.14.tar.gz 2. 修改zookeeper配置: #Master cd zookeeper-3.4.14 #创建日志文件夹及 ...

  6. HTTP系列1番外之头部字段大全

    原文地址:https://www.jianshu.com/p/6e86903d74f7 常用标准请求头 字段 属性 举例 Accept 设置接受的内容类型 Accept: text/plain Acc ...

  7. Nodejs模块:path

    当前版本:v 10.16.0 一,获取文件相关信息 1,path.basename(filepath[, ext]) 获取该文件的文件名,如果有扩展名,则一起显示扩展名: 如果不想展示扩展名,只想展示 ...

  8. 详细了解JS Map,它和传统对象有什么区别?

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者.原文出处:https://www.codeproject.com/Articles/5278387/Under ...

  9. 【小白学PyTorch】5 torchvision预训练模型与数据集全览

    文章来自:微信公众号[机器学习炼丹术].一个ai专业研究生的个人学习分享公众号 文章目录: 目录 torchvision 1 torchvision.datssets 2 torchvision.mo ...

  10. 石子合并2(环形求最优解 区间dp)

    题目描述 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1个算法,计算出将N堆石子合并成1 ...