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

老妹兒的發表於2020-12-11


本文是在宿主機Ubuntu16.04上拉取cuda10.1-cudnn7-ubuntu18.04的映象,在容器中通過Miniconda3建立python3.7.5的環境併成功安裝mindspore_gpu_1.0.1;


一、前期踩過的坑

二、安裝成功的流程

【1】拉取cuda10.1-cudnn7-ubuntu18.04的映象
【2】映象內建立容器,此處一定是nvidia-docker建立
【3】在容器內安裝Miniconda
【4】使用conda建立python3.7.5的虛擬環境並啟用
【5】通過可執行檔案安裝mindspore_gpu_1.0.1.whl並測試


一、前期踩過的坑

在ubuntu上安裝GPU版本mindspore的具體流程


主要有以下幾點:

1. Ubuntu18.04(系統版本至少為18.04及以上) :
基於我使用的是共用版Ubuntu16.04的伺服器,無法直接升級,只能通過容器方式,拉取Ubuntu18.04的映象;


2. cuda10.1 (cuda版本必須為10.1):
3. cudnn >= 7.6 (cudnn7.6.5可行,但cudnn8是會報錯的):


因Nvidia提供了[cuda+cudnn+ubuntu的映象](https://hub.docker.com/r/nvidia/cuda),
所以可以一次性拉取需要的cuda10.1-cudnn7-ubuntu18.04的映象;


因要求的是cudnn>=7.6,所以最開始拉取的是cudnn8版本的,一直報錯 `libcudnn.so.7: cannot open shared object file: No such file or directory` ,後改為cudnn7版本就沒報錯了;

 

4. devel和runtime版本區別:本文選擇devel版


找到cuda10.1-cudnn7-ubuntu18.04,(cudnn7它標明的是cudnn7.6.5)發現有兩個版本cuda devel和cuda runtime:

官方解釋:
devel是說只涵蓋了開發bai所需的所有工具,包含編譯、debug等,以及編譯需要的標頭檔案、靜態庫。
runtime是說只涵蓋了執行環境的最小集合,例如動態庫等
所以runtime的映象大小會比devel小一些

5. docker與nvidia-docker的區別:

docker建立的容器裡需要再次安裝nvidia-driver,且需要容器裡的nvidia-driver版本與宿主機裡的nvidia-driver版本一致,才能在容器裡使用GPU;

nvidia-docker建立的容器,只需要在宿主機上安裝nvidia-driver,容器內就可以直接使用GPU;

 

安裝nvidia-docker之前必須在宿主機上安裝nvidia-driver和docker;

nvidia-smi # 檢查宿主機是否安裝了 nvidia-driver
docker version # 檢查宿主機上安裝的docker版本
nvidia-docker version # 檢查宿主機上安裝的nvidia-docker版本

 

 

二、 安裝成功的流程

【1】拉取nvidia/cuda:10.1-cudnn8-devel-ubuntu18.04的映象

為避免不必要的錯誤,後續使用的全部都是nvidia-docker

選擇devel版本

nvidia-docker 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

 

【3】在容器內安裝Miniconda

因為在容器內使用wget下載miniconda一直失敗,所以選擇在windows上下載並上傳至ubuntu宿主機上,再從ubuntu宿主機上拷貝至容器內;

nvidia-docker cp miniconda3.sh路徑 containerID:/ # 退出容器,並將miniconda3.sh 檔案拷貝至容器根目錄下

nvidia-docker start containerID # 啟動容器並進入
nvidia-docker exec -it containerID /bin/bash

bash Miniconda3-latest-Linux-x86_64.sh # 安裝miniconda

 

【4】使用conda建立python3.7.5的虛擬環境並啟用


安裝miniconda後需先退出容器再進入,才能再容器中使用conda

conda create -n mindspore1.0.1 python=3.7.5 # conda create -n 虛擬環境名 指定python版本

 

conda activate mindspore1.0.1 # 啟用指定環境

 

同上,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

 

安裝完成後,在python環境下執行以下程式碼

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

 

如果出現以下,則說明安裝成功:

相關文章