Pythonの3.7.9でPytorchとTorchvisionをソースからビルドしてコンテナに環境を作ろうとすると、どうやってもインストールができませんでした。Pythonの3.7.9に対応したPytorchはまだ用意されていないのかな?OSError: libmpi_cxx.so.20が見つからないというメッセージでインポートやインストールが止まります。libopenmpiをインストールしてもダメでした。
仕方ないので、NVIDIAが準備してくれているPytorchがセットアップされているイメージを使うことにしました。これならGPUも使えます。
ちなみに、JetcardにもPytorchはプレセットされていますがバージョンが古いのでこちらを使うことにしました(違うブランチでJetcardをインストールすればいいのだそうですが今回はパス)。
Ubuntuのバージョンは18.04.5、Pythonは3.6.9、Numpyは1.19.2です。
この環境ならSIGNATEのコンペ オフロード画像のセグメンテーションチャレンジ の チュートリアルを実行する環境も構築できます。ただし、環境はできてもトレーニングを実行することはできません。リソースが非力なので、実行中にプロセスはKillされます。ただコンテナに実行環境を作っておけば、GCPなどに移行してスケールできると思います。
Jetsonレベルのシングルボードコンピュータの場合は、それなりの大きさのニューラルネットワークでなければトレーニングできません。
精度を保証するなら、トレーニングはクラウドで行い、できたモデルをJetsonで実行するというスタンスになるのかなと思います。このページ参照
環境構築
NVIDIAのNGC(NVIDIA GPU CLOUD)CATALOG のページを参照します。
l4t-pytorch
のページへ移動
このページに実行コードが紹介されています。
Jetson Nano + Jetpac(4.4.1) でやってみます。
my_envという名前でコンテナを作成します。
runせずにcreateします。コンテナは維持したいのでrmオプションは外しておきます。
sudo docker create -it --runtime nvidia --name=my_env --network host nvcr.io/nvidia/l4t-pytorch:r32.4.4-pth1.6-py3
ちなみに、Dockerのバージョン19.03以降でGPUを使う場合は、
の代わりに
が推奨されているそうです。 NVIDIA Docker って今どうなってるの? (20.09 版)
コンテナを起動
アップデート&アップグレードしておきます。
pipもアップグレードしておきます。
コンパイラをインストール
【バージョン指定してライブラリ追加】
Numpy、Pytorch、Torchvisionはプレセットされているので、以下の2つを追加インストールします。
バージョン確認
【Jupyterlabをインストール】
適当な作業フォルダーへ移動して、Jupyterlabを起動
起動後、「http://127.0.0.1:8888/?token=xxxxxx」が表示されるので、コピーしてブラウザーにペーストしてlabにアクセスすればNotebookが表示されます。
IPアドレスはホストと共有されているので、ホストのアドレスを使えば、外部のブラウザーからも使用できます。
JupyterlabはCtrl + C で停止できますが、5秒以内に y + Return しないと無効になります。
以上
Next
衛星画像を使った画像識別をやってみます。
Appendix
CUDAやcuDNNのバージョン確認
CUDA
cuDNN
以下のファイルの中を覗いてみる
/usr/include/cudnn.h
OR
/usr/include/cudnn_version.h
OR
Pytorchがインストールされていれば……
python3
>>>import torch
>>>torch.backends.cudnn.version()
Leave a Reply