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) でやってみます。
1 |
sudo docker pull nvcr.io/nvidia/l4t-pytorch:r32.4.4-pth1.6-py3 |
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を使う場合は、
1 |
--runtime nvidia |
の代わりに
1 |
--gpus all |
が推奨されているそうです。 NVIDIA Docker って今どうなってるの? (20.09 版)
コンテナを起動
1 |
sudo docker start -i my_env |
アップデート&アップグレードしておきます。
1 2 |
apt update apt upgrade -y |
pipもアップグレードしておきます。
1 |
python3 -m pip install --upgrade pip |
コンパイラをインストール
1 |
apt install -y --no-install-recommends make g++ |
【バージョン指定してライブラリ追加】
Numpy、Pytorch、Torchvisionはプレセットされているので、以下の2つを追加インストールします。
1 2 |
python3 -m pip install pandas==1.1.1 python3 -m pip install matplotlib==3.3.1 |
バージョン確認
【Jupyterlabをインストール】
1 |
pip3 install jupyterlab |
適当な作業フォルダーへ移動して、Jupyterlabを起動
1 |
jupyter lab --ip=0.0.0.0 --allow-root |
起動後、「http://127.0.0.1:8888/?token=xxxxxx」が表示されるので、コピーしてブラウザーにペーストしてlabにアクセスすればNotebookが表示されます。
IPアドレスはホストと共有されているので、ホストのアドレスを使えば、外部のブラウザーからも使用できます。
JupyterlabはCtrl + C で停止できますが、5秒以内に y + Return しないと無効になります。
以上
Next
衛星画像を使った画像識別をやってみます。
Appendix
CUDAやcuDNNのバージョン確認
CUDA
1 |
nvcc -V |
cuDNN
以下のファイルの中を覗いてみる
/usr/include/cudnn.h
OR
/usr/include/cudnn_version.h
OR
Pytorchがインストールされていれば……
python3
>>>import torch
>>>torch.backends.cudnn.version()
Leave a Reply