张小白教你如何在Ubuntu 18.04上源码安装MindSpore V1.0

网友投稿 681 2022-05-30

双节期间,万事求双。

光有 《张小白带你快速体验MindSpore V1.0(For ubuntu 18.04)》https://bbs.huaweicloud.com/blogs/198324 是不够的。很多开发者也想知道源码安装该怎么搞。那就让在这里摸爬滚打过好几天的张小白,告诉你怎么整吧。。。本文是 https://bbs.huaweicloud.com/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.com/blogs/198324 和 《Atlas 200DK系统折腾纪实:(1)论图片及18.04.1的诞生》https://bbs.huaweicloud.com/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

张小白教你如何在Ubuntu 18.04上源码安装MindSpore V1.0

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.com/python/

果然有,复制地址,打开新的teminal,下载吧。。。

wget https://mirrors.huaweicloud.com/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

wget https://files.pythonhosted.org/packages/83/72/611c121b6bd15479cb62f1a425b2e3372e121b324228df28e64cc28b01c2/wheel-0.35.1.tar.gz

(后来发现这个好像不用装,前面使用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.com/blogs/198324  使用的lenet.zip包导入系统。

unzip lenet.zip

cd lenet目录

训练完毕。

然后,验证:

验证完毕。

跟前面那个博客的官方whl包的推理和验证的结果类似,只是要精度要低一点。。。

好吧。这就把mindspore v1.0源码安装和验证的过程彻底完成了。。。。

(全文完,谢谢阅读)

AI平台 EI企业智能 昇腾

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:员工考勤打卡时,如何避免非本人代替打卡?
下一篇:一名老程序员的一点感悟给未来的程序员
相关文章