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

前情回顾:
张小白树莓派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/

下载最新的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
(未完待续)
- 点赞
- 收藏
- 关注作者
评论(0)