为什么我会做这个blog
可能有人好奇mindspore不是有安装的引导么,为什么还要做这个blog?
其实我就是想分享一下我安装mindspore所遇到的问题,尤其在官方的自动安装命令失效的情况下,同时对官方文档进行一个修订补充,具体的问题已经跟相关的工作人员已经反馈了。
前置安装条件(显卡驱动)
安装教程
在安装Ubuntu系统时应当允许第三方图像驱动安装,并设置密码,重启时会进入一个蓝色背景的界面,此时应当通过键盘上下键和回车键进行控制,依次选择进入第二个选项,continue, yes,设置密码即可
进入系统后在系统更新处更换自己的更新源(安装系统时一般系统会默认清华源),选择自己网络连接最好的镜像源,在终端依次运行以下代码:
sudo apt-get update
sudo apt-get upgrade
这两行代码的作用是将你系统内包括内核在内的各个依赖项更新到最新,以确保我们驱动能够成功安装,接着运行下面代码:
sudo ubuntu-drivers autoinstall
此代码能够安装最适合你显卡的驱动,耐心等待完成下载安装后进行重启即可
确定是否成功安装显卡驱动
运行该代码:
nvidia-smi
可能会遇到的问题
如果重启后发现黑屏
此问题一般是显卡驱动安装失败,应当在启动引导界面时选择advance选项,里面共四个选项(一般),上面两行为比较新的内核,选择版本较老的内核进入系统(不带recovery code)进入系统,重新安装显卡驱动即可
进去之后没有网络,各种驱动都掉了
开机后进入更新处将附加驱动里的显卡驱动更换成x.org驱动(Ubuntu自带的驱动),再进入旧版内核‘(如上)将各项驱动都进行更新,然后再进入更新处将显卡驱动换回去就行了
安装CUDA
若完成以上的操作,此时你的系统的gcc版本应当在11.4及以上,同时gcc是向下兼容的,因此不需要特意去安装gcc-7.0(况且镜像源已经没有单独的包了)
CUDA 10.1要求最低显卡驱动版本为418.39;CUDA 11.1要求最低显卡驱动版本为450.80.02;CUDA 11.6要求最小的显卡驱动版本为510.39.01。可以执行nvidia-smi
指令确认显卡驱动版本。如果驱动版本不满足要求,CUDA安装过程中可以选择同时安装驱动,安装驱动后需要重启系统。
使用以下命令安装CUDA 11.6(推荐)。
wget https://developer.download.nvidia.com/compute/cuda/11.6.0/local_installers/cuda_11.6.0_510.39.01_linux.run
sudo sh cuda_11.6.0_510.39.01_linux.run
echo -e "export PATH=/usr/local/cuda-11.6/bin:\$PATH" >> ~/.bashrc
echo -e "export LD_LIBRARY_PATH=/usr/local/cuda-11.6/lib64:\$LD_LIBRARY_PATH" >> ~/.bashrc
source ~/.bashrc
或者使用以下命令安装CUDA 11.1。
wget https://developer.download.nvidia.com/compute/cuda/11.1.1/local_installers/cuda_11.1.1_455.32.00_linux.run
sudo sh cuda_11.1.1_455.32.00_linux.run
echo -e "export PATH=/usr/local/cuda-11.1/bin:\$PATH" >> ~/.bashrc
echo -e "export LD_LIBRARY_PATH=/usr/local/cuda-11.1/lib64:\$LD_LIBRARY_PATH" >> ~/.bashrc
source ~/.bashrc
或者使用以下命令安装CUDA 10.1。
wget https://developer.download.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda_10.1.243_418.87.00_linux.run
sudo sh cuda_10.1.243_418.87.00_linux.run
echo -e "export PATH=/usr/local/cuda-10.1/bin:\$PATH" >> ~/.bashrc
echo -e "export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64:\$LD_LIBRARY_PATH" >> ~/.bashrc
source ~/.bashrc
当默认路径/usr/local/cuda存在安装包的时候,LD_LIBRARY_PATH环境变量不起作用;原因是MindSpore采用DT_RPATH方式支持无环境变量启动,减少用户设置;DT_RPATH优先级比LD_LIBRARY_PATH环境变量高。
以上代码参照mindspore官方文档,归属权为mindspore官方
安装cuDNN
安装cudnn应当前往NVIDIA的国际官网,而不是国内官网,国内官网cudnn下载界面是直接404的,访问NVIDIA国际官网不需要梯子(笔者这边网络情况还好,裸连的话速度比较慢)
官网下载链接:Log in | NVIDIA Developer
下载时应当下载Tar文件,Deb文件笔者已尝试过,安装后系统固然能识别出安装没问题,但后续安装会出现一系列的问题
如果之前安装了CUDA 10.1,下载配套CUDA 10.1的cuDNN v7.6.x;如果之前安装了CUDA 11.1,下载配套CUDA 11.1的cuDNN v8.0.x;如果之前安装了CUDA 11.6,下载配套CUDA 11.6的cuDNN v8.5.x。注意下载后缀名为tgz的压缩包。假设下载的cuDNN包名为cudnn.tgz
,安装的CUDA版本为11.6,执行以下命令安装cuDNN。
tar -zxvf cudnn.tgz
sudo cp cuda/include/cudnn*.h /usr/local/cuda-11.6/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-11.6/lib64
sudo chmod a+r /usr/local/cuda-11.6/include/cudnn*.h /usr/local/cuda-11.6/lib64/libcudnn*
如果之前安装了其他CUDA版本或者CUDA安装路径不同,只需替换上述命令中的/usr/local/cuda-11.6
为当前安装的CUDA路径。
安装python3.9
在Ubuntu22.04中,系统默认为python3.10,但请注意,python3.10是不可以删除的,Ubuntu22.04中很多界面,包括语言,图形化界面均依赖python3.10,因此我们只需要安装python3.9,改变终端全卷链接并搭建起软链接即可,至于pip3很遗憾的是笔者目前暂时实现不了软链接,因此在后续安装需要手动pip3.9以确保对应的是python3.9版本
具体请参考这份blog:在 Ubuntu 22.04 上安装 Python 3.9(多版本适用)_ubuntu安装python3.9_muzing_的博客-优快云博客
安装Mindspore
首先参考版本列表选择想要安装的MindSpore版本,并进行SHA-256完整性校验。以2.1.1版本为例,执行以下命令。
export MS_VERSION=2.1.1
然后根据CUDA版本及Python版本执行如下命令安装最新版本的MindSpore。
# Python3.7
pip3.7 install https://ms-release.obs.cn-north-4.myhuaweicloud.com/${MS_VERSION}/MindSpore/unified/x86_64/mindspore-${MS_VERSION/-/}-cp37-cp37m-linux_x86_64.whl --trusted-host ms-release.obs.cn-north-4.myhuaweicloud.com -i https://pypi.tuna.tsinghua.edu.cn/simple
# Python3.8
pip3.8 install https://ms-release.obs.cn-north-4.myhuaweicloud.com/${MS_VERSION}/MindSpore/unified/x86_64/mindspore-${MS_VERSION/-/}-cp38-cp38-linux_x86_64.whl --trusted-host ms-release.obs.cn-north-4.myhuaweicloud.com -i https://pypi.tuna.tsinghua.edu.cn/simple
# Python3.9
pip3.9 install https://ms-release.obs.cn-north-4.myhuaweicloud.com/${MS_VERSION}/MindSpore/unified/x86_64/mindspore-${MS_VERSION/-/}-cp39-cp39-linux_x86_64.whl --trusted-host ms-release.obs.cn-north-4.myhuaweicloud.com -i https://pypi.tuna.tsinghua.edu.cn/simple
在联网状态下,安装MindSpore时会自动下载MindSpore安装包的依赖项(依赖项详情参见setup.py中的required_package),其余情况需自行安装。运行模型时,需要根据ModelZoo中不同模型指定的requirements.txt安装额外依赖,常见依赖可以参考requirements.txt。
验证是否成功安装
运行MindSpore GPU版本前,请确保nvcc的安装路径已经添加到PATH
与LD_LIBRARY_PATH
环境变量中,如果没有添加,以安装在默认路径的CUDA11为例,可以执行如下操作:
export PATH=/usr/local/cuda-11.6/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.6/lib64:$LD_LIBRARY_PATH
如果之前安装了其他CUDA版本或者CUDA安装路径不同,只需替换上述命令中的/usr/local/cuda-11.6
为当前安装的CUDA路径。
方法一:
python -c "import mindspore;mindspore.set_context(device_target='GPU');mindspore.run_check()"
如果输出:
MindSpore version: 版本号
The result of multiplication calculation is correct, MindSpore has been installed on platform [GPU] successfully!
说明MindSpore安装成功了。
方法二:
import numpy as np
import mindspore as ms
import mindspore.ops as ops
ms.set_context(device_target="GPU")
x = ms.Tensor(np.ones([1,3,3,4]).astype(np.float32))
y = ms.Tensor(np.ones([1,3,3,4]).astype(np.float32))
print(ops.add(x, y))
如果输出:
[[[[2. 2. 2. 2.]
[2. 2. 2. 2.]
[2. 2. 2. 2.]]
[[2. 2. 2. 2.]
[2. 2. 2. 2.]
[2. 2. 2. 2.]]
[[2. 2. 2. 2.]
[2. 2. 2. 2.]
[2. 2. 2. 2.]]]]
说明MindSpore安装成功了。
版权声明:
以上部分代码摘录于Mindspore官方文档,部分代码和文章为笔者自己所写,版权所属应当归mindspore所有