2025.04.13 - [기타] - [컴퓨팅] CUDA / CUDA Toolkit 과 cuDNN
[컴퓨팅] CUDA / CUDA Toolkit 과 cuDNN
CUDA 란? Compute Unified Device Architecture의 준말로,NVIDIA에서 개발한 병렬 컴퓨팅 플랫폼 및 프로그래밍 모델이다.쉽게 말하면, 엔비디아의 GPU 개발 툴이다. 그래픽 처리 장치(GPU)에서 수행하는 (병
data-yun.tistory.com
이전 포스팅을 보면 NVIDIA toolkit을 다운받고 이안에 NVIDIA SDK가 담겨 있는 것을 이해할 수 있다.
TensorRT
TensorRT는 NVIDIA에서 개발한 딥러닝 추론 최적화 엔진이다.
기존 딥러닝 프레임워크 (pytorch, tensorflow 등) 로 네트워크를 구성하고 이를 모델로 만들었다면, TensorRT는 이러한 모델을 여러 최적화 과정을 거쳐 NVIDIA의 GPU에 효율적으로 싣는 역할을 한다. 또한 최적화 과정을 거쳐 만들어낸 엔진을 binary 형태로 저장(blob형태로 저장)하고 사용할 때마다 deserialize(역직렬화?)하여 사용한다.
일반 CPU 사용할때와 비교했을때 추론 속도가 6배 차이가 난다고 한다.
(참고)
NVIDIA TensorRT
An SDK with an optimizer for high-performance deep learning inference.
developer.nvidia.com
보통 가상환경에서 사용한다기 보다, docker나 base 로컬 환경에 설치하게 된다.
TensorRT는 Optimizer나 RuntimeEngine으로 구성되어 있다.
옵티마이저는 gpu연산에 적합한 최적화기법으로 딥러닝 모델을 최적화해주고,
런타임엔진은 다양한 gpu에서 모델연산을 수행한다.
내가 이해하기로는 NVIDIA의 GPU(ex. RTX 4060)를 가지고 사용할 때,
이에 최적화하여 사용할 수 있도록 도와주는 툴이다.
그래픽 카드는 물리적으로/하드웨어적으로 사용하는 것 뿐이고,
이를 더 잘 활용하기 위한 소프트웨어? 같은 느낌.
- TRT는 C++과 python 을 API 레벨에서 지원하므로 cuda를 잘 모르는 딥러닝 개발자들도 쉽게 사용할 수 있도록 되어있다.
- 또한, latency를 쉽게 향상시킨다. gpu가 지원하는 활용가능한 최적의 연산지원을 자동으로 사용할 수 있도록 runtime binary를 빌드해주기 때문이다.
- 다양한 layer 및 연산에 대해 customization할 수 있는 방법론을 제공한다. convolution layer나 relu와 같은 활성화함수가 아니더라도 여러 layer를 포함하여 설명한다.
TensorRT로 변환
TensorRT에서 이용하는 최적화 기법을 설명하면 왜 변환해야 하는지, 변환하는 것의 장점이 설명될 것 같다.
Graph Optimization
Layer fusion과 Tensor fusion을 사용하여 커널의 노드를 수직 또는 수평으로 합쳐서 간소화된 layer로 바꾼다. (단일 1x1 CBR레이어)
따라서 GPU 메로리와 대역폭을 최적화하게 된다.
Quantization & Precision Calibration
학습과정에서 매개변수와 활성화 값은 FP32 정밀도를 갖는데, 이를 FP16 또는 INT8 정밀도로 변환해야 한다.
왜냐하면 이러한 최적화는 지연시간(latency)을 줄일 뿐만 아니라 모델크기(size)를 크게 줄인다.
정확도가 약간 떨어질 수 는 있지만, 큰 영향을 끼치지 않는다.
스케일링 계수를 구하기 위해 FP32 값의 -|max|와 |max|를 INT8 값의 -127과 127에 각각 직접 매핑한다. 다른 값들은 선형 스케일에 따라 할당된다.(그림 3의 왼쪽)
이는 정확도가 크게 떨어질 수 있다.
|max| 값에서 매핑하는 대신, 임계값 범위를 -127 또는 127로 매핑하고 임계값에 대한 다른 모든 이상값은 -127 또는 127과 같은 극단적인 범위 값으로 매핑한다. (그림 3의 오른쪽)
낮은 precision의 네트워크 일수록 당연하게 data의 크기와 가중치의 bit수가 작기 때문에 빠르고 효율적인 연산이 가능하다.
TensorRT는 INT8과 같이 Accuracy-drop이 크게 예상되는 네트워크에서는 Calibration을 지원한다. 종류는 EntropyCalibrator, EntropyCalibrator2를 지원하고 이를 이용해 Quantization(양자화)를 수행할 때 weight와 intermediate tensor들의 정보 손실의 최소화 할 수 있다.
이와 같이 TensorRT에서는 INT8까지의 Quantization을 지원하여 딥러닝 모델을 Energy-efficient하게 연산을 더욱 효율적으로 처리할 수 있게 되는 것이다.
TensorRT란?
안녕하세요! 오늘은 NVIDIA의 TensorRT에 대해 알아보려고 합니다. TensorRT란, NVIDIA사에서 개발한 딥러닝 연산 최적화 엔진입니다. 기존 딥러닝 프레임워크(PyTorch, TensorFlow, Caffe 등)가 네트워크를 구성
opac.tistory.com
https://eehoeskrap.tistory.com/414
[TensorRT] NVIDIA TensorRT 개념, 설치방법, 사용하기
1. TensorRT 란? 2. TensorRT 설치하기 3. 여러 프레임워크에서 TensorRT 사용하기 1. TensorRT 란? TensorRT는 학습된 딥러닝 모델을 최적화하여 NVIDIA GPU 상에서의 추론 속도를 수배 ~ 수십배 까지 향상시켜 딥
eehoeskrap.tistory.com
추가로 참고할 블로그!
'Deep Learning' 카테고리의 다른 글
[DeepLearning] 모델 변환과 FP32-FP16-INT8 (0) | 2025.05.03 |
---|---|
[영상처리] Moving Average Filter & Gaussian Filter (0) | 2025.03.03 |
[DL] ONNX (0) | 2024.11.19 |
신경망 keras로 접근하기 (0) | 2024.06.05 |
신경망의 이해 (1) | 2024.06.05 |