張小白樹莓派4B踩坑記(一)

      網友投稿 1363 2025-03-31

      (零)背景:


      在張小白上次介紹Jetson Nano B01的系列文章中,張小白本想嘗試在CUDA+aarch64下完成MindSpore GPU版本的源碼編譯,但是編譯到98%的時候卡住了:

      張小白初步分析是GPU版本需要更多的內存和算力,但是Jetson Nano不具備。。。

      于是,張小白拿出自己前陣子買的 樹莓派4B(旁白:這轉折得有點快。。。)

      是的,你沒看錯,就是雙十二買的,這只是一種儀(DUO)式(SHOU)的副產品。這其實是張小白想玩機械臂的主板之一。前面介紹的Jetson Nano也可以玩機械臂。

      但是光有主板是無法開機的。還需要有:攝像頭、亞克力支架、Type-C電源等等。

      所以最后成型就是這樣的:

      其中,散熱風扇的電源需要接最后一排的倒數第二個(紅針)和第三個針頭(黑針)。

      其中type-C電源按上圖所示接上,但是因為張小白沒有買 MicroHDMI-HDMI轉接線,所以沒法通過外接顯示器查看系統,而只能通過網線把有線網卡接到路由器上,

      (上圖最右邊的網口),到路由器上查到樹莓派的IP地址:

      然后通過MobaXterm(ssh)和VNC viewer遠程登錄。

      (一)制卡

      當然,首先還是老樣子,拿出一張32G的TF卡,進行系統燒錄。

      其實是可以使用跟Nano同樣的燒錄軟件:balenaEtcher,但是張小白還是用賣家推薦的SDFormatter和Win32DiskImager

      這兩個軟件進行燒錄。前一個是進行磁盤的格式化,后一個是進行鏡像的寫入。

      選擇的鏡像自然也是賣家推薦的新手鏡像:

      這個鏡像包含了以下內容:

      (1)Raspbian GNU/Linux 10 (buster) ARM系統

      (2)JupyterLab(含Widgets插件)

      (3)openCV 4.5

      (4)TensorFlow 1.14(含Keras)

      可以查看下python版本(2.7.16,3.7.3),tensorflow的版本:1.14.0

      以及Keras的版本:2.2.4

      查看openCV的版本:4.5

      (二)使用Keras構建LeNet神經網絡

      然后將上次在Nano中試過的 Keras LeNet的案例(參見:Nvidia Jetson Nano B01初體驗(二)https://bbs.huaweicloud.com/blogs/330177)在樹莓派上執行一遍:

      。。

      。。開始訓練:

      看來樹莓派4B使用CPU訓練LeNet如此簡單的神經網絡應該還是沒問題的。

      那么,MindSpore CPU能不能在樹莓派4B上跑呢?要不也跟Nano安裝MindSpore一樣的方式,用CPU版本試一下?

      這個樹莓派系統Raspbian GNU/Linux 10出身于debian,很多命令跟ubuntu系統極其相似。

      還是老樣子,先裝virualenv,然后再搭建Python 3.9.0環境,因為上次MindSpore CPU的版本就是Python 3.7.5不成功,Python 3.9.0成功了的。

      (三)在Python 3.9.0環境下PIP安裝MindSpore 1.6.0 CPU版的嘗試

      (1)安裝vitualenv和virtualenvwrapper

      sudo -H pip3 install virtualenv virtualenvwrapper -i?https://pypi.tuna.tsinghua.edu.cn/simple/

      mkdir ~/.virtualenvs

      vi ~/.bashrc加入以下內容:

      export WORKON_HOME=$HOME/.virtualenvs export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 source /usr/local/bin/virtualenvwrapper.sh

      source ~/.bashrc

      (2)安裝pyenv

      git clone https://github.com/yyuu/pyenv.git ~/.pyenv

      如果github連不上則使用下面的命令:

      git clone? https://gitee.com/ntshibin/pyenv ~/.pyenv

      在~/.bashrc加入以下內容:

      export PATH=~/.pyenv/bin:$PATH export PYENV_ROOT=~/.pyenv eval "$(pyenv init -)"

      source ~/.bashrc

      查看python可安裝的版本:

      這里需要安裝openssl的庫,否則安裝python時會報錯:

      sudo apt-get install openssl libssl-dev

      好像裝過了。

      (3)安裝cmake 3.18.5

      檢查cmake版本:

      升級到3.18吧:

      wget https://github.com/Kitware/CMake/releases/download/v3.18.5/cmake-3.18.5.tar.gz

      tar -zxvf cmake-3.18.5.tar.gz

      cd?cmake-3.18.5

      。。。

      make -j8

      。。。

      sudo make install -j8

      cmake --version

      不要緊,這個是因為路徑不對。

      cd /usr/bin

      sudo mv cmake cmake.old

      sudo ln -s /usr/local/bin/cmake cmake

      cmake --version

      (4)使用pyenv安裝Python 3.9.0

      pyenv install 3.9.0

      耐心等待下載和安裝完畢。。

      可是:

      兩次都沒下載完畢。

      那只有想辦法先用windows下載下來,然后再傳到樹莓派上安裝了。

      cd ~/.pyenv

      mkdir cache

      cd cache

      cp ~/Python-3.9.0.tar.xz .

      cd

      pyenv install 3.9.0

      pyenv rehash

      pyenv versions

      virtualenv -p ~/.pyenv/versions/3.9.0/bin/python mindspore-py390

      source ~/mindspore-py390/bin/activate

      python -V

      (5)安裝MindSpore CPU版本

      pip install https://ms-release.obs.cn-north-4.myhuaweicloud.com/1.6.0/MindSpore/cpu/aarch64/mindspore-1.6.0-cp39-cp39-linux_aarch64.whl --trusted-host ms-release.obs.cn-north-4.myhuaweicloud.com -i?https://pypi.tuna.tsinghua.edu.cn/simple

      好像這個版本并不是支持樹莓派的系統。。。

      難道CPU版本也需要源碼編譯才行嗎?

      (四)在Python 3.9.0環境下源碼安裝MindSpore 1.6.0 CPU版的嘗試

      (1)安裝gmp 6.12

      wget?https://gmplib.org/download/gmp/gmp-6.1.2.tar.xz

      xz -d gmp-6.1.2.tar.xz

      tar -xvf gmp-6.1.2.tar

      cd gmp-6.1.2

      ./configure

      。。

      make

      sudo make install

      (2)安裝patch 2.5.4

      wget http://ftp.gnu.org/gnu/patch/patch-2.5.4.tar.gz

      tar zxvf patch-2.5.4.tar.gz

      cd patch-2.5.4

      ./configure

      make -j8

      sudo make install -j8

      patch --version

      (3)安裝flex 2.6.4

      sudo apt-get install flex

      按Y繼續:

      flex --version

      (4)安裝wheel 0.37.1

      發現安裝得不對又換了回來。。。

      pip install wheel==0.32.0

      pip install wheel==0.37.1

      (5)安裝openSSL 1.1.1

      wget?https://github.com/openssl/openssl/archive/OpenSSL_1_1_1g.tar.gz

      tar -zxvf OpenSSL_1_1_1g.tar.gz

      cd openssl-OpenSSL_1_1_1g

      ./config --prefix=/usr/local/openssl

      make -j8

      sudo make install -j8

      編輯 ~/.bashrc,追加一行:

      export OPENSSL_ROOT_DIR=/usr/local/openssl

      source ~/.bashrc 使其生效。

      回到virtualenv環境:

      source ~/mindspore-py390/bin/activate

      (6)安裝libnuma-dev 2.0.12

      sudo apt-get install libnuma-dev

      (7)源碼編譯Python 3.7.5

      既然是源碼編譯,可能需要安裝Python 3.7.5(盡管現有系統提供的是Python 3.7.3)

      wget https://www.python.org/ftp/python/3.7.5/Python-3.7.5.tgz

      tar -xzvf Python-3.7.5.tgz

      cd Python-3.7.5

      ./configure --prefix=/usr/local/python3.7.5 --with-openssl=/usr/local/openssl --enable-shared

      make -j 12

      sudo make install -j 12

      修改 ~/.bashrc

      將前面virtualenv環境的內容注釋掉:

      export PATH=/usr/local/python3.7.5/bin:$HOME/.local/bin:$PATH

      source ~/.bashrc

      python -V

      python3 -V

      奇怪,小版本怎么了?

      到編譯安裝好的/usr/local/python3.7.5/bin目錄下查看怎么也是3.7.3的版本?怪事。。。

      python3 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())"

      python3 -c "import distutils.sysconfig as sysconfig; print(sysconfig.get_config_var('LIBDIR'))"

      感覺有點沒有道理可言。

      (8)安裝一些依賴

      sudo apt-get install -y build-essential m4 libgmp-dev libmpfr-dev libmpc-dev

      (9)源碼編譯 gcc7.3.0

      然后根據上次的經驗,gcc 7.5.0編譯都不如gcc 7.3.0好,更何況目前用的是gcc 8.3.0

      gcc --version

      g++ --version

      【1】下載gcc源碼包

      wget?http://ftp.gnu.org/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz

      tar -xvzf gcc-7.3.0.tar.gz

      cd gcc-7.3.0

      ./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib

      make -j 12

      報錯了。

      sudo apt -f install

      sudo apt update

      【2】安裝gmp-5.0.1

      是不是前面漏了isl沒裝所以報錯的呢?所以我們按照以前編譯gcc的方式,順序按照gmp-5.0.1,mpfr-3.1.0,mpc-1.1.0,

      wget?http://www.multiprecision.org/downloads/mpc-1.1.0.tar.gz

      wget?ftp://ftp.gnu.org/gnu/gmp/gmp-5.0.1.tar.bz2

      wget?http://ftp.gnu.org/gnu/mpfr/mpfr-3.1.0.tar.xz

      bzip2 -d gmp-5.0.1.tar.bz2

      tar xvf gmp-5.0.1.tar

      cd gmp-5.0.1

      sudo apt-get install m4

      ./configure --prefix=/usr/local/gmp-5.0.1

      make -j12

      sudo make install -j12

      【3】安裝mpfr 3.1.0

      xz -d mpfr-3.1.0.tar.xz

      tar xvf mpfr-3.1.0.tar

      cd mpfr-3.1.0

      ./configure --prefix=/usr/local/mpfr-3.1.0 --with-gmp=/usr/local/gmp-5.0.1

      make -j12

      sudo make install -j12

      【4】安裝mpc 1.1.0

      gzip -d mpc-1.1.0.tar.gz

      tar xvf mpc-1.1.0.tar

      cd mpc-1.1.0

      ./configure --prefix=/usr/local/mpc-1.1.0 --with-gmp=/usr/local/gmp-5.0.1 --with-mpfr=/usr/local/mpfr-3.1.0

      make -j12

      sudo make install -j12

      在/etc/ld.so.conf添加以下行

      /usr/local/gmp-5.0.1/lib

      /usr/local/mpfr-3.1.0/lib

      /usr/local/mpc-1.1.0/lib

      sudo ldconfig

      【5】安裝isl-0.18

      張小白到csdn下載了isl-0.18的安裝包:

      xz -d isl-0.18.tar.xz

      tar xvf isl-0.18.tar

      cd isl-0.18

      ./configure --prefix=/usr/local/isl-0.18 --with-gmp-prefix=/usr/local/gmp-5.0.1

      make -j12

      sudo make install -j12

      編輯 ~/.bashrc,追加以下內容:

      export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/isl-0.18/lib

      source ~/.bashrc

      【6】安裝isl-0.16.1

      wget ftp://gcc.gnu.org/pub/gcc/infrastructure/isl-0.16.1.tar.bz2

      bzip2 -d isl-0.16.1.tar.bz2

      tar -xvf isl-0.16.1.tar

      cd isl-0.16.1

      ./configure --prefix=/usr/local/isl-0.16.1 --with-gmp-prefix=/usr/local/gmp-5.0.1

      make -j12

      sudo make install -j12

      【7】編譯gcc 7.3.0(失敗了!)

      cd gcc-7.3.0

      ./configure --with-gmp=/usr/local/gmp-5.0.1 --with-mpc=/usr/local/mpc-1.1.0 --with-mpfr=/usr/local/mpfr-3.1.0 --disable-multilib

      。。。

      configure的時候仍然報沒找到isl,真奇怪。

      編譯試試:

      make -j12

      好奇怪,度娘查這個錯是因為gcc沒有裝multilib庫,可是明明configure的時候disable了multilib的。。。

      好了,感覺源碼編譯mindspore 1.6.0這塊暫時也試驗不下去了。張小白想想還有別的事兒要做,就暫停現在的嘗試吧。

      張小白樹莓派4B踩坑記(一)

      但愿下次能解決問題。

      (未完待續)

      Keras Linux 神經網絡

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:甘特圖制作
      下一篇:如何在多個單元格內繪制一根斜線(如何在一個單元格內畫一條斜線)
      相關文章
      亚洲精品成人久久久| 亚洲男人天堂2017| 亚洲午夜电影在线观看高清 | 亚洲卡一卡二卡乱码新区| 亚洲经典在线中文字幕| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 亚洲人成色4444在线观看| 亚洲人成电影院在线观看| 亚洲剧情在线观看| 精品久久亚洲中文无码| 7777久久亚洲中文字幕| 久久久久久亚洲精品影院| 亚洲综合激情五月色一区| 亚洲午夜无码久久久久小说| 亚洲av无码专区在线电影天堂| 亚洲成av人无码亚洲成av人| 精品国产日韩亚洲一区91| 亚洲AV无码乱码在线观看性色扶| 亚洲国产精品不卡毛片a在线| 亚洲情a成黄在线观看| 亚洲深深色噜噜狠狠爱网站| 亚洲精品国偷自产在线| 亚洲AV日韩AV天堂一区二区三区| 亚洲国语精品自产拍在线观看| 亚洲高清不卡视频| 亚洲二区在线视频| 亚洲欧美日韩中文无线码| 亚洲AV日韩AV永久无码色欲 | 亚洲精品资源在线| 亚洲sss综合天堂久久久| 亚洲国产欧洲综合997久久| 欧美激情综合亚洲一二区| 亚洲国产精品自产在线播放| 亚洲一区二区三区香蕉| 亚洲AV人人澡人人爽人人夜夜| 亚洲成a人不卡在线观看| 亚洲综合一区国产精品| 国产亚洲精品美女久久久久| 中文字幕亚洲一区二区va在线| 久久久久亚洲av无码专区蜜芽| 亚洲欧洲国产视频|