Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

덕배의 블로그

엔비디아 NVIDIA TensorRT에 대해서 알아보자 본문

인공지능

엔비디아 NVIDIA TensorRT에 대해서 알아보자

김덕배_KDB 2023. 7. 8. 13:57
반응형

엔비디아 tensorRT
tensorRT

TensorRT란?

TensorRT는 학습된 딥러닝 모델을 최적화하여 NVIDIA GPU 상에서의 추론 속도를 수배 ~ 수십 배까지 향상해 딥러닝 서비스를 개선하는데 도움을 줄 수 있는 모델 최적화 엔진이다.

 

 

 

Introduction

  1. Optimizer : NVIDIA GPU 연산에 적합한 최적화 기법들을 이용하여 모델을 최적화
  2. Runtime Engine : 다양한 GPU에서 모델연산을 수행
  3. 흔히들 우리가 접하는 Caffe, Pytorch, Tensor Flow, PaddlePaddle 등의 딥러닝 프레임워크를 통해 짜인 딥러닝 모델을 TensorRT를 통해 모델을 최적화하여 TESLA T4 , JETSON TX2, TESLA V100 등의 NVIDIA GPU 플랫폼에 아름답게 싣는 것이다.
  4. TensorRT는 C++ 및 Python을 API 레벨에서 지원하고 있기 때문에 GPU 프로그래밍인 CUDA 지식이 별로 없어도 딥러닝 분야의 개발자들이 쉽게 사용할 수 있다.
  5. Convolution Layer, ReLU 등의 Layer 뿐 만 아니라 다양한 Layer 및 연산에 대하여 Customization 할 수 있는 방법론을 제공하여 개발자들이 유연하게 TensorRT를 활용할 수 있도록 하고 있다.
  6. GPU가 지원하는 활용 가능한 최적의 연산 자원을 자동으로 사용할 수 있도록 Runtime binary를 빌드해 주기 때문에 Latency 및 Throughput을 쉽게 향상할 수 있고, 이를 통해 딥러닝 응용프로그램 및 서비스의 효율적인 실행이 가능하다.

프레임워크
tensorRT

 

 

TensorRT optimization

NVIDIA platform에서 최적의 Inference 성능을 낼 수 있도록 Network compression, Network optimization 그리고 GPU 최적화 기술들을 대상 Deep Learning 모델에 자동으로 적용

 

 

 

Quantization & Precision Calibration

1. 낮은 Precision의 Network일수록 data의 크기 및 weight들의 bit수가 적기 때문에 더 빠르고 효율적인 연산이 가능

2. Quantization 기법들 중, TensorRT는 Symmetric Linear Quantization을 사용

3. Deep Learning Framework의 일반적인 FP32의 data를 FP16 및 INT8의 data type으로 precision을 낮춤

4. FP16으로의 precision down-scale은 Network의 accuracy drop에 큰 영향을 주지는 않지만,

  • INT8로의 down-scale은 accuracy drop을 보이는 몇 부류의 Network이 존재 → 추가적인 calibration 방법 필요
  • TensorRT에서는 EntronpyCalibrator, EntropyCalibrator2 그리고 MinMaxCalibrator를 지원
  • 이를 이용하여 quantization시 weight 및 intermediate tensor들의 정보의 손실을 최소화할 수 있음 

 

 

Graph Optimization

Deep Learning Network에서 사용되는 primitive 연산 형태, compound 연산 형태의 graph node들을 각 platform에 최적화된 code를 구성하기 위하여 사용됨

  • Layer Fusion 방식과 Tensor Fusion 방식을 동시에 적용
  • Layer Fusion은 Vertical or Horizontal Layer Fusion 그리고 Tensor Fusion이 적용되어 model graph를 단순화
  • 이를 통하여 model의 layer 개수가 크게 감소

optimization
tensorRT optimization

 

 

 

Dynamic Tensor Memory & Multi-stream execution

1. Memory management : footprint를 줄여 재사용을 할 수 있도록 도와주는 Dynamic tensor memory 기능

2. CUDA stream : multiple input stream의 scheduling을 통해 병렬 효율을 극대화할 수 있는 Multi-stream execution 기능

 

 

 

TensorRT performances

기본적인 ResNet50 기준으로 볼 때 동일한 GPU에서 TensorRT를 사용하는 것만으로도 대략 8배 이상의 성능 향상 효과

tensorrt의 퍼포먼스
tensorRT performance

 

 

Kernel Auto-tuning

각 platform 및 architecture들은 CUDA engine의 개수, memory 그리고 specialized engine 포함 여부에 따라 optimize 된 kernel 이 다름.

  • 이를 TensorRT Runtime engine build시에 선택적으로 수행하여 최적의 engine binary 생성
  • Datacenter, Automotive, Embedded 등의 여러 플랫폼에 가장 적합한 Kernel을 선택하여 각 제품, 각 아키텍처에 맞는 가속을 자동으로 도와줌

 

 

 

 

이렇게 TensorRT에 대해서 알아보았다. 다음에는 Deepstream에 대해서 알아보려고 한다

미숙하지만 열심히 공부해 보겠습니다!