본문 바로가기

잡다한 것

GPU 가속을 위한 TensorRT 7.0.0, tkDNN 환경 구축하기(feat. cmake업그레이드)

해당 문서는 GPU 연산 가속화를 위한 TensorRT+tkDNN 환경을 구축하기 위한 포스팅입니다.

TensorRT는 Nvidia에서 만든 딥러닝 추론 최적화 라이브러리이다.
기존 딥러닝 모델을 구조적으로 개선해서 추론 성능을 향상시키는 라이브러리.
Nvidia의 GPU와 CUDA를 사용하면 어디에든 적용 시킬 수 있기 때문에, 앞서 설치했었던 Nvidia jetson시리즈 에도 모두 적용하여 성능을 올릴 수 있다는 장점이 있다.

tkDNN은 앞에 있는 TensorRT환경의 모델의 연산 방법을 Float32, Float16, Int8 자료형을 이용하여 연산을 시켜줄 수 있는 라이브러리 이다.
자료형 변환이 중요한 이유는 GPU연산의 부담을 확 줄여 메모리 사용량이 줄어듬과 동시에 연산량이 적어지는 만큼 inference time이 극단적으로 줄어든다는 장점이 있다.

그럼 TensorRT 7.0.0과 tkDNN 설치를 진행해보자.

Cmake version Upgrade

보통의 사용자라면 sudo apt-get install cmake로 cmake가 설치되어 있을 텐데, 이 방법으로 설치할 경우 3.10.2 버젼까지만 설치가 가능하다. 그러나 진행 과정에서 cmake 3.12.2 이상의 버젼을 원하기 때문에 cmake를 업그레이드 해주어야 한다.

cmake --version

해당 명령어를 통해 본인의 cmake 버젼을 확인해보고, 3.12.2 이상이라면 해당 과정은 점프하길 바란다.

https://cmake.org/download/

 

Download | CMake

Current development distribution Each night binaries are created as part of the testing process. Other than passing all of the tests in CMake, this version of CMake should not be expected to work in a production environment. It is being produced so that us

cmake.org

cmake 다운로드 페이지에서 cmake를 다운로드 해준다. 필자는 3.17.3 버젼으로 진행
다운로드 페이지에서 cmake-3.17.3.tar.gz 파일 다운로드

sudo apt remove cmake

cmake 업그레이드 전 기존 cmake를 삭제해 준다.

삭제가 완료되면 다운로드 받은 파일을 압축해제

tar zxvf cmake-3.17.3.tar.gz

 

압축 해제가 완료되면 cmake를 설치해준다.

cd cmake-3.17.3
./bootstrap
make
sudo make install

 

설치가 완료되었다면 cmake 버젼을 확인해보자.

cmake --version

cmake 버젼 확인

 

Install TensorRT

cmake설치가 완료되었으면 TensorRT를 설치해 주어야 한다. 필자는 7.0.0 버젼으로 진행

https://developer.nvidia.com/nvidia-tensorrt-7x-download

TensorRT 다운로드 사이트로 이동 (nvidia 로그인 필요)

현재 필자의 컴퓨터 환경은 ubuntu 18.04, CUDA 10.0을 사용하므로 그에 맞는 debian 패키지를 다운로드
(tar로 설치하는 방법도 있으나 다른 블로그에서 찾아볼 수도 있고,debian으로 설치를 원하는 사람이 있을 수도 있으니.. deb로 설치를 진행)

본인 컴퓨터 환경에 맞는 TensorRT 다운로드

다운로드가 완료 되었다면 패키지를 설치해주자.

cp Download/nv-tensorrt-repo-ubuntu1804-cuda10.0-trt7.0.0.11-ga-20191216_1-1_amd64.deb ./

sudo dpkg -i nv-tensorrt-repo-ubuntu1804-cuda10.0-trt7.0.0.11-ga-20191216_1-1_amd64.deb 
sudo apt-key add /var/nv-tensorrt-repo-cuda10.0-trt7.0.0.11-ga-20191216/7fa2af80.pub

sudo apt-get update
sudo apt-get install tensorrt cuda-nvrtc-10-0

 

TensorRT를 이용하기 위해 추가 패키지를 설치해주자

sudo apt-get install python-libnvinfer-dev
sudo apt-get install python3-libnvinfer-dev
sudo apt-get install uff-converter-tf

 

설치가 완료 되었다면, TensorRT가 잘 설치되었는지 확인해보자.

dpkg -l | grep TensorRT

TensorRT가 설치된 모습
python에서 tensorrt가 import 된 모습

 

Install tkDNN

딥러닝 추론 연산시 자료형을 변환할 수 있는 tkDNN을 설치해주자.
tkDNN의 경우 설치가 매우 간단하다.

git clone https://github.com/ceccocats/tkDNN.git
cd tkDNN
mkdir build
cd build
cmake ..
make -j6

 

이대로 진행하였다면 설치가 완료된 것이다. test파일을 실행하여 확인 해보면,

./demo yolo4_fp32.rt ../demo/yolo_test.mp4 y

 

FP32 inference

자료형 변환을 원할 경우에는 bashrc에서 해당 명령어를 통해 변경 (default값으로 FP32가 설정되어 있다.)

export TKDNN_MODE=FP16
export TKDNN_MODE=INT8