본문 바로가기
Development/TensorRT

[TensorRT]Onnx모델을 tensorrt모델로 변환

by shuka 2021. 8. 19.
728x90
728x90

TensorRT란?

TensorRT는 NVIDIA gpu를 사용하여 onnx나 tensorflow와 같은 deep learning 모델들을 최적화시켜 모델의 처리 속도를  향상시켜주는 엔진으로, 밑에 tensorrt홈페이지와 블로그에 가면 설명이 잘 되어 있다.

https://developer.nvidia.com/tensorrt

 

NVIDIA TensorRT

NVIDIA TensorRT NVIDIA® TensorRT™ is an SDK for high-performance deep learning inference. It includes a deep learning inference optimizer and runtime that delivers low latency and high throughput for deep learning inference applications. Get Started Ten

developer.nvidia.com

https://eehoeskrap.tistory.com/414

 

[TensorRT] NVIDIA TensorRT 개념, 설치방법, 사용하기

1. TensorRT 란? 2. TensorRT 설치하기 3. 여러 프레임워크에서 TensorRT 사용하기 1. TensorRT 란? TensorRT는 학습된 딥러닝 모델을 최적화하여 NVIDIA GPU 상에서의 추론 속도를 수배 ~ 수십배 까지 향상시켜..

eehoeskrap.tistory.com

 

 

Tar package를 이용한 TensorRT모델로 변환

Onnx모델을 tensorrt 모델로 변환하기 위해서는 밑의 이미지와 같이 변환을 진행하는 pc의 os가 windows인지 Linux인지, cuda버전이 어떻게 되는지에 따라 현재 pc의 상태에 맞게 tensorrt를 다운로드하여야 한다.

 

 

 

cudnn 같은 경우, Tar package를 받으면  버전에 따라 어떤 버전의 cudnn이 필요한지 파일명에 포함되어 있다.

 

 

 

압축을 풀면 라이브러리 파일들과 c++, python에 대한 sample code들도 포함되어 있다.

모델 변환은 bin폴더 안에 있는 trtexec를 사용하면 된다.

 

 

bin폴더에 있는 trtexec를 사용하기 위해서는 lib폴더를 환경 변수 path로 지정해줘야 한다.

환경 변수를 설정하지 않으면 libnvinfer.so파일을 찾을 수 없다는 에러가 발생한다.

 

 

만약 여러 버전을 사용하는 게 아니라면 ~/.bashrc에 export (tensorrt lib path)를 추가해서 사용하면 편하지만 여러 버전을 사용해야 할 경우 terminal에 export (tensorrt lib path)를 치고 해당 terminal의 창에 대해서만 환경 변수를 설정해 준다.

이렇게 하면 terminal을 종료하였을 때 설정했던 환경 변수는 사라진다.

export /tensorrt/tensorrt7/TensorRT-7.1.3.4_cuda10.2/lib

 

 

환경 변수를 설정하고 bin폴더에 들어가서 trtexec를 실행하면 trtexec에서 사용할 수 있는 옵션들을 볼 수 있다.

tensorrt버전이 높아질수록 여러 옵션들도 추가되고 버전에 따라 다를 수 있기 때문에 한번 확인해 보고 바꿔주는 것이 좋다.

tensorrt7 버전부터는 dynamic batch를 사용할 수 있다.

  • tensorrt5

  • tensorrt7

 

 

이제 변환을 위한 준비는 완료되었고, onnx를 tensorrt모델로 변환하기 위해 명령어를 치면 된다.

--saveEngine에서 확장자 이름은 .engine이나 .fp16 등 원하는 이름으로 해서 사용해도 상관없다.

--verbose는 변환이 되는 과정을 terminal에 표시해 주는 것으로 필수 옵션은 아니다.

./trtexec --onnx=onnx_path/file.onnx --saveEngine=save_path/file.engine --verbose

 

728x90
반응형

댓글