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

举报
张辉 发表于 2020/10/06 14:32:25 2020/10/06
【摘要】 本文介绍了如何在Ubuntu 18.04上源码安装MindSpore V1.0。干货满满。

双节期间,万事求双。


光有 《张小白带你快速体验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

image.png

然后我们看下选中后,链接下面显示的软件依赖:

image.png


源码安装需要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

image.png


Part Two:源码安装gcc 7.3.0


先使用apt install装下gcc,看看是什么版本?

sudo apt-get update

image.png

sudo apt-get install aptitude

image.png

sudo aptitude install gcc

image.png

耐心的等待结束:

image.png

sudo apt install gcc

image.png

sudo apt-get install g++

image.png

要求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


image.png

(2)安装gmp

 bzip2 -d gmp-5.0.1.tar.bz2

tar xvf gmp-5.0.1.tar

configure:

image.png

...

image.png

说缺m4...那就装m4吧。。。

image.png

再来configure...

image.png

...

image.png

成功了。

make。。。没有make。

image.png

按提示装make吧。。

image.png

再装make-guile

image.png

看下make版本:

image.png

要求3.14.1,现在是4.1,应该是够了。

再make吧。屏幕刷刷的编译中。。。

image.png

make完成。安装:

image.png

。。。

image.png

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

image.png

没报错:

image.png

make,编译刷屏中。。。

成功了:

image.png

安装:

sudo make install

image.png

...

image.png

mpfr安装完毕。

(3)安装mpc

gzip -d mpc*.gz

tar xvf mpc*.tar

image.png

继续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

image.png..成功configure

image.png

make 刷屏中。。。

成功make

image.png

sodu make install 安装

image.png

。。。

image.png

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

image.png

sudo ldconfig

(5)下载gcc 7.3.0源码包并安装

image.png

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

以上地址都是前面安装的地址。记得一一对应。

image.png

。。。

image.png

configure成功

make 

等刷完屏

image.png

。。。

image.png

时间会比较长。。。

image.png

也不知道怎么才能提速。好像一个多小时了。。

image.png

编译完毕。

sudo make install

image.png

image.png

gcc 7.3.0安装在 /usr/local/bin目录下。 gcc 7.5.0是个符号链接,指向/usr/bin/g**-7 。。

image.png

所以可以暂时将/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++

回到普通用户:

image.png

总算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

image.png

。。。

image.png


在python官网已经找不到 3.7.5了。

image.png

好在在华为云的镜像站有:

https://mirrors.huaweicloud.com/python/

image.png

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

wget https://mirrors.huaweicloud.com/python/3.7.5/Python-3.7.5.tar.xz

image.png

解压:

xz -d Python-3.7.5.tar.xz

tar xvf Python-3.7.5.tar

image.png

。。。

image.png

python安装源码包搞定。

配置:

./configure --prefix=/usr/python3 --enable-optimizations --enable-shared

(上面这句话很重要,记得看三遍。。。)

make

等待刷屏结束。。。

image.png

make install

image.png

这个时候需确认 /usr/python3/lib目录下的文件名是否是.so而不是.a:(so是动态库,a是静态库,最后mindspore的编译需要动态库才行。。

image.png

切换到python3.7.5 安装后的目录/usr/python3,查看版本:

image.png

在/etc/profile加入/usr/python3/bin的PATH,并执行,这样可以在任何地方都可以优先执行python 3.7.5

image.png

Part Four:部分系统依赖和PIP依赖的安装

在源码安装之前,还是要把前面提到的依赖补充一下。

(1)先安装一些pip的依赖:

python3 -m pip install Pillow

先把Pillow装完。这里比较慢,下次记得pip install时,加pip的清华源。

image.png

装前面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/

image.png


image.png

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/

image.png

装opencv-python

python3 -m pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple/

image.png

慢慢等待它building吧。。。。

image.png


做个检查:

要求:

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)再安装一些系统依赖或工具:

image.png

patch 2.5.4

wget http://ftp.gnu.org/gnu/patch/patch-2.5.4.tar.gz

image.png

gzip -d patch-2.5.4.tar.gz

tar xvf patch-2.5.4.tar

./configure

image.png

sudo make

image.png

sudo make install

image.png


wheel 0.35.1

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

image.png

(后来发现这个好像不用装,前面使用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

image.png

 gzip -d cmake-3.14.1.tar.gz

tar xvf cmake-3.14.1.tar

进入目录

./configure

image.png

...

image.png

sudo make 

image.png

...

image.png

sudo make install

image.png

...

image.png

确认下:

image.png

所有依赖似乎都已就绪。可以编译mindspore了。。。


Part Five:源码编译mindspore v1.0

下载mindspore源码包:

git clone https://gitee.com/mindspore/mindspore.git -b r1.0

image.png

没装git, 那就装呗。。。

image.png

重新git clone

image.png

cd mindspore

image.png


bash build.sh -e cpu -j4

image.png

等shell慢慢安装,有时候会卡死在github的下载处,不要急,可以等。如果等不及了。可以ctrl-c中断掉,然后手工将文件下载下来拷贝到dest目录下,然后重新运行 bash  build.sh -e cpu -j4 这个过程。

image.png

(此处只是做个示范,将自己下载好的gz文件拷贝覆盖到前面图中的dst的目录下的同名文件。)

这个build可以反复运行,它会接着往下跑的,不用担心。。。

image.png

安装过程一开始还是美好的。毕竟感觉趟过的雷已经慢慢快结束了。。

image.png

image.png

image.png

一直等待进度100%。。

当然,装到最后,它会报个错:

image.png

不要紧,百度下原因:是还有少装的包:

image.png

那么,照此办理吧:

image.png

image.png

再重新执行build.sh

image.png

...

image.png

终于顺利的编译完了。。。

编译好的文件放在了 /root/mindspore/build/package 目录下了。

image.png


Part Six:安装mindspore v1.0

使用刚才自己编译好的whl来安装mindspore。。

python3 -m install ./mindspore-1.0.0-cp37-cp37m-linux_x86_64.whl

image.png

image.png

image.png

好像没问题。。。跟使用官方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目录

image.png

image.png

训练完毕。

然后,验证:

image.png

验证完毕。

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

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

(全文完,谢谢阅读)

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200