张小白树莓派4B踩坑记(四)

举报
张辉 发表于 2022/02/26 16:37:24 2022/02/26
【摘要】 在树莓派4B上源码编译mindspore 1.6 aarch64 cpu版本。

前情回顾:

张小白树莓派4B踩坑记(一)https://bbs.huaweicloud.com/blogs/330786

张小白树莓派4B踩坑记(二)https://bbs.huaweicloud.com/blogs/330956

张小白树莓派4B踩坑记(三)https://bbs.huaweicloud.com/blogs/331140


上次编译完了gcc aarch64版本,那就趁热打铁(其实已过了好些时日),把源码编译aarch64的CPU版本走下去吧!

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

cd mindspore

bash build.sh -e cpu -j4


当然,也没那么简单。

一开始,树莓派就给张小白一个下马威:

1.png

张小白发了论坛帖问了下专家:https://bbs.huaweicloud.com/forum/forum.php?mod=viewthread&tid=179684

终于决定用源码安装tclsh:cd 

打开 http://www.tcl.tk/software/tcltk/8.6.html

下载源码:

wget https://prdownloads.sourceforge.net/tcl/tcl8.6.12-src.tar.gz

tar -zxvf tcl8.6.12-src.tar.gz

cd tcl*

cd unix

./configure --prefix=/usr/tcl

make

sudo make install

制作软链接使得tclsh生效:

继续编译:

bash build.sh -e cpu -j4

耐心等待。。

突然又报了 CMAKE_CXX_COMPILER的错。

真奇怪,cmake和gcc都是一切正常。不过张小白想起某次论坛跟帖中专家的话,似乎cmake版本高一点会解决这个问题,于是努力地付诸实践:

下载cmake源码包:

打开https://github.com/Kitware/CMake/

下载最新的releases(张小白编译的时候还是 cmake3.23.0-rc1,现在截图的时候变成了rc2,唉,说明截图要趁早。。)

wget https://github.com/Kitware/CMake/releases/download/v3.23.0-rc1/cmake-3.23.0-rc1.tar.gz

./bootstrap


make -j8

sudo make install -j8

cmake -version

好了,cmake已升级,再继续编译:

好像过了这关,继续往下编译了。。。

直到:

原来是NUMA没有安装。

只是按照手册apt安装直接报错:

于是张小白没有办法,只要继续源码安装NUMA:

打开 https://github.com/numactl/

下载最新版本源码并传到树莓派上,解压:

./configure

make -j8

sudo make install -j8

再继续编译mindspore:

可见找到了NUMA而且往下走了。。

。。。

莫名停了:

重试一下:

。。。

看样子像是内存不足,那就照例加虚拟内存吧!

增加虚拟内存6G:

再试试:

...

。。

...

源码编译完毕。

检查一下:

跟上次Nano的3.7.5的编译whl不同,这次树莓派是3.9编译的。所以文件名为:mindspore-1.6.0-cp39-cp39-linux_aarch64.whl

那么正好就在树莓派官方系统缺省的python 3.9.2的环境下做个验证。

cd ~/mindspore/output

pip install ./mindspore-1.6.0-cp39-cp39-linux_aarch64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple

是的,已经装过了。

那就先删了,再装新的。

pip uninstall mindspore

pip install ./mindspore-1.6.0-cp39-cp39-linux_aarch64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple

验证下:

最后来试一下LeNet网络:

需要下载models代码仓:

git clone https://gitee.com/mindspore/models.git

cd models/official/cv/lenet

mkdir MNIST

mkdir ckpt

装pyyaml

pip install pyyaml -i https://pypi.tuna.tsinghua.edu.cn/simple

下载MNIST数据集:

wget http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz

 wget http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz

wget http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz

wget http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz

按照README指定的方式解压:

python train.py --data_path=./MNIST/ --device_target="CPU" --ckpt_path=./ckpt

耐心等待10轮epoch每轮1875step的训练结束:

。。。

可见训练完的loss已经是非常低了。

再查看生成的ckpt文件:

拿最后一个ckpt文件做个评估:

python eval.py --data_path=./MNIST/ --device_target="CPU" --ckpt_path=./ckpt/checkpoint_lenet-10_1875.ckpt

精确度为0.98左右。

于是,这就完成了对源码编译生成的whl文件的验证。

张小白将编译好的包传到百度网盘,有心的人可以像Nano的包那样尝试一下:

链接:https://pan.baidu.com/s/14ik3UJ--CXLakbWty2lF9A 
提取码:6t4n

(未完待续)

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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