Tensor RT란?
NVIDIA 에서 제작했으며, 학습된 Deep Learning 모델을 최적화하여 NVIDIA GPU 상에서의 Inference 속도를 수배 ~ 수십배 까지 향상 시키는 모델 최적화 엔진이다.
가장 핵심포인트는 고성능 딥러닝 추론 라이브러리이다. (추론이다, 학습이아니라 추론이다)
How to USE?
NVIDIA GPU가 있는 로컬환경 혹은 Docker를 통해 설치한다.
Jetson은 ARM 기반 아키텍쳐 GPU를 사용하는데, 설치는 간단하다
Jetson nano,Xavier,Orin등 Jetson 계열에서는 기본 설치패키치 JETPACK을 설치하면 자동으로 설치 된다.
또한 , 기본 NVIDIA 제조사의 GPU 를 가지고 있다면 충분히 사용가능하다.
하지만 Driver Version, Compute Capbility, CUDA toolkit , CuDNN , TensorRT의 버전을 정확히 맞춰야 한다
그렇지 않다면 최적의 성능을 내지 못할 뿐더러 라이브러리가 충돌되어 OS를 재설치 하는 경우도 발생한다.
https://www.nvidia.co.kr/Download/index.aspx?lang=kr
https://developer.nvidia.com/cuda-gpus
https://developer.nvidia.com/cuda-toolkit-archive
https://docs.nvidia.com/deeplearning/tensorrt/install-guide/index.html
다음 그림과 같이 다양한 프레임워크 (pytorch , tensorflow , theano 등)에서의 모델을 자체적인 tensor RT 기술에 맞게 최적화하여 효율적으로 실행할 수 있게 변환한다.
글쓴이는 Pytorch yolov7 모델(.pt)을 ONNX(.onnx)로 변환하였고 TensorRT(.trt)로 변환하여 성능 측정에 임했다.
TensorRT 작동 방식
TensorRT의 작동 방식은 크게 세 단계로 나누어진다.
- Importing: 첫 번째 단계에서는 TensorFlow, PyTorch, ONNX 등과 같은 딥 러닝 프레임워크로부터 사전 학습된 모델을 가져온다.
- Optimizing: 가져온 모델은 TensorRT가 지원하는 여러 최적화 기법들에 의해 변환
- Deploying: 마지막 단계에서 최적화된 모델은 엔진 파일(engine file) 형태로 저장되며 이 파일은 실제 서비스나 어플리케이션에서 빠르게 로드하여 사용할 수 있다.
최적화 기법으로는
Layer fusion: 여러 계산 연산들을 하나로 병합하여 계산 속도를 개선하고 메모리 사용량을 줄인다
Precision calibration: 데이터 타입 변경(float32 ->float16 or int8)으로 메모리 점유율과 연산 속도를 개선한다
TensorRT 필요성
딥 러닝 모델은 학습(training) 단계와 추론(inference) 단계로 나뉜다.
대부분의 딥 러닝 프레임워크는 학습에 초점을 맞추고 있다. 하지만 실제 제품이나 서비스에서는 모델의 추론 성능이 중요하다.
이때 TensorRT가 중요한 역할을 하는데, 이것은 딥러닝 모델을 실제 서비스에 적용하기 위해 필요한 속도 향상과 자원 사용량 감소를 달성하기 위해 설계되었기 때문이다.
예를 들어, 실시간 비디오 스트리밍(얼굴 인식, 객체 탐지), 자율주행차량(Vison), 의료 진단(X-ray, MRI 판별) 등에서는 빠른 추론 시간이 요구된다.
이러한 경우에 TensorRT를 사용하면 딥러닝 모델의 실행 시간을 크게 줄일 수 있다.
또한, TensorRT를 통해 여러분은 복잡하고 큰 딥러닝 모델들도 효과적으로 최적화하여 배포할 수 있다.
위에서의 장점은 엄청나지만 단점으로는 작동하는 NVIDIA GPU의 방식대로 최적화가 되었기에, 모델 시각화 할수 있는 방법이 없다.
'ML & AI & DL 맛보며 친해지기' 카테고리의 다른 글
Jetson Nano 사용기 (0) | 2023.08.30 |
---|---|
[Deep Learning] ONNX 란? (0) | 2023.07.26 |