张小白树莓派4B踩坑记(四)
前情回顾:
张小白树莓派4B踩坑记(一)https://bbs.huaweicloud.cn/blogs/330786
张小白树莓派4B踩坑记(二)https://bbs.huaweicloud.cn/blogs/330956
张小白树莓派4B踩坑记(三)https://bbs.huaweicloud.cn/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.cn/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)