Jetson & 머신러닝

Jetson Xavier 에서 GPU로 추론, 학습하기 설정(1)

아크리엑터 2024. 6. 17. 00:42
반응형

yolo를 사용하려고, 돌려보니 CPU모드로 실행이 된다.  추가적인 것이 필요해 보여서, 기록을 남긴다.

설치 중간에 종속 패키지 설치 부분은 별도로 기록하지 않았다.

1. torch 설치

    설치된 jetpack의 버전에 따라서 필요한 것을 다운로드 받는다.  내 경우에는 jetpack5.1.3 이 설치되어있다. jtop명령으로 확이할 수 있다.

 

Jetpack 버전을 확인하고, 아래에서 해당하는 버전의 파일을 다운받는다. (아래 글은 nvidia forum에서 일부 발췌하였다: https://forums.developer.nvidia.com/t/pytorch-for-jetson/72048)

더보기

JetPack 6

PyTorch v2.3.0

PyTorch v2.2.0

PyTorch v2.1.0

JetPack 5

PyTorch v2.1.0

PyTorch v2.0.0

PyTorch v1.14.0

PyTorch v1.13.0

PyTorch v1.12.0

PyTorch v1.11.0

JetPack 5.1 (L4T R35.2.1) / JetPack 5.1.1 (L4T R35.3.1) / JetPack 5.1.2 (L4T R35.4.1)을 설치한다. 파일을 다운로드 받고 필요한 패키지를 설치한 후에, 다운로드 받은 파일을 설치한다.

$ wget https://developer.download.nvidia.cn/compute/redist/jp/v512/pytorch/torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl
$ sudo apt-get install python3-pip libopenblas-base libopenmpi-dev libomp-dev
$ pip3 install 'Cython<3'
$ pip3 install numpy torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl

설치 중에 오류가 나오는 경우가 있었다. 기존에 torchvision을 설치해두었는데, 버전이 안 맞다는 메시지가 나와서, 설치된 torchvision을 삭제하였다. ( sudo apt remove torchvision ) 그러니, 오류없이 설치가 되었다.

 

2. torchvision 설치

관련된 패키지를 추가로 설치한다.

$ sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libopenblas-dev libavcodec-dev libavformat-dev libswscale-dev

 

torchvision은 앞에서 설치한 torch와의 버전을 일치시켜야 한다. 위에서 안내했던 nvidia 포럼에 안내된 정보를 일부 발췌하였다. 아래와 같이 torch version에 맞는 torchvision의 버전을 설치해야 한다.

PyTorch v1.4 - torchvision v0.5.0
PyTorch v1.5 - torchvision v0.6.0
PyTorch v1.6 - torchvision v0.7.0
PyTorch v1.7 - torchvision v0.8.1
PyTorch v1.8 - torchvision v0.9.0
PyTorch v1.9 - torchvision v0.10.0
PyTorch v1.10 - torchvision v0.11.1
PyTorch v1.11 - torchvision v0.12.0
PyTorch v1.12 - torchvision v0.13.0
PyTorch v1.13 - torchvision v0.13.0
PyTorch v1.14 - torchvision v0.14.1
PyTorch v2.0 - torchvision v0.15.1
PyTorch v2.1 - torchvision v0.16.1
PyTorch v2.2 - torchvision v0.17.1
PyTorch v2.3 - torchvision v0.18.0

위에서 torch v2.1 을 설치했으니, torchvision은 v0.16.1 을 설치해야 한다. 다운로드는 다음과 같이 할 수 있다.

$ git clone --branch v0.16.1 https://github.com/pytorch/vision torchvision

Cloning into 'torchvision'...
remote: Enumerating objects: 530759, done.
remote: Counting objects: 100% (44369/44369), done.
remote: Compressing objects: 100% (2080/2080), done.
remote: Total 530759 (delta 42345), reused 44145 (delta 42218), pack-reused 486390
Receiving objects: 100% (530759/530759), 1020.26 MiB | 14.77 MiB/s, done.
Resolving deltas: 100% (495580/495580), done.
Note: switching to 'fdea156b80780313d6248847ab16d5d68eef9679'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

 

프로그램 설치를 아래의 명령순으로 진행한다. Build버전은 다운로드 받은 버전으로 등록한다.

 

$ cd torchvision
$ export BUILD_VERSION=0.16.1  # where 0.16.1 is the torchvision version  
$ python3 setup.py install --user

setup.py:10: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
  from pkg_resources import DistributionNotFound, get_distribution, parse_version
Traceback (most recent call last):
  File "setup.py", line 12, in <module>
    from torch.utils.cpp_extension import BuildExtension, CppExtension, CUDA_HOME, CUDAExtension
  File "/home/igi/.local/lib/python3.8/site-packages/torch/utils/cpp_extension.py", line 25, in <module>
    from pkg_resources import packaging  # type: ignore[attr-defined]
ImportError: cannot import name 'packaging' from 'pkg_resources' (/home/igi/.local/lib/python3.8/site-packages/pkg_resources/__init__.py)

에러가 나서, 아래와 같이 처리 했다. 전능하신 chatgpt에서 답해준 내용이다.

 

아래 처럼 하니, 기존에 설치된 torch가 삭제되고 최신 torch버전인 2.3.1이 설치되었다.

$ pip install --upgrade pip setuptools packaging torch

그리고, chatgpt가 아래 부분을 바꾸라고 해서 바꿔서 하기는 했는데, 필요한지는 모르겠다. 아래 것을 하지말고 실행해보고 계속 오류 나면, 아래 내용으로 변경하면 정상적으로 된다. 둘다 동시에 한 상황이라, 무엇 때문에 정상적으로 되었는지는 모르겠다.. ^^

setup.py 파일의 일부를 수정했다.

try:
    from setuptools import find_packages, setup
    #from setuptools import packaging
except ImportError:
    from packaging import version

 

아래 명령 실행했다.

$ sudo python3 setup.py install


setup.py:10: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
  from pkg_resources import DistributionNotFound, get_distribution, parse_version
Building wheel torchvision-0.16.1+fdea156
Compiling extensions with following flags:
  FORCE_CUDA: False
  FORCE_MPS: False
  DEBUG: False
  TORCHVISION_USE_PNG: True
  TORCHVISION_USE_JPEG: True
  TORCHVISION_USE_NVJPEG: True
  TORCHVISION_USE_FFMPEG: True
  TORCHVISION_USE_VIDEO_CODEC: True
  NVCC_FLAGS: 
Compiling with debug mode OFF
... 생략...

한참동안 컴파일 한다. 뭐가 좀 이상하기는 하지만... 왜 컴파일이 될까?

Using /usr/local/lib/python3.8/dist-packages
Searching for MarkupSafe==2.1.5
Best match: MarkupSafe 2.1.5
Adding MarkupSafe 2.1.5 to easy-install.pth file

Using /usr/local/lib/python3.8/dist-packages
Searching for mpmath==1.3.0
Best match: mpmath 1.3.0
Adding mpmath 1.3.0 to easy-install.pth file

Using /usr/local/lib/python3.8/dist-packages
Finished processing dependencies for torchvision==0.16.1+fdea156

 

C++에서 모델을 사용하는 방법은 ....

 

CMakeLists.txt 파일의 아래 내용을 수정한다. OFF --> ON

option(WITH_CUDA "Enable CUDA support" ON)

build 폴더로 이동해서, cmake .. 을 실행한다.

$ cd build
$ cmake ..
$ make
$ make install

T.T  cmake 버전이 안 맞다고 나온다. 3.18 이상으로 설치하라고...  기존 cmake를 삭제하고 신규 버전을 설치한다.  https://github.com/Kitware/CMake/에 접속해서 최종 버전을 설치하면된다.  컴파일하는데 오래 걸린다.

$ sudo apt-get install -y build-essential libssl-dev

$ wget https://github.com/Kitware/CMake/releases/download/v3.29.5/cmake-3.29.5.tar.gz
$ tar -zxvf cmake-3.29.5.tar.gz
$ cd cmake-3.29.5

$ ./bootstrap
$ make
$ sudo make install

 

다음글에서 설치를 했다.  https://makejarvis.tistory.com/158

반응형