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
그래서 이용한 것이 Docker Container
TensorRT는 docker의 container를 통하여 필요한 환경을 꾸린 뒤, 구동 시킬 수 있다.
1. nvidia-docker 설치
https://devblogs.nvidia.com/nvidia-docker-gpu-server-application-deployment-made-easy/
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
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
예를 들어, 필자는 아래와 같은 환경으로 설정하고 싶어서
-
Container image 18.09-py2 contains Python 2.7; 18.09-py3 contains Python 3.5.
Key Features and Enhancements
This TensorRT release includes the following key features and enhancements.
- TensorRT container image version 18.09 is based on TensorRT 5.0.0 RC.
- Latest version of cuDNN 7.3.0.
- Latest version of CUDA 10.0.130 which includes support for DGX-2, Turing, and Jetson Xavier.
- Latest version of cuBLAS 10.0.130.
- Latest version of NCCL 2.3.4.
- Ubuntu 16.04 with August 2018 updates
다음의 명령어를 수행하였다.
$ 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
참고자료 3 : https://devblogs.nvidia.com/nvidia-serves-deep-learning-inference/
참고자료 4 : https://docs.nvidia.com/deeplearning/sdk/tensorrt-container-release-notes/rel_18.09.html#rel_18.09
'AI Development > TensorRT' 카테고리의 다른 글
[TensorRT] TensorRT를 이용한 ResNet 예제 (0) | 2019.04.12 |
---|---|
[TensorRT] TensorRT support Python2.7, 3.5 (0) | 2019.04.12 |
[TensorRT] TensorRT 5.0.2 Compatibility (0) | 2019.04.09 |
[TensorRT] Object Detection With The ONNX TensorRT Backend In Python (3) | 2019.04.09 |
[TensorRT] TensorRT 설치 (0) | 2019.04.09 |