Nvidia TensorRT 는 GPU에서 고성능 추론을 용이하게 해주는 C++ 라이브러리이다.
TensorRT는 일련의 네트워크 및 매개변수 들로 구성된 네트워크를 사용하여
기존에 존재하는 네트워크를 고도로 최적화 시킬 수 있다.
현재 TensorRT는 CUDA 9.0, 10.0, 10.1 을 지원할 수 있고
TensorFlow에서 TensorRT 모델로 변환하려면 TensorFlow 1.12.0 버전이 필요하다고 한다.
또한 TesnorRT 는 sudo나 root 에 설치해야하며
anaconda 와 같은 가상환경을 사용할 경우 tensorRT가 설치된 곳을 제어 할 수 없다고 한다.
anaconda + python 2.7 을 이용하면 될 수 도 있다고 하는데 시도해보니 실패
1. TensorRT 파일 다운로드
https://developer.nvidia.com/tensorrt
2. tar 파일 압축 해제
$ tar xzvf TensorRT-5.1.x.x.Ubuntu-1x.04.x.x86_64-gnu.cuda-x.x.cudnn7.x.tar.gz
3. LD_LIBRARY_PATH 추가하기
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda-10.0/lib64:/usr/local/cuda/extras/CUPTI/lib64:/home/name/TensorRT-5.0.2.6/lib"
4. 휠 파일 설치
python 2.7 or python 3.x 버전에 따라 pip2 or pip3 사용하여 설치
$ cd TensorRT-5.1.x.x/python
# for python 2.7
$ sudo pip2 install tensorrt-5.1.x.x-cp27-none-linux_x86_64.whl
# for python 3.x
$ sudo pip3 install tensorrt-5.1.x.x-cp3x-none-linux_x86_64.whl
$ cd TensorRT-5.1.x.x/uff
# for python 2.7
$ sudo pip2 install uff-0.6.3-py2.py3-none-any.whl
# for python 3.x
$ sudo pip3 install uff-0.6.3-py2.py3-none-any.whl
# 위치 /usr/local/bin/convert-to-uff 인지 확인
$ which convert-to-uff
$ cd TensorRT-5.1.x.x/graphsurgeon
# for python 2.7
$ sudo pip2 install graphsurgeon-0.4.0-py2.py3-none-any.whl
# for python 3.x
$ sudo pip3 install graphsurgeon-0.4.0-py2.py3-none-any.whl
5. 설치 확인
$ tree-d
$ python
import tensorrt as trt
6. 예제 실행
TensorRT-5.x.x.x 폴더의 samples/python/end_to_end_tensorflow_mnist 폴더에서 예제 실행
아래는 README.md 파일 내용
# About This Sample
This sample demonstrates how to first train a model using TensorFlow and Keras,
freeze the model and write it to a protobuf file, convert it to UFF, and finally run inference using TensorRT.
# Installing Prerequisites
1. Make sure you have the python dependencies installed.
- For python2, run `python2 -m pip install -r requirements.txt` from the top-level of this sample.
- For python3, run `python3 -m pip install -r requirements.txt` from the top-level of this sample.
2. Make sure you have the UFF toolkit as well as `graphsurgeon` installed.
# Running the Sample
1. Train the model and write out the frozen graph:
```
mkdir models
python model.py
```
2. Convert the .pb file to .uff, using the convert-to-uff utility:
```
convert-to-uff models/lenet5.pb
```
The converter will display information about the input and output nodes, which you can use to the register
inputs and outputs with the parser. In this case, we already know the details of the input and output nodes
and have included them in the sample.
3. Create a TensorRT inference engine from the uff file and run inference:
```
python sample.py [-d DATA_DIR]
```
The data directory needs to be specified only if TensorRT is not installed in the default location.
아래와 같은 에러나면
ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory
밑에 블로그 내용 참고
https://eehoeskrap.tistory.com/308
참고자료 1 : https://docs.nvidia.com/deeplearning/sdk/tensorrt-install-guide/index.html#overview
'AI Development > TensorRT' 카테고리의 다른 글
[TensorRT] TensorRT를 이용한 ResNet 예제 (0) | 2019.04.12 |
---|---|
[TensorRT] TensorRT support Python2.7, 3.5 (0) | 2019.04.12 |
[TensorRT] Docker Container를 이용한 TensorRT 설치 (0) | 2019.04.10 |
[TensorRT] TensorRT 5.0.2 Compatibility (0) | 2019.04.09 |
[TensorRT] Object Detection With The ONNX TensorRT Backend In Python (3) | 2019.04.09 |