美文网首页
【MindSpore】Docker上成功使用MindSpore1

【MindSpore】Docker上成功使用MindSpore1

作者: 老妹儿的 | 来源:发表于2020-09-27 11:22 被阅读0次

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

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

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

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

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

    【3】安装nvidia-docker

    • 需要先确认已安装了docker 和 nvidia-driver
    nvidia-smi   # 检查nvidia-driver 是否安装
    
    
    查看nvidia-driver是否安装
    • 为什么需要安装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
    
    
    移除旧版本nvidia-driver

    3、安装nvidia-driver2.0


    安装nvidia-driver2.0

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

    nvidia-docker安装成功

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

    docker 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
    
    
    nvidia-docker新建容器.png

    直接执行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))
    
    

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

    mindspore gpu安装成功验证

    二、这里是踩过的坑

    【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官网交流群

    相关文章

      网友评论

          本文标题:【MindSpore】Docker上成功使用MindSpore1

          本文链接:https://www.haomeiwen.com/subject/woikuktx.html