Jetson Nano + NVIDIA Docker で Pytorch の環境構築をしてみる


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()

 


 

Be the first to comment

Leave a Reply

Your email address will not be published.


*