| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- git
- 스마트팩토리
- 생성형 AI
- AI
- 오픈소스
- comfyui
- 비전AI
- Vision AI
- 앱테크
- 리눅스
- tensorRT
- 딥러닝 추론 최적화
- 산업적용
- onnx
- github
- 파이썬 클래스
- Python
- 프로그래밍
- pytorch
- 파이썬
- 인공지능
- Windows
- stable diffusion
- 시스템관리
- YOLO
- C++ 기초
- yolo11
- 머신러닝
- 생성형AI
- 딥러닝
Archives
- Today
- Total
너도 할 수 있는, 너도밤나무 코딩
[TensorRT] TensorRT INT8 최적화로 YOLO 추론 속도 극대화 본문
인공지능(AI, Artificial Intelligence)/TensorRT
[TensorRT] TensorRT INT8 최적화로 YOLO 추론 속도 극대화
곡마일장 2025. 9. 25. 07:56반응형
딥러닝 모델 추론에서 성능을 끌어올리기 위해서는 정밀도(Precision)
최적화가 핵심입니다. 특히 YOLO 같은 실시간 객체 탐지 모델은 GPU 연산
자원을 많이 소모하기 때문에, 효율적인 최적화 전략이 필요합니다. 이번
글에서는 TensorRT의 INT8 최적화를 활용하여 YOLO 추론 속도를
극대화하는 방법을 살펴보겠습니다.
1. FP32 → FP16 → INT8 최적화 흐름
TensorRT는 다양한 정밀도 모드를 제공합니다.
- FP32 (기본): 가장 높은 정밀도를 보장하지만, 속도는 가장 느림
- FP16 (Half Precision): 연산 속도가 빨라지고 GPU 메모리 사용량이
절감됨 - INT8 (Quantization): 가장 빠른 속도를 제공하지만, Calibration
과정이 필요
보통 YOLO 모델은 FP32 → FP16 → INT8 순서로 점진적 최적화를 진행합니다.
특히 INT8 모드는 추가적인 보정(Calibration)을 통해 성능 손실을
최소화하면서도 대폭적인 속도 향상을 제공합니다.
2. Calibration의 핵심 역할
INT8 변환 시 Calibration은 모델의 가중치와 활성값을 8비트 정수 범위에
맞게 스케일링하는 과정입니다.
이 과정이 올바르게 수행되지 않으면 모델이 학습한 특징을 제대로 반영하지
못해 성능이 급격히 저하될 수 있습니다.
- Calibration 데이터셋: 실제 추론 환경과 유사한 이미지들을
사용해야 함 - 샘플 수: 보통 수백 장의 이미지로 충분 (200~500장 추천)
- 주의점: 훈련 데이터 전체를 쓰기보다는 대표성을 가지는 데이터셋을
사용하는 것이 중요
3. INT8 최적화 과정 요약
- ONNX 변환
PyTorch → ONNX 변환 시,dynamic_axes를 지정해 입력 크기를 유연하게
설정 - ONNX → TensorRT 변환
trtexec --onnx=best.onnx --saveEngine=best_fp32.engine --fp32 trtexec --onnx=best.onnx --saveEngine=best_fp16.engine --fp16 trtexec --onnx=best.onnx --saveEngine=best_int8.engine --int8 --calib=<calib.cache> --calibInput=D:/calibration/images- INT8 Calibration 코드 작성
Python API로IInt8EntropyCalibrator2를 구현하고, Calibration
이미지를 로딩해 캐시 파일 생성
4. 성능 비교 (예시)
정밀도 모드 추론 속도 (FPS) GPU 메모리 사용량 mAP 손실
FP32 100 FPS 100% 0%
FP16 170 FPS ~70% <1%
INT8 250 FPS ~50% 1~2%
※ 실제 수치는 GPU 아키텍처와 모델 크기에 따라 다를 수 있습니다.
5. 자주 발생하는 문제와 해결 방법
- 문제: Engine 생성 실패 (invalid unordered_map<K, T> key)
→ ONNX 모델 내int64텐서를int32로 변환 후 다시 시도 - 문제: "Dynamic dimensions required for input"
→--minShapes,--optShapes,--maxShapes옵션을 명시해야 함 - 문제: FP16과 INT8 동시 지정 경고
→--fp16과--int8은 동시에 사용할 수 없음. INT8 단독 실행 필요
6. 결론
YOLO 모델을 TensorRT INT8 모드로 최적화하면 2~3배 속도 향상을
기대할 수 있습니다.
단, Calibration 품질이 전체 성능을 좌우하므로, 반드시 적절한 데이터셋을
사용하는 것이 중요합니다.
SEO 키워드
TensorRT YOLO INT8 최적화, YOLO 추론 속도 향상, 딥러닝 모델 최적화, INT8
Calibration, FP32 FP16 INT8 비교, TensorRT 오류 해결, YOLO TensorRT 엔진
생성
반응형
'인공지능(AI, Artificial Intelligence) > TensorRT' 카테고리의 다른 글
| [TensorRT] TensorRT INT8 Engine 생성 실패? 자주 발생하는 오류와 해결 가이드 (0) | 2025.09.24 |
|---|---|
| [TensorRT] YOLO 기반 비전 검사에서 TensorRT INT8 Calibration Dataset 준비 방법 (0) | 2025.09.23 |
| [TensorRT] TensorRT 8 vs 10: 차이점 완벽 비교 분석 (0) | 2025.09.10 |