TensorRT란?
TensorRT는 NVIDIA gpu를 사용하여 onnx나 tensorflow와 같은 deep learning 모델들을 최적화시켜 모델의 처리 속도를 향상시켜주는 엔진으로, 밑에 tensorrt홈페이지와 블로그에 가면 설명이 잘 되어 있다.
https://developer.nvidia.com/tensorrt
https://eehoeskrap.tistory.com/414
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
'Development > TensorRT' 카테고리의 다른 글
[TensorRT] trtexec dumpProfile / profilingVerbosity / dumpLayerInfo option (0) | 2022.04.21 |
---|---|
[TensorRT] Ubuntu docker container를 이용한 TensorRT 사용 (0) | 2021.09.17 |
[TensoRT] SM version not supported in this NVRTC version 오류 해결 (0) | 2021.08.30 |
[TensorRT] architecture 별 호환성 (0) | 2021.08.10 |
댓글