너도 할 수 있는, 너도밤나무 코딩

[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 최적화 과정 요약

  1. ONNX 변환
    PyTorch → ONNX 변환 시, dynamic_axes를 지정해 입력 크기를 유연하게
    설정
  2. ONNX → TensorRT 변환
  3. 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
  4. 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 엔진
생성
반응형