Tensorrt 설치 및 가중치 변환[1]
최근 AI모델의 추론 속도와 자원사용률에 대한 경량화 이슈로 인해 tenssort 도입 및 변환에 시행착오를 겪고 있다. 그럼 tensorrt가 무엇이고, 어떤 효과가 있으며 설치 및 변환 방법에 대해 알아보겠다.
1. TensorRT는 무엇인가?
TensorRT는 NVIDIA가 개발한 딥러닝 모델 추론 가속화 라이브러리이다. NVIDIA의 GPU에서 실행되는 딥러닝 모델을 불필요한 연산을 제거하고, 최적화하여 모델의 추론 속도를 크게 개선할 수 있게 해준다.
FP32를 FP16 또는 INT8로 변환하여 계산 속도를 증가시키고, 자원 사용량을 줄여준다.
사용이 필요한 경우
- 실시간 추론이 필요할 때
- 디바이스 성능이 좋지않은 에지 디바이스에서 모델을 추론시킬 때
2. GPU에 의존성이 강하여 사용할 Device에서 변환을 해야한다?
TensorRT의 경우 해당 디바이스에 딥러닝 모델을 최적화시켜 추론 속도를 최대한으로 개선하는 방법을 사용한다. 그러므로 변환시킨 디바이스와 실제 모델을 사용하는 디바이스가 다른 경우 속도 개선 효과가 부족하거나 적고, 심지어 실행이 되지 않을 수도 있다.
그러므로 모델 추론을 할 디바이스에서 변환을 해주는 것이 가장 효과적이다.
3. 설치 방법?
NVIDIA 드라이버 버전과 우분투 버전에 맞는 TensorRT를 다운받는다.
1
2
3
sudo wget https://developer.nvidia.com/downloads/compute/machine-learning/tensorrt/10.5.0/local_repo/nv-tensorrt-local-repo-ubuntu2004-10.5.0-cuda-12.6_1.0-1_amd64.deb
sudo dpkg -i nv-tensorrt-local-repo-ubuntu2004-10.5.0-cuda-12.6_1.0-1_amd64.deb
sudo apt update
뒤의 숫자는 설치한 TensorRT 버전에 맞는 숫자를 입력한다.
1
2
3
sudo apt install -y libnvinfer8 libnvparsers10 libnvonnxparsers10 libnvinfer-plugin10
sudo apt install -y python3-libnvinfer-dev
sudo apt install -y python3-libnvinfer
환경 변수 설정
1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/x86_64-linux-gnu
4. 변환 방법은?
현재 파악한 변환 방법은 2가지 이다.
- python code를 이용한 변환
- trtexec 를 이용한 변환
현재는 2번 방법이 편리하여 2번째 방법을 이용해 커맨드로 변환을 하고 있다.
우선 TensorRT 변환 전 모델이 ONNX로 변환되어 있어야 함
trexec를 이용해 모델을 변환하는 방법은 매우 간단하다.
1
trtexec --onnx=model.onnx --saveEngine=model.engine
- –fp16 과 –int8 옵션을 줘서 fp16과 int8로 변환이 가능하다.
- –maxBatch=배치 수 를 이용하여 배치 수를 설정할 수 있다.
현재 YOLOv8-Face 모델을 변환 중인데 변환이 완료되면 코드 변환에 관련하여 업로드를 할 예정이다.