張小白樹莓派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
(未完待續)
gcc MindSpore
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。