ML | DL/딥러닝 방법론|실습

모델 압축·배포 최적화 시리즈 5편: ONNX / TensorRT / TFLite 변환

Leeys 2025. 9. 14. 22:52
반응형

"모델을 한 번만 학습하고, 모든 디바이스에서 돌리고 싶다!"
ONNX, TensorRT, TFLite는 모델을 효율적으로 배포하기 위한 핵심 툴입니다.


 

ONNX / TensoRT / TFLite

 

모델 배포의 문제점

  • 학습은 보통 PyTorch / TensorFlow에서 하지만
    배포 환경은 서버, 모바일, 임베디드, 브라우저 등 다양
  • 프레임워크 종속적 모델은 호환성 문제 발생 →
    프레임워크 독립적인 포맷으로 변환 필요

ONNX (Open Neural Network Exchange)

ONNX는 프레임워크 독립 모델 표현(IR)

  • PyTorch, TensorFlow, scikit-learn 등에서 export 가능
  • ONNX Runtime, OpenVINO, TensorRT 등 다양한 런타임에서 추론 가능
  • Graph Optimization (Constant Folding, Fusion) 자동 수행

PyTorch → ONNX 변환 예시

import torch

model = get_trained_model()
model.eval()

dummy_input = torch.randn(1, 3, 224, 224)
torch.onnx.export(
    model, dummy_input, "model.onnx",
    input_names=["input"], output_names=["output"],
    opset_version=17, dynamic_axes={"input": {0: "batch"}}
)

TensorRT

TensorRT는 NVIDIA GPU용 고성능 추론 최적화 엔진

  • FP16, INT8, FP8 연산 최적화
  • Layer Fusion, Kernel Auto-Tuning, Tensor Core 활용
  • Batch별 최적화 프로파일 생성 가능

변환 과정

 
PyTorch → ONNX → TensorRT 엔진(.plan) 생성
 
trtexec --onnx=model.onnx --saveEngine=model.plan --fp16

TFLite (TensorFlow Lite)

모바일/엣지 디바이스 배포 최적화 모델

  • Weight Quantization (INT8) + Edge TPU 가속
  • Microcontroller(MCU)에서도 동작 가능한 Micro TFLite 지원
  • iOS/Android에서 바로 실행 가능 (NNAPI, Metal 지원)

변환 예시

 
import tensorflow as tf

converter = tf.lite.TFLiteConverter.from_saved_model("saved_model")
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_model = converter.convert()

with open("model.tflite", "wb") as f:
    f.write(tflite_model)

장점

1. 배포 호환성 극대화
2. 추론 속도 최적화 (커널 fusion, quantization, graph simplification)
3. 모바일·엣지 지원 (TFLite, CoreML)
4. FP16/INT8 가속 지원 (GPU inference 속도 ↑)


단점 & 주의점

변환 시 일부 연산자가 지원되지 않을 수 있음 → Custom Op 필요
Dynamic shape, Control Flow 등은 변환 난이도 ↑
TensorRT INT8은 Calibration 데이터 필요


실무 적용 팁

  • ONNX Opset 최신 버전 (≥17) 사용 → 호환성↑
  • 변환 전 torch.onnx.export 시 dynamic_axes 지정 → 다양한 배치 지원
  • TensorRT 엔진 프로파일 여러 개 생성 → 배치별 최적 성능
  • TFLite는 quantization-aware training(QAT)으로 정확도 보존

실제 효과

모델 변환 전 (FP32) TensorRT FP16 TensorRT INT8
ResNet-50 15 ms 8 ms 6 ms
BERT-base 22 ms 12 ms 9 ms

ONNX + TensorRT 최적화로 최대 2~3배 속도 향상 가능

 


결론

ONNX, TensorRT, TFLite는 모델 배포 필수 툴체인입니다.
한 번 학습한 모델을 여러 환경에 호환되게 배포하고,
하드웨어별 최적 성능을 자동으로 뽑아낼 수 있습니다.

 

 

 

다음 시리즈는 아래에 있습니다!

https://machineindeep.tistory.com/72

 

대규모 모델 학습·추론 최적화 시리즈 1편: Mixed Precision Training (AMP)

"학습 속도를 2배 이상 올리고, VRAM도 절약할 수 있다?"Mixed Precision Training은 FP16/BF16과 FP32를 적절히 섞어 쓰는 학습 기법입니다.Mixed Precision Training이란?기존 딥러닝 학습은 모든 연산을 FP32(32-bit fl

machineindeep.tistory.com

 

반응형