반응형

목적

ONNX Model의 검증이 필요할 때에 간략하게 테스트 하는 방법

Dependency package

Pillow가 없을 경우 pip 설치가 필요함

출력

해당 모델은 customized된 Resnet 모델로 Output이 10개 이하임.
그래서 수치의 결과물을 보기 위한 것으로, 모든 값을 한 행에 출력을 하게끔 작성함.
필요에 따라 적절한 수정이 필요함.

Python Code

import os
import onnxruntime as rt
from PIL import Image
import numpy as np

model_path = 'model path str'
image_dir = 'image path str'
width = 224
height = 224

sess = rt.InferenceSession(model_path)

for filename in os.listdir(image_dir):
    if filename.endswith('.jpg') or filename.endswith('.jpeg'):
        img = Image.open(os.path.join(image_dir, filename))

        img = img.resize((width, height))
        img = np.array(img).astype('float32')

        img = np.expand_dims(img, axis=0)
        img = np.transpose(img, (0, 3, 2, 1))

        input_name = sess.get_inputs()[0].name
        result = sess.run(None, {input_name: img})

        result = np.reshape(result, (-1))
        print("{}: {}".format(filename, ', '.join(np.array2string(r.flatten(), separator=', ', max_line_width=np.inf) for r in result)))
반응형
반응형

NVIDIA PCI Vendor ID 로 잡히는 것이 있는지 확인

# NVIDIA Vendor ID : 10de
$ lspci -nn -d 10de:*

lspci update

최신 GPU일 경우 pci id 업데이트가 안되어서 안나올 수 있음.

$ sudo update-pciids

lspci에 Vendor ID 로 잡히는 것이 없을 경우

lspci에서 Veodor ID로 잡히는게 없을 경우 PCI Express 에서 잡히는게 없을 경우, 해당 카드가 인식자체가 되지 않았을 가능성이 있음.

  • 소비 전력 확인 및 보조 전력 확인
    소비 전력이 300W이상인데 그 이하의 적절하지 않은 부족한 전력 연결시, 인식자체가 되지 않는 현상을 확인함.
    올바르게 연결(8 Pin * 2)한 이후 정상적으로 lspci에 리스팅 된 것을 확인할 수 있었음.
반응형
반응형

 

갑자기 잘 쓰던 서버에서 아래와 같은 오류가 발생한다.

Failed to initialize NVML: Driver/library version mismatch

그래서 지우고 다시 설치하려고 하니, 아래와 같은 오류가 발생한다.

E: Couldn't find any package by glob 'nvidia_docker_install.sh'
E: Unable to locate package nvidia_docker_install.sh
...

이유를 몰라서 패키지를 지울려고 해도, 찾지를 못하고 지우고 재 설치도 쉽지가 않다.
도저히 방법이 없어서 fix-broken 설치를 먼저 했는데 nvidia 패키지들을 다 재설치를 한다.

sudo apt --fix-broken install

뭔가 커널 버전이 자동 업데이트 되서 Driver가 커널 버전 매칭이 안되서 오류가 발생한거고 --fix-broken install이 맞는 버전으로 재 설치 한게 아닐까 생각이 됨...

반응형
반응형

Unknown runtime specified nvidia 오류

nvidia-driver를 재설치 하거나 처음 설치하고, docker를 runtime 옵션으로 nvidia 설정을 하는 경우 마주하는 경우가 있다.
이 오류는 아래와 같이 나타나기도 한다

docker: Error response from daemon: unknown or invalid runtime name: nvidia.

nvidia-docker2가 설치가 안되어 있을 가능성이 있으며, 설치되어 있지 않을 경우 설치해줄 경우 정상 동작하는 것이 확인된다.

nvidia-docker2 설치 확인

$ dpkg -l | grep nvidia-docker2

nvidia-docker2 설치

$ sudo apt install nvidia-docker2

nvidia gpg key와 저장소 추가

만약 nvidia-docker2를 못찾을 경우 저장소 추가

distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
   && curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
   && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

docker 재시작

$ sudo systemctl restart docker
반응형
반응형

 

https://github.com/ZhangGe6/onnx-modifier

 

GitHub - ZhangGe6/onnx-modifier: A tool to modify ONNX models in a visualization fashion, based on Netron and Flask.

A tool to modify ONNX models in a visualization fashion, based on Netron and Flask. - GitHub - ZhangGe6/onnx-modifier: A tool to modify ONNX models in a visualization fashion, based on Netron and F...

github.com

 

1. 설치

git clone git@github.com:ZhangGe6/onnx-modifier.git
cd onnx-modifier

pip install -r requirements.txt

2. 실행

python ./app.py

 

주의 사항

Web based며 실행 이후에는 Web Browser를 통해서 접근해야됨.
Default로 127.0.0.1:5000 을 사용하고 있으며, Loopback 주소이기 때문에, 해당 컴퓨터의 GUI를 사용해야 됨.

만약 서버에서 설치 후에 다른 컴퓨터에서 접근하고 싶을 경우 Eth에 할당된 다른 주소를 --host 옵션의 파라미터로 전달할 경우 접근 가능함

python3 ./app.py --host <<IP Address>> --port <<Port>>

혹은 해당 서버의 할당된 IP들에 대해서 사용하고 싶을 경우 0.0.0.0을 할당하면, 모든 Eth에 할당된 IP를 통해 서비스 가능함

python3 ./app.py --host 0.0.0.0 --port <<Port>>
반응형
반응형

 

Docker 설치 관련 내용은 생략함

 

1. TensorRT 버전 확인 

https://docs.nvidia.com/deeplearning/tensorrt/container-release-notes/running.html

 

::

About this task On a system with GPU support for NGC containers, when you run a container, the following occurs: The Docker engine loads the image into a container which runs the software. You define the runtime resources of the container by including the

docs.nvidia.com

Container Release Node에서 TensorRT Container의 각 Release 버전과 CUDA 버전, Ubuntu 버전 등의 자신의 필요로 하는 버전과 일치하는 버전을 확인한다.

 

2.  Docker Run

Docker run 명령어로 Image Download 및 shall 실행한다.

$ docker run --gpus <GPU> -it --name <NAME>  nvcr.io/nvidia/tensorrt:<Version>-<pyver> bash

예로 실행은 아래와 같다

$ docker run --gpus '"device=2"' -it -v /home/host/host_dir:/root/share_dir --name tensorrt_23.01_py3  nvcr.io/nvidia/tensorrt:23.01-py3 bash

 

3. Container 정상 동작 확인

-it 옵션으로 실행을 했기 때문에 바로 container 에 attach 및 shell이 실행된다
각 명령어로 정상 동작 하는지 확인한ㄷ,

$ nvidia-smi # GPU 연결 및 CUDA Driver 정상 동작 확인
$ pip list | grep tensorrt # Tensor rt 버전 확인

 

4. Docker containe

Docker run 명령어로 container는 이미 생성되었다. 아래의 명령어로 생성된 container를 확인한다.
아래의 명령어중 -a를 붙여야 현재 container의 status가 start 상태가 아니더라도 확인이 가능한다.

$ docker container ls -a # Container 전체 리스트

이후 다시 접속하기 위해서는 일반 docker container 와 같이 start/executing 을 통해 다시 접근 가능하다.

$ docker start <container name or hashnum>
$ docker exec -it <container name or hashnum> /bin/bash​
반응형
반응형
  • nvidia-smi 사용
$ nvidia-smi

  • nvcc 사용 
$ nvcc --version

 

"nvcc --version"의 버전과 "nvidia-smi"의 버전이 일치를 꼭 하는 것은 아님

  • "nvidia-smi"는 NVIDIA GPU Driver에 의해 설치가 되며 GPU Driver에 의한 버전이 표시됨
    "nvcc --version"은 CUDA Toolkit에의해 설치가 되며 CUDA Runtime Version이 표시가 됨
반응형
반응형

1. Pre 

  • NSight는 NVidia에서 제공하는 Profiling Tool로 성능 최적화 등의 업무에 프로파일링 툴로 사용되기 유용하다.
  • 원격으로 SSH를 제공하기 때문에 Mac에 설치해서 서버에서 Profiling을 동작시키려고 하였으나, 정상적으로 동작되지 않아서 서버에 직접 설치하였다.
  • Site : https://developer.nvidia.com/nsight-systems

2. Download 
    다양한 포멧을 제공하는데, run파일을 이용하여 설치함
    https://developer.nvidia.com/nsight-systems/get-started

3. Execution
    $ chmod +x ./NsightSystems-linux-public-2023.2.1.122-3259852.run
    $ ./NsightSystems-linux-public-2023.2.1.122-3259852.run
    << ACCEPT 및 설치 경로 지정하면 해당 경로에 압축을 해제함 >>

4. Enviornment Setting
  임시적인 것으로 .bashrc 등에 추가하여 부팅시마다 적용되게 할 수 있으며, 실행을 했을 때에 CUDA 버전 관련해여 NSight의 오류 메시지 중에 event_paranoid를 1로 설정하라고 해서 이후에 1ㄹ로 변경하였음(참고)   
   $ echo kernel.perf_event_paranoid=2
   $ echo 2 > /proc/sys/kernel/perf_event_paranoid

5. 실행 후 설정
   실행후에 localhost의 경우 Project에서 별도의 설정없이 localhost connection으로 바로 사용가능
   Remote의 경우 SSH의 설정등을 위한 Network Information을 작성후에 연결 필요

   Target application 부분에 실행 기준 경로와 Command를 작성하면 바로 Start를 눌러 테스트가 가능한데,
   그 하단에 Enviornment vriables의 설정이 필요함. XAUTHORITY, LD_PRELOAD, DISPLAY 등의 설정이 비워져 있으며,
   영상 출력등의 기능이 포함될 경우 오류로 실행이 되지 않는 것을 확인함.
    이럴 경우 Terminal에서 변수를 그대로 입력해주면 정상적으로 동작이 실행되는 것을 확인할 수 있음
    예)
         $ echo $XAUTHORITY
         $ echo $LD_PRELOAD(나오는게 없어서 기본값 그대로 사용함(--> {LD_PRELOAD}:{}
         $ echo $DISPLAY

반응형

'개발, 웹, 블로그 > DeepLearning 상식' 카테고리의 다른 글

CUDA Version 확인 방법  (0) 2023.08.25
nvidia driver downgrade/재설치  (0) 2023.08.07
Cuda driver downgrade  (0) 2023.08.07
반응형

1. nvidia driver matching 버전 확인
 cuda-compatibility 버전 확인(https://docs.nvidia.com/deploy/cuda-compatibility/)

2. nvidia driver 삭제

$ sudo apt-get remove --purge nvidia-*
$ sudo apt-get autoremove
$ sudo apt-get update
$ reboot

3. driver 확인

$ ubuntu-drivers devices

4. Repository 추가 및 driver 설치

$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt update
$ sudo apt-get install nvidia-driver-[Version Number]
$ reboot

 

반응형
반응형

cuda 12.2를 사용중인데 nvidia nsight를 사용하려고 하니 미지원 버전이라고 뜬다.

nvidia developer zone에서 nsight(https://docs.nvidia.com/nsight-systems/Archives/index.html)의 Latest(2023.2)에서 확인할 경우 Cuda Support version이 11 버전대로 나와서, 마지막 버전인 11.8을 설치해보려고 한다.
Old version으로 CUDA driver를 downgrade해야할 것 같다.

 

CUDA toolkit download 페이지로 가서 우측 하단에 "Archive of Privious CUDA Release"페이지로 들어간다.

https://developer.nvidia.com/cuda-downloads

 

CUDA Toolkit 11.7 Downloads

Get the latest feature updates to NVIDIA's proprietary compute stack.

developer.nvidia.com

https://developer.nvidia.com/cuda-toolkit-archive

 

CUDA Toolkit Archive

Previous releases of the CUDA Toolkit, GPU Computing SDK, documentation and developer drivers can be found using the links below. Please select the release you want from the list below, and be sure to check www.nvidia.com/drivers for more recent production

developer.nvidia.com

 

1. 기존 버전 삭제 및 Reboot

$ sudo apt-get purge cuda* && sudo apt-get autoremove && sudo apt-get autoclean && sudo rm -rf /usr/local/cuda*
$ reboot

2. 설치 방법(Web download 및 shell 명령어로 설치)
 NVidia의 설치 방법에 보면은 마지막 명령어가 "sudo apt-get -y install cuda"로 되어있는데, 그대로 명령어를 사용할 경우 최신 버전이 설치가 된다. 설치 하고자 하는 버전을 명시해줘야 해당 버전이 설치가 된다.

$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-keyring_1.0-1_all.deb
$ sudo dpkg -i cuda-keyring_1.0-1_all.deb
$ sudo apt-get update
$ sudo apt-get -y install cuda-11-8

3. Reboot

$ reboot

4. CUDA 환경 변수 확인 및 수정
~/.bashrc 에서 아래의 export 추가

$ vi ~/.bashrc

cuda에 softlink로 버전을 사용하게끔되어 있기 때문에, 해당 softlink로 경로를 잡아준다
(버전 명시 경로로 환경 변수를 잡아줄 경우 버전 변경시 마다 bashrc 파일의 수정이 필요로 함)

export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"

재적용

$ source ~/.bashrc

5. 버전 확인

$ nvcc --version

 

@ 주의 : nvidia-driver와 compatible version 으로 설치해야됨

반응형

+ Recent posts