엔비디아 Jetson Xavier
1. Virtualbox로 우분투 PC 만들어 AI 보드 설치
2. VMware로 우분투 PC 만들어 AI 보드 설치
3. Tensorflow (+ Keras) 설치
4. Jetson Xavier에 Keras + PyTorch 개발환경 설치
Jetson은 임베디드 AI가 필요할 때 사용하는 소형 컴퓨터보드이다. 엣지용으로 인기가 좋아서 엔비디아도 Jetson에 공을 들이고 있기 때문에 JetPack SDK 관련 엔비디아 페이지에서 제공되는 샘플도 Nemo LLM부터 이미지 임베딩을 위한 CLIP, 다른 블로그에서 예제로 많이 사용되는 Object detection과 Bounding Box처리에 필요한 DeepStream 등 바로 사용해 볼 수 있는 재미있는 예제들이 많이 있다.
하지만, 내가 필요한 것은 노트북을 대신해서 간단하게 모델을 학습시켜 줄 환경이 필요하기 때문에 SDK Manager로 설정한 Jetson Xavier에 노트북과 비슷하게 파이썬, Keras + PyTorch를 설치할 수 있는지 테스트해 봤다.
a. SDK가 설치한 환경
SDK Manager로 설치하면서 상세정보를 살펴보면 CUDA버전이 11.4인 것을 확인할 수 있다.
SDK Manager가 설치를 끝낸 다음 설치되어 있는 파이썬과 프레임워크의 버전을 확인해 보면 아래와 같다.
파이썬 | CUDA, cuDNN | Tensorflow + Keras | PyTorch | |
기술스택 | python (2.7.18), python3 (3.8.10) |
CUDA (11.4), cuDNN (8.6) |
X | X |
확인방법 | python --version | nvcc --version | pip list | pip list |
파이썬은 python --version으로 확인한 2.7 버전과 python3 --version으로 확인한 3.8 버전이 같이 설치되어 있는 것을 확인했고 nvcc --version으로 CUDA의 버전을 재 확인할 수 있다.
nvcc --version
cuDNN의 경우 C 라이브러리의 header파일을 확인하는데 아래와 같이 8.6 버전이 설치되어 있다.
그래서, 노트북과 비슷하게 좀 더 최근의 버전을 사용하기 위해 Pyenv로 파이썬 버전을 올려서 설치하고 CUDA를 올린 다음 Keras와 PyTorch를 설치한 다음 CUDA를 사용할 수 있는지 확인해 봤다.
b. 노트북과 같은 Keras + PyTorch 환경 구성 실패
pyenv를 설치하고
sudo apt install curl -y
curl https://pyenv.run | bash
~/.bashrc의 끝에 pyenv설정을 추가하고
export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
python 3.10 설치에 필요한 라이브러리들을 설치하고
sudo apt install zlib1g-dev libffi-dev libssl-dev libbz2-dev libreadline-dev libsqlite3-dev liblzma-dev libncurses-dev tk-dev libssl-dev libffi-dev -y
파이썬 3.10을 설치해서 파이썬 버전을 변경한 다음
source ~/.bashrc
pyenv install 3.10
CUDA 11.8을 설치하고,
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/arm64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda-tegra-repo-ubuntu2004-11-8-local_11.8.0-1_arm64.deb
sudo dpkg -i cuda-tegra-repo-ubuntu2004-11-8-local_11.8.0-1_arm64.deb
sudo cp /var/cuda-tegra-repo-ubuntu2004-11-8-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda
cuDNN 9.5를 설치하고
wget https://developer.download.nvidia.com/compute/cudnn/9.5.0/local_installers/cudnn-local-tegra-repo-ubuntu2004-9.5.0_1.0-1_arm64.deb
sudo dpkg -i cudnn-local-tegra-repo-ubuntu2004-9.5.0_1.0-1_arm64.deb
sudo cp /var/cudnn-local-tegra-repo-ubuntu2004-9.5.0/cudnn-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cudnn
.bashrc의 PATH와 LD_LIBRARY_PATH에 있는 cuda 버전을 11.8로 바꾸어서 PyTorch를 설치하고 나서
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
cuda.is_available()로 확인하면 false로 나왔다.
import torch
torch.cuda.is_available()
몇 가지 변형을 시도해 봤지만 생각보다 잘 되지 않는 것으로 봐서는 높은 버전을 사용가능하게 만들 수 있을지, 있다면 얼마나 걸릴지 예측이 불가능해서 더 이상 시도하지 않았다.
5. 엔비디아의 구성으로 Tensorflow + Keras 설치
엔비디아에 나와있는 Tensorflow와 PyTorch의 설치방법을 읽어보면 높은 버전도 설치할 수 있을 것으로 나와있지만 실제 가능한 버전은 문서에 나와있는 버전(설치한 JetPack 보다 이전 버전)이나 그다음 버전 정도이고, Jetson H/W가 Orin버전이 나오면서 이전 버전 보드에 필요한 Tensorflow는 더 이상 만들지 않는 것으로 보인다. 그래서 문서에 기록된 버전을 기준으로 설치를 했다. SDK Manager에 따르면 Orin이 아니면 JetPack 6.x를 설치할 수 없고 JetPack 5.x는 아래 엔비디아의 공식페이지에 나와 있듯이 Tensorflow 2.12까지만 지원한다.
a. Tensorflow + Keras 설치
엔비디아로 Tensorflow + Keras 2.12를 설치하는 방법은 설치 방법은 아래 링크에 나와 있다.
먼저 python3에 가상환경을 사용할 수 있도록 아래 명령을 실행한다.
sudo apt install python3.8-venv -y
Tensorflow를 설치하고 테스트할 가상환경을 만들어서 활성화시키고
python3 -m venv tensortest
cd tensortest/
source bin/activate
python3에 pip을 설치하고 최신 버전으로 업그레이드한다.
sudo apt-get install python3-pip -y
python3 -m pip install --upgrade pip
pip3 install -U testresources setuptools==65.5.0
Tensorflow설치에 필요한 시스템 패키지들을 먼저 설치한다.
sudo apt-get install libhdf5-serial-dev hdf5-tools libhdf5-dev zlib1g-dev zip libjpeg8-dev liblapack-dev libblas-dev gfortran -y
Tensorflow설치에 필요한 파이썬 패키지들을 먼저 설치하고,
pip3 install -U numpy==1.22 future==0.18.2 mock==3.0.5 keras_preprocessing==1.1.2 keras_applications==1.0.8 gast==0.4.0 protobuf pybind11 cython pkgconfig packaging h5py==3.7.0
Tensorflow를 설치한다. 문제가 발생한 것처럼 보이지만 그 아래 메시지에 따르면 future는 정상적으로 설치되었다. 이제 Tensorflow 2.12를 설치한다.
pip3 install --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v512 tensorflow==2.12.0+nv23.06
이런 문제가 발생하면 pip upgrad와 setuptools의 설치가 제대로 되지 않았을 수 있으니, 앞에서 실행한 설치명령 (pip upgrade와 setuptools 설치명령)을 다시 한번 실행해 본다.
설치에 성공하면 Tensorflow에서 GPU를 사용하는지 확인한다.
import tensorflow as tf
gpus = tf.config.list_physical_devices('GPU')
print(gpus)
'GPU'를 사용할 수 있는 것을 확인했다.
'프로그램 개발' 카테고리의 다른 글
딥러닝에서 CPU와 GPU 성능 비교; 1. DNN (Dense) 모델 학습 측정 (1) | 2024.10.30 |
---|---|
엔비디아 Jetson Xavier; 4. PyTorch 설치 후 MNIST 학습 테스트 (1) | 2024.10.28 |
NestJS 개발 시작하기(로그인 인증 개발); 7. 암호화와 해쉬 함수 (3) | 2024.10.17 |
NestJS 개발 시작하기(로그인 인증 개발); 6. jwt 인증 (1) (1) | 2024.10.13 |
NestJS 개발 시작하기(로그인 인증 개발); 5. Session, JWT, OAuth 차이 (1) | 2024.10.10 |