AI-BT 2025. 4. 2. 11:00
728x90
반응형

 

OpenVIN (Open Visual Inference and Neural Network Optimization) 는 Intel에서 제공하는 딥러닝 모델 최적화 및 추론 가속화 도구입니다. 특히 인텔 CPU, GPU, VPU (예: Movidius) 등 다양한 Intel 하드웨어에서 최적의 성능을 끌어내기 위해 만들어졌습니다.


1. OpenVINO가 무엇인지

OpenVINO는 크게 3가지 역할이 있습니다.

  1. 모델 변환
    PyTorch, TensorFlow, ONNX 등에서 학습한 모델을 OpenVINO에서 사용할 수 있도록 IR (Intermediate Representation) 포맷으로 변환합니다.

  2. 모델 최적화
    • 정수 양자화 (INT8)
    • 레이어 병합, 연산 단순화
    • 레이턴시 최소화 및 메모리 절감
      이런 최적화를 통해 속도는 빠르게, 성능은 유지하는 구조로 변환합니다.
  3. 추론 엔진 제공 (Inference Engine):
    다양한 하드웨어 (CPU, GPU, MYRIAD 등)에 맞춰 자동으로 백엔드 선택 및 실행을 해줍니다.

2. 왜 OpenVINO가 필요한가?

1) PyTorch와 TensorFlow는 실무에 바로 쓰기엔 무겁다

PyTorch나 TensorFlow로 학습한 모델은 GPU 환경에서는 빠르지만, CPU나 임베디드 환경에서는 느리거나 무겁습니다. 특히 다음과 같은 문제들이 있습니다.

  • CPU에서는 GPU 대비 추론 속도가 확연히 느림
  • 모델이 너무 커서 모바일/엣지 디바이스에 올리기 어려움
  • 다양한 하드웨어를 위해 따로따로 모델을 최적화해야 함

 

그래서 OpenVINO가 등장합니다!

OpenVINO는 다음과 같은 상황에서 꼭 필요합니다.

상황 해결 방법 (OpenVINO)
💻 CPU에서도 빠르게 추론하고 싶다 CPU 최적화된 연산으로 빠른 속도 제공
📱 모바일, 로봇, CCTV 등에서 사용하고 싶다 모델 경량화 + 하드웨어 친화적인 추론
🛠 다양한 Intel 디바이스에 하나의 모델로 적용하고 싶다 IR 포맷 사용으로 호환성 극대화
⚡ 실시간 분석이 중요하다 (ex. 영상 스트리밍) 딜레이 없는 고속 추론 처리 가능

3. 어떻게 모델을 최적화할까? (OpenVINO 최적화 구조)

Step 1. 모델 변환 (Model Conversion)

OpenVINO는 다양한 프레임워크 모델을 Intermediate Representation(IR) 포맷으로 변환합니다.

# 예: ONNX 모델을 OpenVINO IR로 변환
mo --input_model model.onnx

변환 결과는 model.xml (구조)과 model.bin (가중치) 두 파일입니다.
이 포맷은 Intel 하드웨어에서 빠르게 실행될 수 있도록 설계되어 있습니다.

 

Step 2. 모델 최적화 (Optimization)

변환된 모델에 대해 다음과 같은 최적화를 적용합니다:

✔ 연산 구조 최적화

  • 불필요한 레이어 제거
  • 연산 병합 (예: Convolution + BatchNorm → 1개 연산으로 합침)
  • 불필요한 Precision 변환 제거

✔ 양자화 (Quantization)

  • FP32 → INT8 정수형 변환
  • 연산량 4배 감소, 메모리 사용량 대폭 절감
  • 성능 손실은 거의 없이 속도 최대 2~5배 향상 가능
# POT API 예시 (Post-training Optimization)
from openvino.tools.pot import IEEngine, load_model, save_model, compress_model_weights

 

✔ Precision 변환

  • FP32 → FP16: GPU에 적합
  • FP32 → INT8: CPU, VPU에 적합

 

Step 3. 하드웨어별 Inference Engine 컴파일

OpenVINO는 사용자가 어떤 디바이스에서 추론할 것인지 지정하면, 자동으로 최적화된 컴파일을 진행합니다.

from openvino.runtime import Core

core = Core()
model = core.read_model("model.xml")
compiled_model = core.compile_model(model, device_name="CPU")  # 또는 GPU, MYRIAD 등

 

 

하드웨어에 따라 메모리 배치, 연산 스케줄링 등을 자동 조정하여 속도를 최대화합니다.

 

OpenVINO는 경량화 + 성능향상의 핵심 솔루션

OpenVINO는 다음과 같은 경우 특히 유용하다.

  • 엣지 디바이스에서 실시간 딥러닝 모델을 써야 할 때
  • CPU 환경에서 빠르게 추론하고 싶을 때
  • 모델을 작게 줄이고 싶을 때
  • Intel 하드웨어를 적극 활용하고 싶을 때

4. OpenVINO vs TensorRT  뭐가 다를까?


항목 OpenVINO TensorRT
🏢 제공사 Intel NVIDIA
🎯 대상 하드웨어 Intel CPU, GPU, VPU (ex. Movidius) NVIDIA GPU (Jetson 포함)
📦 프레임워크 호환 ONNX, TensorFlow, PyTorch (via export) ONNX, TensorFlow, PyTorch (via export)
🔧 최적화 방식 INT8/FP16/FP32, 레이어 병합, 하드웨어별 자동 조정 INT8/FP16 최적화, 커널 튜닝, TensorFusion 등
🧠 런타임 엔진 Inference Engine (플랫폼 자동 선택) TensorRT Runtime (GPU 전용)
🧪 양자화 도구 POT (Post-training Optimization Tool) QAT/PTQ 모두 지원
📱 엣지 지원 ✅ Intel 엣지 디바이스 최적 ✅ Jetson 등 NVIDIA 엣지 기기 최적
🛠 설치 난이도 상대적으로 쉬움 (pip 설치 가능) 비교적 복잡함 (CUDA, cuDNN, TensorRT 설치 필
요)


1) 그럼 어떤 경우에 TensorRT를 쓸까?

TensorRT는 다음 조건에 해당하면 최고의 선택 이다.

  • NVIDIA GPU 기반 환경에서 서빙할 때 (예: 서버, Jetson)
  • FP16 또는 INT8로 연산 최적화를 하고 싶을 때
  • 성능이 중요하고 GPU에서 극한의 최적화가 필요할 때

예시

  • 자율주행 차량 (Jetson Xavier에서 실시간 추론)
  • 서버 기반 AI 서비스에서 RTX GPU로 서빙

 

2) 어떤 경우에 OpenVINO를 쓸까?

OpenVINO는 다음 조건에 맞는 경우 더 적합합니다:

  • *ntel 기반의 환경(CPU, 내장 GPU, VPU)**에서 동작시켜야 할 때
  • 엣지 디바이스나 CPU-only 환경에서 경량화된 모델이 필요할 때
  • Intel 하드웨어를 사용하는 산업/로봇/영상 분석 시스템

예시

  • CCTV 영상 분석 (Intel NUC 사용)
  • 산업용 검사 장비 (Movidius 칩)
  • 의료 AI 디바이스에서 실시간 판독

 

실무에서 비교 

  • 클라우드 GPU 서버에서 서빙: TensorRT 추천
  • 모바일, 산업용, 인텔 CPU 기반 PC에서 서빙: OpenVINO 추천
  • 엣지 AI 카메라 (Intel 기반): OpenVINO
  • Jetson Nano, Xavier 같은 NVIDIA 엣지 디바이스: TensorRT

 

다음은 허깅페이스에서 모델을 가져와서 openvino 를 활용하여 최적화를 진행해보겠습니다.

감사합니다.

728x90
반응형