TensorRT
TensorRT (NVIDIA 추론 가속)
TensorRT는 NVIDIA GPU에서 딥러닝 추론을 최적화하는 SDK예요. PyTorch나 ONNX 같은 프레임워크에서 학습한 모델을 받아서, GPU 배포에 최적화된 바이너리인 엔진(engine, plan file이라고도 불러요)으로 컴파일해 줘요. 혼합 정밀도(FP32/FP16/BF16/FP8/INT8/FP4/INT4), 동적 형태, 그리고 Transformer와 대규모 언어 모델(LLM)을 위한 특화 최적화까지 지원해요.
두 가지 핵심 구성 요소가 있어요. 하나는 모델을 하드웨어 특화 바이너리로 컴파일하는 **빌더(builder)**이고, 다른 하나는 엔진을 앱에 로드해 GPU에서 실행하는 **런타임(runtime)**이에요. 보통 학습한 모델을 ONNX로 내보낸 뒤 TensorRT가 그 파일을 읽어 엔진을 만들고, 애플리케이션은 런타임으로 추론을 실행해요.
TensorRT가 하는 일
TensorRT는 학습된 딥러닝 모델을 "빠른 GPU 전용 프로그램"으로 바꿔 추론을 실행하는 SDK예요. 빌더는 네트워크의 각 레이어마다 가장 빠른 GPU 커널(저수준 GPU 함수)을 골라서 엔진을 만들고, 런타임은 그 엔진을 로드해 GPU에서 실행해요.
결과적으로 원래 학습 프레임워크에서 실행하는 것보다 GPU에서 더 빠르게 돌아가는 컴파일된 엔진이 만들어져요. 실제 속도 향상은 모델, 정밀도, 배치 크기, GPU에 따라 달라요.
빠른 시작
TensorRT를 시작하는 흐름은 세 단계로 요약돼요.
- 설치 가이드를 따라 TensorRT를 설치해요 (Debian/RPM, tar/zip, 또는 컨테이너).
- 설치를 확인해요.
trtexec --help(non-pip) 또는import tensorrt; print(tensorrt.__version__)(pip). - 첫 엔진을 빌드해요 (
trtexec필요 — pip wheel에는 포함되지 않아요).
pip으로만 설치하면(Python 바인딩과 라이브러리만, trtexec 없음), pip install tensorrt 방식이 돼요. C++이나 CLI 워크플로우라면 Debian/RPM, tar/zip, 컨테이너를 선택하고, 패키지의 bin 디렉토리에서 trtexec를 실행하면 돼요.
기본 TensorRT 워크플로우
모델을 변환하고 배포하는 기본 단계는 네 가지예요.
- 모델 내보내기
- 정밀도 선택
- 모델 변환
- 모델 배포
변환 방법으로는 ONNX 자동 변환(가장 흔함), Torch-TensorRT, Nsight Deep Learning Designer(GUI), TensorRT 네트워크 정의 API 수동 구성이 있어요. 배포 옵션으로는 PyTorch 내 배포, 독립 실행 TensorRT 런타임 API, NVIDIA Triton Inference Server가 있어요.
엔진 빌드와 혼합 정밀도
TensorRT는 ONNX를 통해 엔진으로 자동 변환을 지원해요. trtexec로 ONNX 모델을 엔진으로 변환하고 프로파일링할 수 있어요.
trtexec --onnx=resnet50/model.onnx --saveEngine=resnet_engine_intro.engine --stronglyTyped
강한 타입(strong typing)을 써서 변환하는 이 명령은 resnet50/model.onnx를 resnet_engine_intro.engine이라는 TensorRT 엔진으로 만들어요.
TensorRT는 혼합 정밀도를 지원해서 FP32/FP16/BF16/FP8/INT8/FP4/INT4 같은 다양한 정밀도로 계산할 수 있어요. 정밀도를 낮추면 처리량은 커지고 메모리 대역폭 요구는 줄지만, INT8·FP8처럼 낮은 정밀도로 갈수록 양자화·교정(calibration) 관리가 필요해져요.