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

网友投稿 899 2022-05-25

前情回顾:

张小白树莓派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

当然,也没那么简单。

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

张小白发了论坛帖问了下专家: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/

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

下载最新的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

(未完待续)

gcc MindSpore

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

上一篇:【用户案例】传统酒企距离无纸化办公还有多远?
下一篇:Kafka监控利器
相关文章