728x90
반응형

TensorRT 레퍼런스에 나와있는대로 Root에 설치했으나 python dependency 문제로 인해 실행되지 않았다.

TensorRT 5.0.2.6 (CUDA 10.0) 버전을 설치했는데 자꾸 아래와 같이 CUDA 9.0를 찾지를 않나 

ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory

TensorRT를 못찾는 에러가 나와서 NVIDIA 답변을 보니 Container를 사용하라고 한다. 

ImportError: /usr/local/anaconda3/lib/python3.6/site-packages/tensorrt/tensorrt.so: undefined symbol: _Py_ZeroStruct

https://devtalk.nvidia.com/default/topic/1043215/tensorrt/tensorrt-import-undefined-symbol/

 

 

 

그래서 이용한 것이 Docker Container 

TensorRT는 docker의 container를 통하여 필요한 환경을 꾸린 뒤, 구동 시킬 수 있다. 

 

 

 

1. nvidia-docker 설치 

https://devblogs.nvidia.com/nvidia-docker-gpu-server-application-deployment-made-easy/

 

NVIDIA Docker: GPU Server Application Deployment Made Easy

Introduction to Docker containers and NVIDIA Docker plugin for easy deployment of GPU-accelerated applications such as deep learning frameworks on GPU servers

devblogs.nvidia.com

 

 

 

2. pull the latest container 

안해도 될듯 

$ docker pull nvcr.io/nvidia/tensorrt:19.03-py<x>

* 수정내역 : tensorflow -> tensorrt 오타 도움 주신 분 감사합니다 ^^ 

 

 

3. Run the container image

아래 링크에서 원하는 환경을 확인하고 어떤 버전을 쓸건지 (ex : 18.09) 확인한다. 

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

 

TensorRT Container Release Notes :: Deep Learning SDK Documentation

Before running the container, use the docker pull command to ensure an up-to-date image is installed. Once the pull is complete, you can run the container image. This is because nvidia-docker ensures that drivers that match the host are used and configured

docs.nvidia.com

docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]

옵션설명

-d detached mode 흔히 말하는 백그라운드 모드
-p 호스트와 컨테이너의 포트를 연결 (포워딩)
-v 호스트와 컨테이너의 디렉토리를 연결 (마운트)
-e 컨테이너 내에서 사용할 환경변수 설정
–name 컨테이너 이름 설정
–rm 프로세스 종료시 컨테이너 자동 제거
-it -i와 -t를 동시에 사용한 것으로 터미널 입력을 위한 옵션
–link 컨테이너 연결 [컨테이너명:별칭]

 

 

 

 

$ nvidia-docker run -it --name tensorrt nvcr.io/nvidia/tensorrt:<xx.xx>-py<x>

 

  • -it : 대화형을 의미
  • --rm : 작업이 완료되면 이미지를 지움 -> 테스트 할 때만 사용할 것, 필자는 이걸로 만들었다가 작업하고 종료하니 컨테이너가 삭제됨 ㅎㅎ ㅎㅎㅎ 
  • <xx.xx> : 컨테이너 버전을 뜻함 ex : 18.09
  • px<x> : python 버전을 뜻함 ex : py3 or py2

 

 

예를 들어, 필자는 아래와 같은 환경으로 설정하고 싶어서

 

Key Features and Enhancements

This TensorRT release includes the following key features and enhancements.

다음의 명령어를 수행하였다. 

$ nvidia-docker run -it --name tensorrt nvcr.io/nvidia/tensorrt:18.09-py3

 

내 컴퓨터(호스트) 와 도커 환경 사이의 공유 파일 지정을 하고 싶다면 

- v 내컴퓨터환경:도커환경 

옵션 추가

nvidia-docker run -it --name tensorrt -v /home/seohee/docker:/host_temp/ nvcr.io/nvidia/tensorrt:18.11-py3

 

 

4. 샘플소스 코드 실행을 위한 make 

/workspace/tensorrt 디렉토리에는 TensorRT C++ 및 Python 샘플들이 포함되어있다. 

샘플들을 사용하기 위해서는 아래와 같은 명령어를 실행한다. 

$ cd /workspace/tensorrt/samples
$ make -j4

 

 

5. /workspace/tensorrt/bin 확인 

컴파일이 완료되면 bin 폴더에 아래와 같은 파일들이 생성된다. 

chobj 
sample_mnist_debug
dchobj 
sample_movielens
download-digits-model.py 
sample_movielens_debug
giexec 
sample_movielens_mps
sample_char_rnn
sample_movielens_mps_debug
sample_char_rnn
_debug sample_nmt
sample_fasterRCNN
sample_nmt_debug
sample_fasterRCNN_debug
sample_onnx_mnist
sample_googlenet
sample_onnx_mnist_debug
sample_googlenet_debug 
sample_plugin
sample_int8 
sample_plugin_debug
sample_int8_api 
sample_ssd
sample_int8_api_debug 
sample_ssd_debug
sample_int8_debug 
sample_uff_mnist
sample_mlp 
sample_uff_mnist_debug
sample_mlp_debug
sample_uff_ssd
sample_mnist sample_uff_ssd_debug
sample_mnist_api
trtexec
sample_mnist_api_debug
trtexec_debu

 

 

 

6. C++ sample 코드 실행 

$ ./sample_mnist
$ ./sample_uff_mnist
$ ./sample_onnx_mnist

 

 

 

 

7. C++ sample 결과 확인 (./sample_mnist)

 

 

 

8. Python Dependency 를 위한 .sh 실행 

Python sample은 /workspace/tensorrt/samples/python 디렉토리에서 찾을 수 있다.

TensorFlow 및 Pytorch 딥러닝 프레임워크는 TensorRT 컨테이너에 포함되어있지 않으므로 

이러한 프레임워크에 의존하는 샘플을 실행하려면 아래와 같은 명령어를 실행한다. 

$ /opt/tensorrt/python/python_setup.sh

 

 

 

9. Python sample 실행 

/workspace/tensorrt/samples/python/introductory_parser_samples 디렉토리에서 샘플 코드 실행

$ python caffe_resnet50.py -d /workspace/tensorrt/python/data
$ python uff_resnet50.py -d /workspace/tensorrt/python/data
$ python onnx_resnet50.py -d /workspace/tensorrt/python/data

 

 

 

 

 

 

 

 

 

 

 

참고자료 1 : https://docs.nvidia.com/deeplearning/sdk/pdf/TensorRT-Container-Release-Notes.pdf

불러오는 중입니다...

참고자료 2 : https://ngc.nvidia.com/catalog/containers/nvidia:tensorrt

 

NVIDIA GPU CLOUD

 

ngc.nvidia.com

참고자료 3 : https://devblogs.nvidia.com/nvidia-serves-deep-learning-inference/

 

NVIDIA TensorRT Inference Server Boosts Deep Learning Inference | NVIDIA Developer Blog

The TensorRT inference server provides an easy-to-use, production-ready inference solution, enabling simple GPU-acceleration for inferencing in the cloud.

devblogs.nvidia.com

참고자료 4 : https://docs.nvidia.com/deeplearning/sdk/tensorrt-container-release-notes/rel_18.09.html#rel_18.09

 

TensorRT Container Release Notes :: Deep Learning SDK Documentation

The NVIDIA container image of TensorRT, release 18.09, is available. Contents of TensorRT This container includes the following: The TensorRT C++ samples and C++ API documentation. The samples can be built by running make in the /workspace/tensorrt/samples

docs.nvidia.com

 

728x90
반응형