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

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

一、前期踩过的坑

二、安装成功的流程

【1】拉取cuda10.1-cudnn7-ubuntu18.04的镜像
【2】镜像内创建容器此处一定是nvidia-dockv 5 s k @ & M ner创Y @ 0 h
【3】在容器内安装O + 4 a 2 K GMiniconda
【4】使用conda创B N + * = u ~建python3.7.5的虚拟环境并激活
【5】通过可执行文件安装mindspore_gpu_1.0.1.whl并测试

一、前期踩过的坑

在ubuntu上安装GPU版本mindspore的具体0 } W o s流程:
【MindSpore】Ubuntu16.04上成功安装GPU版MindSpore1.0.1
主要有以下几点:

  1. Ubuntu18.04(系统版本至少为18.04及以上) :
    基于我使用的是共用版Ubuntu16.; e ] ~04的服务器,无法直接升级,只能通过容器方式,拉取Ubuntu18.04的镜像;
  2. cuda10.1 (cuda版本必须为10.1):
  3. cudnn >= 7.6 (cudnn7.6.5可行,但cudnn8是会报错的):
    因Nvidia提供了G 2 ) M cuda+cudnn+ubuntu的镜d - ? ~像,
    所以可以一次性拉取需要的cuda10.1-cudnn7-ubuW q yntu18.04的镜u 5 Y F像;
    因要求的是cudnn&gu / T ^ C p + +t;=7.6,所以最开始拉取的是Z m 7 ZcudnnO K # f8版本的,一直报错 libcudnn.so.7: cannot open shared object file: No such file or directory ,后改为cudnn7版本就没报错了;

  4. devel和runtime版本区别:M c i / : 6 / i )文选择devel版
    【MindSpore】Ubuntu16.04上成功安装GPU版MindSpore1.0.1
    找到cun h wda10.1-cudnn7-ubuntuw . J z T e ,18.04,(cudnn7它标明的是cudnn7.6.5)发现有两个版本cuda devel和cuda runtime:

    官方解释:
    devel是说只涵盖了开发bai所需的所J y b b ( &有工具,包含编译、debug等,以及编译需要的头文件、静态库。
    runtime是说只# S O # X 1涵盖了运行环境的最小集合,例如动态库等
    所以runtime的镜像大小会比devel小一些

  5. dockB E b r H Der与nvidia2 _ V Q j T ]-docker的区别:
    【MindSpore】Ubuntu16.04上成功安装GPU版MindSpore1.0.1

docker创建的容器里需要再次安装nvidia-driver,且需要容器里的nvidia-driB r 2 * P E | /ver版本与宿主机里的nvidia-driver版本一致,才能在容器里使用GPU;

nvidia-docker创建的容器,只需要在宿主机上安装nvidian b k B / N-driver,容器内就x R J 3 k ) } X可以直接使用GPU;

安装nvidia-docker之前必须在宿主机上安装nvid} i ^ # & pia-driver和docker;

nvidi= & ] ja-smi                     # 检查宿主机是否安装了 nvidix q ? L W + ! Sa-driver
docker version              # 检查宿主机上安装的docker版本
nvidia-docker version   # 检查宿主机上安装的nvidia-docker版本

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

二、 安装成功的流程

【1@ t ` z [ G 6 z O】拉取Z q .nv! W V L r e ~idib $ w ) B B N Za/cuda:10.1-cudnn8-devel-ubuntu18.04的镜像

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

选择deP ! V D u Xvel版本

nv@ . 0 / o - q yidia-d7 [ i * | p hocker pull nvidia/cuda:10.1-cudnn7-devel-ubuntu18.04  

【2】镜像内创建容器此处一定是nvidia-docker创建

nvidia-docker run -it nvidia/cuda:10.1-cudnn7-devel-ubuntu18.04 /bin/bash

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

【3】在容器内安装Miniconda

因为在容器内使用wget下载miniconda一直失败,所以选择在windows上下载并上传至ubuntu宿主机上,再从ubuntu宿主机上拷贝至容器内;


nvidia-dt ~ G 0ocker  cp  miniconda3.sh路径   containerID:/     #  退出容器,并将minit ( ) 1 j n ( a 7conda3.sh 文件拷贝至容器根目录下
nvidia-docker  start containerID                         #( T | y 启动容器并进入
nvidia-docker exec -it containerID  /bin/bash
bash  Miniconda3-latest-Linux-x86_64.sh                  # 安装miniconda3

【4】使用conda创建py~ d *thon3.7.5的虚拟环境并激活
安装miniconda后需先退出容器再进入,才能再容器中使用conda

conda create -= n } x L An mB K ( 3 } )indspore1.0.1 py: ` v |thon=3.7.5   # conda create -n  虚拟环境名  指定pyt+ { I j # ] #hm ` 3 ~ T T Pon版本

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

conda activate mindsp} ) X p i o Kore1.0.1    # 激活指定e ) S环境

windows上下载mindspore_gpu_1.0.1.whl,并拷贝至容器内;

【5】通过可执行文件安装mindspore_gpu_1.0.1.whl并测试;

 pip install mindspore_gpu-1.0.1-cp37-cp37m-linux_x86_64.whl

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

安装完成后,在pytE + 7hon环境下执行以下代码

import numpy as np
from mindspore import Tensor
from mindspore.ops import functional as F
import mindspore.context as7 ; t 5 5 ^ I conte] U x k * mxt
context.set_context(d] G 7 ? 6evice_ta% F ~ Zrget="GPU")
x = Tensor(np.ones([1,3,3,4]).astype(np.float32))
y = Tensor(np.onP q res([1,3,3,4]).astype(np.float32))
print(F.tensor_add(x, y))

如果出现以下,则说明安装成功: