pulse.huny.dev
HunyDev
Unified Model Export Specification (ONNX / ORT / OpenVINO)

Unified Model Export Specification (ONNX / ORT / OpenVINO)

ONNX/ONNX Runtime(ORT) 최적화본, OpenVINO 캐시를 “무엇을, 언제, 어떻게” 내보낼지 정리

Hun Jang
Hun Jang Nov 30, 2025

모델 배포 아티팩트 전략을 한눈에 잡아주는 요약이다. ONNX/ONNX Runtime(ORT) 최적화본, OpenVINO 캐시를 “무엇을, 언제, 어떻게” 내보낼지 정리했다.

왜 이렇게 나누나?

  • ONNX: 표준·휴대용 “소스 진실” (canonical)
  • ORT .ort: 특정 ORT 버전/옵티마이저/플래그에 “묶인” 성능 최적화 산출물
  • OpenVINO 캐시: 특정 Intel CPU 마이크로아키텍처 + OpenVINO 버전 조합에 “묶인” 디바이스/런타임 캐시

배포 원칙 (CI에서 자동 생성·출판)

  1. 항상 두 개 이상을 함께 배포
  • model.onnx (canonical)
  • model.opt.ort (ORT optimizer 산출물)
    • (필요 시) model.openvino_cache/ (사전 빌드된 캐시 블롭)

  1. 머신이 읽을 수 있는 메타데이터 + 체크섬 동봉
  • artifacts.json (버전·플래그·타깃 등)
  • SHA256SUMS.txt (모든 파일의 SHA256)
  1. 보수적 무효화(Invalidation) 규칙
  • ORT: ORT runtime/optimizermajor/minor 변하거나, EP/옵티마이저 플래그/opt level 바뀌면 무효화
  • OpenVINO: OpenVINO(또는 Model Server) 버전, 타깃 디바이스 패밀리, CPU 마이크로아키텍처, 모델 shape/파라미터 바뀌면 무효화

메타데이터 스키마 예시 (권장)

CI 파이프라인 체크리스트

ONNX 내보내기: opset 고정, dynamic axes 명시

정적 검증: onnx.checker, shape infer, 모델 사이즈/노드 수 로그

ORT 최적화: optimizer/EP/opt-level/플래그를 명시적으로 핀(pin) 하고 .ort 생성

OpenVINO 캐시(선택): 대상 Intel x86 uarch(예: skylake, icelake, sapphirerapids) 별로 따로 빌드

메타데이터/체크섬 생성: artifacts.json, SHA256SUMS.txt

재현 로그: 변환 스크립트 커맨드라인, 라이브러리 버전, 환경 해시 기록

아티팩트 서명/업로드: 레지스트리 또는 릴리스 페이지에 업로드, CDN 캐시 헤더 설정

호환성 스모크 테스트: 각 아티팩트로 샘플 입력 → 동일 wave형태/latency 기준 통과

배포 폴더 구조(예시)

현업 팁

  • .ort는 “영원히 휴대용”이 아니다: ORT 버전·옵션에 강하게 종속 → 항상 원본 model.onnx를 함께 배포
  • OpenVINO 캐시는 제한적으로만: 내부 인프라의 마이크로아키텍처가 통제될 때만 제공. 다수 환경이면 캐시 미배포 + 최초 요청 시 생성도 선택지
  • 강제 무효화 키: invalidate_reason 필드를 artifacts.json에 남겨서 다운스트림이 자동 폐기·재다운로드 가능하게

You might also like

BlogPro logo
Made with BlogPro

Tags