OpenVINO 추론 파이프라인
OpenVINO 추론 파이프라인
OpenVINO로 추론을 실행하는 기본 흐름은 크게 세 단계예요. 코어 생성 → 모델 컴파일 → 추론 요청. 이 순서를 이해하면 어떤 디바이스에서도 같은 방식으로 모델을 돌릴 수 있어요.
OpenVINO Runtime은 C++ 라이브러리 집합에 C·Python 바인딩을 붙인 형태예요. 각 디바이스는 플러그인 아키텍처로 통합돼 있고, 공통 API와 디바이스별 추가 설정 API를 함께 제공해요. start에 OpenVINO Runtime을 설치하고 환경변수를 잡아야 find_package가 OpenVINO_DIR을 찾을 수 있어요.
Step 1. 코어 생성. 가장 먼저 런타임 코어를 만들어요.
import openvino as ov
core = ov.Core()
#include <openvino/openvino.hpp>
ov::Core core;
#include <openvino/c/openvino.h>
ov_core_t *core = NULL;
ov_core_create(&core);
Step 2. 모델 컴파일. 모델을 컴파일된 모델(CompiledModel)로 만들면 디바이스별로 최적화돼요. 예를 들어 파이썬에서 옵셋 8 파라미터로 간단한 모델을 만들어 AUTO 디바이스에 컴파일할 수 있어요.
import openvino as ov
data = ov.opset8.parameter([3, 1, 2], ov.Type.f32)
res = ov.opset8.result(data)
model = ov.Model([res], [data], "model")
compiled_model = core.compile_model(model, "AUTO")
ov::CompiledModel 클래스는 컴파일된 모델을 나타내고, 텐서 이름이나 인덱스로 입력·출력 포트 정보를 얻을 수 있어요.
Step 3. 추론 요청 생성. 마지막으로 InferRequest를 만들어 추론을 실행하고 출력 텐서 버퍼를 읽어요. 이 세 단계 흐름을 숙지하면 OpenVINO IR 포맷 모델이든, 아니면 다른 프레임워크 백엔드(torch.compile)로 통합하든 동일한 패턴으로 배포할 수 있어요.