Jetson×JetPackにPytorchを入れるまでのメモ
JetsonAGXOrinに触れる機会が出来たのでPytorchを導入するまでのメモを作成しました.基本的にはNVIDIA公式の手順に従っています.Jetsonに関しては,数年前に安価で入手できたJetson Nanoの情報は沢山出てきますがJetson Orinシリーズは高価なので情報自体がまとまっておらず使いこなすには苦労しそうです.
1.JetPack SDKのインストール
初回起動時はCUDAのツールキットが入っていないようなので以下を実行する.
#とりあえずアップデート
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install nvidia-jetpack
2.conda環境の構築
Pythonの仮想環境としてconda環境を構築する.
AnacondaのホームページにアクセスしminicondaのLinux/ARM版のインストーラのリンクを取得する.
コピーしたURLでwgetを実行しインストールに必要なshファイルを取得する.今回はdownloadフォルダを作成し保存する.
$ mkdir download
$ cd download
~dowanload$ wget https://repo.anaconda.com/miniconda/Miniconda3-latest-aarch64.sh
bashコマンドでconda環境をインストールする.
~/download$ bash Miniconda3-latest-Linux-aarch64.sh
agreement.
Please, press ENTER to continue
>>> ENTERで規約が表示される「q」を入力し表示をキャンセル
:
Please answer 'yes' or 'no':'
>>>yes yesとしENTER
Miniconda3 will now be installed into this location:
/home/user/miniconda3
- Press ENTER to confirm the location
- Press CTRL-C to abort the installation
- Or specify a different location below
[/home/user/miniconda3] >>> ENTER
:
You can undo this by running `conda init --reverse $SHELL`? [yes|no]
[no] >>> yes yesとしENTER
conda環境に必要なPATHの設定を行う.先頭が(base)に切り替わればconda環境の構築に成功している.
$ echo "export PATH=~/anaconda3/bin:\$PATH" >> ~/.bashrc
$ source ~/.bashrc
(base) user@XXXX:$
conda環境でPython3.8の仮想環境を構築する.
Python3.8の理由
- Jetsonに搭載されているJetPack(Ubuntu,CUDAなどのパッケージ)がJetPack5.1
→現在,JetPack6が最新となるがアップデートにはネイティブなUbuntu環境が必要 - JetPack5.1はPytorch2.1.0がインストール可能
- Pytorch2.1.0はPythonとの依存関係がありPython3.8系から3.11系となる
上記の理由からPython3.8系を利用する.
(base) user@XXXX:$ conda create –n myenv python=3.8
:
xz pkgs/main/linux-64::xz-5.4.6-h5eee18b_1
zlib pkgs/main/linux-64::zlib-1.2.13-h5eee18b_1
Proceed ([y]/n)? yと入力しENTER
(base) user@XXXX:$ conda activate myenv 仮想環境へ移行
(myenv) user@XXXX:$ 仮想環境がbase→semienv
3.Pytorchのインストール
PytorchはARM版をインストールする必要がある.基本的にはNVIDIAの公式の手順に従う.
最初にNumpyだけ個別にインストールする.Pytorchをインストールする際にNumpyが見つからないとの警告がでるのが理由(インストールは上手くいくので問題ないと思うがNumpyはどの道使うので念のためここで入れてしまう安全).
(myenv) user@XXXX:$ conda install numpy
上記NVIDIAのURLにアクセスし今回の環境に合わせたJetpack5.1-Pytorch2.1.0の組み合わせのwhlファイルのリンクを取得する.downloadフォルダに移動しwgetでwhlファイルを取得する.whlファイルなのでpipコマンドでインストールする必要がある.(conda環境でpipを使うのはライブラリ間の依存関係で問題発生する可能性もあるがここは問題なさそう・・・(・・?)
(myenv) user@XXXX:$ cd download
(myenv) user@XXXX~/download:$ wget https://developer.download.nvidia.cn/compute/redist/jp/v512/pytorch/torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl
(myenv) user@XXXX~/download:$ pip3 install torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl
(myenv) user@XXXX~/download:$ sudo apt install libopenblas-dev
Pytorchが導入出来たので以下でPytorchが利用可能かを確認する.Trueと表示されればCUDAの依存関係含めて問題ない.
(myenv) user@XXXX:$ python3
Python 3.8.20 (default, Oct 3 2024, 15:24:27)
[GCC 11.2.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> print(torch.cuda.is_available())
True
>>> exit()
4.torchvisonをインストール
torchvisonも同様にNVIDIA公式の手順に従う.
上記URLにアクセスし,Instructions>Installation>torchvisionに記載されているコマンドを実行する.Pytorchのバージョンとtorchvisionのバージョンには依存関係がある.今回は,torchvision v0.16.1をインストールする.
(myenv) user@XXXX~/download:$ export USE_CUDA=1 USE_CUDNN=1 USE_MKLDNN=1 TORCH_CUDA_ARCH_LIST="8.7" FORCE_CUDA=1 FORCE_MPS=1
(myenv) user@XXXX~/download:$ sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libopenblas-dev libavcodec-dev libavformat-dev libswscale-dev
(myenv) user@XXXX~/download:$ git clone --branch v0.16.1 https://github.com/pytorch/vision torchvision
(myenv) user@XXXX~/download:$ cd torchvision
(myenv) user@XXXX~/download/torchvision:$ export BUILD_VERSION=0.16.1
(myenv) user@XXXX~/download/torchvision:$ python3 setup.py install --user
※20分くらいかかります
(myenv) user@XXXX~/download/torchvision:$ cd ../
(myenv) user@XXXX~/download:$ pip3 install 'pillow<7'
torchvisionが正しくインストールされたか確認するため以下を実行する.
(myenv) user@XXXX:$ python3
Python 3.8.20 (default, Oct 3 2024, 15:24:27)
[GCC 11.2.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torchvison
>>> print(torchvision.__version__)
0.16.1
>>> exit()
JetPackのバージョンが変わってもNVIDIA公式の手順に従えば問題なさそうです.
Discussion