张小白教你如何在Ubuntu 18.04上源码安装MindSpore V1.0
双节期间,万事求双。
光有 《张小白带你快速体验MindSpore V1.0(For ubuntu 18.04)》https://bbs.huaweicloud.cn/blogs/198324 是不够的。很多开发者也想知道源码安装该怎么搞。那就让在这里摸爬滚打过好几天的张小白,告诉你怎么整吧。。。本文是 https://bbs.huaweicloud.cn/forum/thread-80520-1-1.html 论坛文档的去粗求精版。
打开 https://www.mindspore.cn/install ,按下面方式分别选择:1.0.0+CPU+Ubuntu-x86+Python 3.7.5+Source。
然后我们看下选中后,链接下面显示的软件依赖:
源码安装需要Python 3.7.5, wheel 0.32.0(使用pip装) Gcc 7.3.0 CMake 3.14.1 patch 2.5
安装依赖是个requirements.txt
numpy >= 1.17.0, <= 1.17.5 protobuf >= 3.8.0 asttokens >= 1.1.13 pillow >= 6.2.0 scipy >= 1.3.3 easydict >= 1.9 sympy >= 1.4 cffi >= 1.13.2 wheel >= 0.32.0 decorator >= 4.4.0 setuptools >= 40.8.0 matplotlib >= 3.1.3 # for ut test opencv-python >= 4.1.2.30 # for ut test sklearn >= 0.0 # for st test pandas >= 1.0.2 # for ut test bs4 astunparse packaging >= 20.0
那么我们一个一个来准备吧:
Part One:首先,你需要一个ubuntu 18.04的系统环境。
这个环境你可以直接在台式机或笔记本上装系统,也可以像张小白那样,用虚拟机做。
具体的过程张小白在 《张小白带你快速体验MindSpore V1.0(For ubuntu 18.04)》https://bbs.huaweicloud.cn/blogs/198324 和 《Atlas 200DK系统折腾纪实:(1)论图片及18.04.1的诞生》https://bbs.huaweicloud.cn/blogs/194291 两个地方写的都很清楚了(建议看后者的Part II部分)
这里不再赘述。
这里ubuntu装完后,记得替换apt源。张小白选择的是阿里源(也可以选择华为源或者其他源)
sudo cp /etc/apt/sources.list /etc/apt/source.list.bk
vi /etc/apt/sources.list
注释现有所有的deb
贴入以下内容:
# 阿里源 deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
保存退出。
sudo apt update
Part Two:源码安装gcc 7.3.0
先使用apt install装下gcc,看看是什么版本?
sudo apt-get update
sudo apt-get install aptitude
sudo aptitude install gcc
耐心的等待结束:
sudo apt install gcc
sudo apt-get install g++
要求7.3.0,实际7.5.0。在不知道高版本是否可用的情况下,看来要尽量使用官方文档建议的版本了。
查了下资料,安装gcc 7.3.0需要完成以下内容:mpc+gmp+mpfr+gcc。下面详细讲解:
(1)下载
到 http://www.multiprecision.org/mpc/download.html 网站下载 mpc-1.1.0.tar.gz
wget http://www.multiprecision.org/downloads/mpc-1.1.0.tar.gz
到 ftp://ftp.gnu.org/gnu/gmp/gmp-5.0.1.tar.bz2 下载gmp-5.0.1.tar.bz2
wget ftp://ftp.gnu.org/gnu/gmp/gmp-5.0.1.tar.bz2
到 http://ftp.gnu.org/gnu/mpfr/ 下载mpfr-3.1.0.tar.xz。
wget http://ftp.gnu.org/gnu/mpfr/mpfr-3.1.0.tar.xz
(2)安装gmp
bzip2 -d gmp-5.0.1.tar.bz2
tar xvf gmp-5.0.1.tar
configure:
...
说缺m4...那就装m4吧。。。
再来configure...
...
成功了。
make。。。没有make。
按提示装make吧。。
再装make-guile
看下make版本:
要求3.14.1,现在是4.1,应该是够了。
再make吧。屏幕刷刷的编译中。。。
make完成。安装:
。。。
GMP搞定了。
(3)安装mpfr
xz -d mpfr-3.1.0.tar.xz
tar xvf mpfr-3.1.0.tar
解压后进入目录做configure
./configure --prefix=/usr/local/mpfr-3.1.0 --with-gmp=/usr/local/gmp-5.0.1
没报错:
make,编译刷屏中。。。
成功了:
安装:
sudo make install
...
mpfr安装完毕。
(3)安装mpc
gzip -d mpc*.gz
tar xvf mpc*.tar
继续configure
./configure --prefix=/usr/local/mpc-1.1.0 --with-gmp=/usr/local/gmp-5.0.1 --with-mpfr=/usr/local/mpfr-3.1.0
..成功configure
make 刷屏中。。。
成功make
sodu make install 安装
。。。
mpc也成功安装。
(4)配置库环境
在/etc/ld.so.conf添加以下行
/usr/local/gmp-5.0.1/lib
/usr/local/mpfr-3.1.0/lib
/usr/local/mpc-1.1.0/lib
sudo ldconfig
(5)下载gcc 7.3.0源码包并安装
gzip -d gcc*.gz
tar xvf gcc-7.3.0.tar
cd gcc-7.3.0
./configure --with-gmp=/usr/local/gmp-5.0.1 --with-mpc=/usr/local/mpc-1.1.0 --with-mpfr=/usr/local/mpfr-3.1.0 --disable-multilib
以上地址都是前面安装的地址。记得一一对应。
。。。
configure成功
make
等刷完屏
。。。
时间会比较长。。。
也不知道怎么才能提速。好像一个多小时了。。
编译完毕。
sudo make install
gcc 7.3.0安装在 /usr/local/bin目录下。 gcc 7.5.0是个符号链接,指向/usr/bin/g**-7 。。
所以可以暂时将/usr/bin/gcc 和g++重新指向 /usr/local/bin/gcc和g++
用root用户做吧。。否则要不停的sudo
root@ubuntu:/usr/bin# cp gcc gcc7.5 root@ubuntu:/usr/bin# cp g++ g++7.5 root@ubuntu:/usr/bin# rm gcc root@ubuntu:/usr/bin# rm g++ root@ubuntu:/usr/bin# ln -s /usr/local/bin/gcc gcc root@ubuntu:/usr/bin# ln -s /usr/local/bin/g++ g++ root@ubuntu:/usr/bin# ls -lrt gcc lrwxrwxrwx 1 root root 18 Oct 2 18:54 gcc -> /usr/local/bin/gcc root@ubuntu:/usr/bin# ls -lrt g++ lrwxrwxrwx 1 root root 18 Oct 2 18:54 g++ -> /usr/local/bin/g++
回到普通用户:
总算gcc 7.3.0安装成功。
Part Three:源码安装python3.7.5
先装一些依赖:
sudo apt-get install -y 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
。。。
在python官网已经找不到 3.7.5了。
好在在华为云的镜像站有:
https://mirrors.huaweicloud.cn/python/
果然有,复制地址,打开新的teminal,下载吧。。。
wget https://mirrors.huaweicloud.cn/python/3.7.5/Python-3.7.5.tar.xz
解压:
xz -d Python-3.7.5.tar.xz
tar xvf Python-3.7.5.tar
。。。
python安装源码包搞定。
配置:
./configure --prefix=/usr/python3 --enable-optimizations --enable-shared
(上面这句话很重要,记得看三遍。。。)
make
等待刷屏结束。。。
make install
这个时候需确认 /usr/python3/lib目录下的文件名是否是.so而不是.a:(so是动态库,a是静态库,最后mindspore的编译需要动态库才行。。)
切换到python3.7.5 安装后的目录/usr/python3,查看版本:
在/etc/profile加入/usr/python3/bin的PATH,并执行,这样可以在任何地方都可以优先执行python 3.7.5
Part Four:部分系统依赖和PIP依赖的安装
在源码安装之前,还是要把前面提到的依赖补充一下。
(1)先安装一些pip的依赖:
python3 -m pip install Pillow
先把Pillow装完。这里比较慢,下次记得pip install时,加pip的清华源。
装前面requirements对应的依赖。。
python3 -m pip install protobuf asttokens scipy easydict sympy cffi wheel decorator setuptools matplotlib sklearn pandas bs4 astunparse packaging -i https://pypi.tuna.tsinghua.edu.cn/simple/
Successfully installed asttokens-2.0.4 astunparse-1.6.3 beautifulsoup4-4.9.2 bs4-0.0.1 certifi-2020.6.20 cffi-1.14.3 cycler-0.10.0 decorator-4.4.2 easydict-1.9 joblib-0.17.0 kiwisolver-1.2.0 matplotlib-3.3.2 mpmath-1.1.0 numpy-1.19.2 packaging-20.4 pandas-1.1.2 protobuf-3.13.0 pycparser-2.20 pyparsing-2.4.7 python-dateutil-2.8.1 pytz-2020.1 scikit-learn-0.23.2 scipy-1.5.2 six-1.15.0 sklearn-0.0 soupsieve-2.0.1 sympy-1.6.2 threadpoolctl-2.1.0 wheel-0.35.1
装numpy:
python3 -m pip install numpy==1.17.5 -i https://pypi.tuna.tsinghua.edu.cn/simple/
装opencv-python
python3 -m pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple/
慢慢等待它building吧。。。。
做个检查:
要求:
numpy >= 1.17.0, <= 1.17.5 实际 numpy-1.17.5 满足
protobuf >= 3.8.0 实际 protobuf-3.13.0 满足
asttokens >= 1.1.13 实际 astunparse-1.6.3 满足
pillow >= 6.2.0 实际7.2.0 满足
scipy >= 1.3.3 实际 scipy-1.5.2 满足
easydict >= 1.9 实际 easydict-1.9 满足
sympy >= 1.4 实际 sympy-1.6.2满足
cffi >= 1.13.2 实际 cffi-1.14.3 满足
wheel >= 0.32.0 实际wheel-0.35.1 满足
decorator >= 4.4.0 实际 decorator-4.4.2 满足
setuptools >= 40.8.0 不清楚装哪里了。。
matplotlib >= 3.1.3 # for ut test 实际matplotlib-3.3.2 满足
opencv-python >= 4.1.2.30 # for ut test 实际opencv-python-4.4.0.44 满足
sklearn >= 0.0 # for st test 实际 sklearn-0.0 满足。
pandas >= 1.0.2 # for ut test 实际pandas-1.1.2 满足
bs4 实际 bs4-0.0.1 满足
astunparse 实际astunparse-1.6.3 满足
packaging >= 20.0 实际 packaging-20.4 满足
(2)再安装一些系统依赖或工具:
patch 2.5.4
wget http://ftp.gnu.org/gnu/patch/patch-2.5.4.tar.gz
gzip -d patch-2.5.4.tar.gz
tar xvf patch-2.5.4.tar
./configure
sudo make
sudo make install
wheel 0.35.1
(后来发现这个好像不用装,前面使用pip装过就可以了) --参见这部分:wheel >= 0.32.0 实际wheel-0.35.1 满足
cmake 4.1
wget https://cmake.org/files/v3.14/cmake-3.14.1.tar.gz
gzip -d cmake-3.14.1.tar.gz
tar xvf cmake-3.14.1.tar
进入目录
./configure
...
sudo make
...
sudo make install
...
确认下:
所有依赖似乎都已就绪。可以编译mindspore了。。。
Part Five:源码编译mindspore v1.0
下载mindspore源码包:
git clone https://gitee.com/mindspore/mindspore.git -b r1.0
没装git, 那就装呗。。。
重新git clone
cd mindspore
bash build.sh -e cpu -j4
等shell慢慢安装,有时候会卡死在github的下载处,不要急,可以等。如果等不及了。可以ctrl-c中断掉,然后手工将文件下载下来拷贝到dest目录下,然后重新运行 bash build.sh -e cpu -j4 这个过程。
(此处只是做个示范,将自己下载好的gz文件拷贝覆盖到前面图中的dst的目录下的同名文件。)
这个build可以反复运行,它会接着往下跑的,不用担心。。。
安装过程一开始还是美好的。毕竟感觉趟过的雷已经慢慢快结束了。。
一直等待进度100%。。
当然,装到最后,它会报个错:
不要紧,百度下原因:是还有少装的包:
那么,照此办理吧:
再重新执行build.sh
...
终于顺利的编译完了。。。
编译好的文件放在了 /root/mindspore/build/package 目录下了。
Part Six:安装mindspore v1.0
使用刚才自己编译好的whl来安装mindspore。。
python3 -m install ./mindspore-1.0.0-cp37-cp37m-linux_x86_64.whl
好像没问题。。。跟使用官方whl的结果一模一样。
Part Seven:源码安装的mindspore v1.0的LeNet验证
那还是用lenet进行mindspore的测试吧。。。
将 《张小白带你快速体验MindSpore V1.0(For ubuntu 18.04)》https://bbs.huaweicloud.cn/blogs/198324 使用的lenet.zip包导入系统。
unzip lenet.zip
cd lenet目录
训练完毕。
然后,验证:
验证完毕。
跟前面那个博客的官方whl包的推理和验证的结果类似,只是要精度要低一点。。。
好吧。这就把mindspore v1.0源码安装和验证的过程彻底完成了。。。。
(全文完,谢谢阅读)
- 点赞
- 收藏
- 关注作者
评论(0)