尽管在官网,MindSpore没有CUDA10的aarch64版本。(注:当时时刻为2022年2月)
只有aarch的CPU版本:
Python的版本也只有3.6.9。但是作为昇思开发者的张小白,仍然想在Nano的CPU上跑一下MindSpore试试。
于是,张小白心想:应该先装anaconda for aarch64,这样才能让Nano上有Python3.7.5。
打开 https://www.anaconda.com/products/individual
复制ARM64的安装链接:
wget https://repo.anaconda.com/archive/Anaconda3-2021.11-Linux-aarch64.sh
./Anaconda3-2021.11-Linux-aarch64.sh
按回车继续:
输入yes,回车:
按回车继续:
好像不行,core dump了。
含泪删除:rm -rf ~/anaconda3
打开 https://docs.conda.io/en/latest/miniconda.html#linux-installers
复制下链接:
wget https://repo.anaconda.com/miniconda/Miniconda3-py37_4.10.3-Linux-aarch64.sh
bash ./Miniconda3-py37_4.10.3-Linux-aarch64.sh
好像是一样的coredump,看来conda是不行了。
再次含泪删除:rm -rf ~/miniconda3。
再试下 pyenv和virtualenv吧,原理上:使用 pyenv 可以安装任何版本的 Python,用 virtualenv 创建虚拟环境时指定需要的 Python 版本路径,这样就可以创建任何版本的虚拟环境。
sudo -H pip3 install virtualenv virtualenvwrapper -i https://pypi.tuna.tsinghua.edu.cn/simple/
mkdir ~/.virtualenvs
vi ~/.bashrc
source ~/.bashrc
安装pyenv
curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash
git clone https://github.com/yyuu/pyenv.git ~/.pyenv
在~/.bashrc加入以下内容:
source ~/.bashrc 使其生效
查看Python可用版本:
pyenv install --list
。。。
貌似有非常多。
用pyenv装个python3.7.5试试:
pyenv install 3.7.5
感觉下载要蛮长的时间,耐心等待吧。
报缺少ssl库。
sudo apt-get install openssl libssl-dev
按Y继续:
再来一遍:
pyenv install 3.7.5
可以到 /home/zhanghui/.pyenv/versions/3.7.5 目录下看到Python的版本:
刷新pyenv并查看现在的版本:
pyenv rehash
pyenv versions
创建Python 3.7.5的mindspore运行环境(命名为mindspore-py375):
virtualenv -p ~/.pyenv/versions/3.7.5/bin/python mindspore-py375
它会在当前目录下建一个mindspore-py375目录:
source ~/mindspore-py375/bin/activate
这就切换到了Python 3.7.5的环境。
安装mindspore cpu(aarch64) 1.6.0版本:
pip3 install https://ms-release.obs.cn-north-4.myhuaweicloud.com/1.6.0/MindSpore/cpu/aarch64/mindspore-1.6.0-cp37-cp37m-linux_aarch64.whl --trusted-host ms-release.obs.cn-north-4.myhuaweicloud.com -i https://pypi.tuna.tsinghua.edu.cn/simple
报错了。
先安装gmp6.1.2
wget https://gmplib.org/download/gmp/gmp-6.1.2.tar.xz
xz -d gmp-6.1.2.tar.xz
tar -xvf gmp-6.1.2.tar
cd gmp-6.1.2
./configure
...
make
sudo make install
升级下pip试试:
python -m pip install --upgrade pip
去掉清华源试试:
pip3 install https://ms-release.obs.cn-north-4.myhuaweicloud.com/1.6.0/MindSpore/cpu/aarch64/mindspore-1.6.0-cp37-cp37m-linux_aarch64.whl --trusted-host ms-release.obs.cn-north-4.myhuaweicloud.com
安装速度要慢一点,耐心等待吧。
pip3 install --upgrade setuptools
pip3 install pip==21.3.1
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python3-openssl
..
wget https://github.com/Kitware/CMake/releases/download/v3.18.5/cmake-3.18.5.tar.gz
tar -zxvf cmake-3.18.5.tar.gz
cd cmake-3.18.5
./bootstrap
...
make -j8
...
sudo make install -j8
cmake --version
发现 /usr/bin和/usr/local/bin下都有cmake。
将/usr/bin下的cmake改名,重试:
pip3 install https://ms-release.obs.cn-north-4.myhuaweicloud.com/1.6.0/MindSpore/cpu/aarch64/mindspore-1.6.0-cp37-cp37m-linux_aarch64.whl --trusted-host ms-release.obs.cn-north-4.myhuaweicloud.com -i https://pypi.tuna.tsinghua.edu.cn/simple
好像还是不行。
要不还是换成Python 3.9.0再试一次
退出mindspore-py375环境
deactivate
pyenv install 3.9.0
pyenv rehash
pyenv versions
virtualenv -p ~/.pyenv/versions/3.9.0/bin/python mindspore-py390
source ~/mindspore-py390/bin/activate
pip install https://ms-release.obs.cn-north-4.myhuaweicloud.com/1.6.0/MindSpore/cpu/aarch64/mindspore-1.6.0-cp39-cp39-linux_aarch64.whl --trusted-host ms-release.obs.cn-north-4.myhuaweicloud.com -i https://pypi.tuna.tsinghua.edu.cn/simple
这个居然安装成功了!
做个测试看看:
python -c "import mindspore;mindspore.run_check()"
好了,其实CPU也没啥意义。只是张小白不服输而已。要是GPU+aarch64版本能用才是真的有用。
注:本文虽然是2022年2月的产出,但是基本思想是在Jetson Nano上使用源码编译MindSpore,这个思想即便是新版本也是通用的,所以还具备一定的价值。但是众所周知,技术文档有其时效性,读者最关心的应该是文章中的解题思路,这也是作者张小白为啥常常喜欢将自己遇到的各种错误都记录出来,并且一个一个去解决的原因。希望大家学到的不仅仅是如何装某一个特定版本的MindSpore,而是学会在安装的过程中解决问题。所谓授人以鱼不如授人以渔。。。
(全文完,谢谢阅读)