AI 시스템 구축: 서빙 최적화 – TensorRT
ㅁ 서빙 최적화
ㅇ 정의:
딥러닝 모델을 실제 서비스 환경에서 빠르고 효율적으로 추론할 수 있도록 최적화하는 과정으로, 하드웨어 가속과 연산 그래프 최적화 등을 포함함.
ㅇ 특징:
– GPU, CPU 등 다양한 하드웨어 환경에 맞춰 모델을 경량화 및 최적화
– 지연 시간(latency) 감소와 처리량(throughput) 향상 목표
– 배포 환경에 적합한 포맷 변환 및 연산 최적화 적용
ㅇ 적합한 경우:
– 실시간 응답이 중요한 AI 서비스 (예: 자율주행, 실시간 번역)
– 대규모 요청 처리와 비용 절감이 필요한 경우
ㅇ 시험 함정:
– 학습 최적화와 서빙 최적화를 혼동하는 경우
– 단순 하드웨어 업그레이드만으로 서빙 성능이 향상된다고 오해하는 경우
ㅇ 시험 대비 “패턴 보기” 예시:
O: “서빙 최적화는 모델 추론 속도를 높이기 위한 과정이다.”
X: “서빙 최적화는 모델 학습 속도를 높이는 과정이다.”
================================
1. TensorRT
ㅇ 정의:
NVIDIA에서 제공하는 딥러닝 추론 최적화 라이브러리로, 학습된 모델을 GPU 환경에서 고속으로 실행할 수 있도록 변환 및 최적화함.
ㅇ 특징:
– FP32, FP16, INT8 등 다양한 정밀도 지원으로 속도와 정확도 균형 조정 가능
– 연산 그래프 최적화, 레이어 융합, 메모리 최적화 기능 제공
– TensorFlow, PyTorch, ONNX 등 다양한 프레임워크 모델 지원
ㅇ 적합한 경우:
– NVIDIA GPU 기반 서버에서 대규모 실시간 추론 서비스 운영 시
– 딥러닝 모델의 지연 시간을 최소화해야 하는 경우
ㅇ 시험 함정:
– TensorRT가 모델 학습까지 지원한다고 오해하는 경우
– GPU가 아닌 환경에서도 동일한 최적화 효과를 기대하는 경우
ㅇ 시험 대비 “패턴 보기” 예시:
O: “TensorRT는 NVIDIA GPU에서 딥러닝 모델의 추론을 최적화한다.”
X: “TensorRT는 모든 CPU 환경에서 동일한 성능 향상을 제공한다.”
ㅁ 추가 학습 내용
TensorRT의 주요 구성 요소는 Builder, Runtime, Parser로 나뉜다. Builder는 네트워크를 정의하고 최적화하는 역할을 하며, Runtime은 추론을 실행한다. Parser는 다양한 형식의 모델을 TensorRT에서 사용할 수 있도록 변환한다.
INT8 최적화를 사용할 경우 Calibration 과정을 거쳐 정확도를 보정함으로써 정밀도 손실을 최소화해야 한다.
ONNX 변환 과정에서 지원하지 않는 연산자는 Plugin을 통해 구현할 수 있다.
TensorRT는 배치 크기와 동적 입력 크기를 지원하므로 다양한 요청 패턴에 유연하게 대응할 수 있다.
마지막으로 GPU 메모리 사용량과 레이턴시 사이에는 트레이드오프가 있으므로 이를 고려하여 최적화 전략을 세워야 한다.