0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Raspberry Pi 3B+ に pytorch 1.9を入れる(2021/2/16)

Posted at

#注意

この記事は未完成です。

torch_visionの入れ方がわかりません
誰かわかったら教えてください。
buildの際に次のエラーメッセージがでます

/home/pi/vision/torchvision/csrc/ops/autograd/deform_conv2d_kernel.cpp:3:10:
fatal error: torch/autograd.h:そのようなファイルやディレクトリはありません

また、一部ファイルを移動させる必要があります。
改善策がわかれば教えてください。

#目次
0.忙しい人向け(調整中)
1.はじめに
2.準備
3.入れ方
4.参考サイト

#0.忙しい人向け(調整中)
torch_visionなんていらない!versionも1.9でいい!!って人はwhlファイルをgithubにあげたので、インストールして使ってください。
torchvisionは必要って人はブラウザバックしてください。
このページでは解決できませんでした。
version もっと新しいのがいいって人は、1〜3までを参考にして入れてください。

#0.1 whlファイルからインストール

sudo git clone https://github.com/Naoya-Yokota/pytorch1.9forraspberrypi
cd pytorch1.9forraspberrypi
sudo pip3 install torch-1.9.0a0+1903b32-cp32-cp37m-linux_armv7l.whl

pytorchが入ります。
ただ、案の定、一部ファイルが入りません。
それらは別に持ってくる必要がありそうです。

cd /usr/local/lib/python3.7/dist-packages/torch
sudo git clone https://github.com/Naoya-Yokota/rasfiletorch

rasfiletorchの中身のbinとlibを取り出して、torchの下に展開します。

#1.はじめに
前回、無事にpytorchを入れることができたのですが、typing_extensionsに関する箇所が不明だったので検証しました。
その上で、改めてまとめます。

今回の環境は次の通り

デバイス Raspberry Pi 3B+
OS Raspbian buster
python 3.7.3
Pytorch 1.9
#2準備
##2.1 スクリーンセーバー
とりあえず、前回と同じでスクリーンセーバーを設定することをお勧めします。
デフォルトだと、10分でラズパイがスリープモードになります。

入れてない人は

sudo apt-get install xscreensaver

インストール後に、ラズパイを再起動、メニューの設定の中にスクリーンセーバーが追加されます。
セーバーを無効にしておきましょう。

##2.2 モジュールの追加
typing_extensionsを追加します。
python 3.8以上ならおそらく不要です。
ファイル中の

from typing_extensions import ~~

の箇所をfrom typingにすれば動作すると思います。

raspbian buster ならpython 3.7.3なので次の処理を行ってモジュールを追加します。

sudo pip3 install typing_extensions

##2.3 スワップファイルの設定
ビルドに大量のメモリを消費するので、あらかじめ使用できる量を増やしておきます。

cd /etc/
sudo chmod 7 dphys-swapfile
vim dphys-swapfile
#CONF_SWAPSIZE=100

の箇所を2048にします。

終わったらrestartします。

sudo /etc/init.d/dphys-swapfile restart

#3 pytorchのインストール
##3.1 git hubからダウンロード

それなりに時間がかかります

sudo git clone --recursive https://github.com/pytorch/pytorch

##3.2 build
ここが一番時間がかかります。

まずはビルドに必要なパッケージを入れます。

sudo apt-get install libopenblas-dev cython  libatlas-base-dev m4 libblas-dev python3-dev cmake python3-yaml

不要なものを使わないように設定します。

export NO_CUDA = 1 
export NO_DISTRIBUTED = 1 
export NO_MKLDNN = 1 
export BUILD_TEST=0
export MAX_JOBS=2

バッチ当てを行います。

git submodule update --remote third_party/protobuf

先人に習って並列処理の箇所を編集します。

cd pytorch/scripts
sudo vim build_raspberrypi.sh

make -j 2を1に書き換えます。

make -j 1 || exit 1

いよいよbuildを行います。

./build_raspbian.sh 

半日くらいかかるので気長に待ちましょう。

##3.3 インストールする

whlファイルから作ります
pytorchのファイルに入ってsetup.pyからパッケージを作りましょう。

cd pytorch
sudo python3 setup.py bdist_wheel

出来たらpytorch/distに移動してインストールします

cd dist
sudo pip3 install torch-1.9.0a0+1903b32-cp32-cp37m-linux_armv7l.whl

##3.4 ファイルの移動
なぜかPATHがうまく通らない箇所があるのでファイルを移動します。

cd  /usr/local/lib/python3.7/dist-packages/torch
sudo mkdir lib
sudo mkdir bin

次に、なぜか/usr/local/libに大量にいる libtorchを移動させます。

cd /usr/local/lib
sudo cp libtorch_global_deps.so /usr/local/lib/python3.7/dist-packages/torch/lib
sudo cp libtorch_python.so /usr/local/lib/python3.7/dist-packages/torch/lib
sudo cp libshm.so /usr/local/lib/python3.7/dist-packages/torch/lib
sudo cp libtorch.so /usr/local/lib/python3.7/dist-packages/torch/lib
sudo cp libc10.so /usr/local/lib/python3.7/dist-packages/torch/lib
sudo cp libtorch_cpu.so /usr/local/lib/python3.7/dist-packages/torch/lib

次に/usr/local/binの中にいるtorch_shm_manager を移動させます

cd /usr/local/bin
sudo cp torch_shm_manager /usr/local/lib/python3.7/dist-packages/torch/bin

これでpytorchが動くはずです
確かめましょう。

python3 
import torch
torch.__version__

無事にバージョンが表示できたと思います。

#4.参考サイト 
ラズパイのOSの入れ方が載ってるサイト

スワップファイルの作り方を教えてくれたサイト

入れ方を教えてくれたサイト

pytorchのgithub

デフォルトのpythonのバージョンを変える方法

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?