openvinotoolkit/model_server
A scalable inference server for models optimized with OpenVINO™
OpenVINO™ Model Server (OVMS)
무엇인가요 – 표준 네트워크 API를 통해 기계학습 모델(LLM, 비전-언어 모델, 전통적인 비전/분류 모델 등)을 노출할 수 있는 프로덕션 수준의 C++ 추론 서버입니다. OpenVINO 툴킷 기반으로, Intel CPU, GPU, NPU에 최적화되어 있습니다.
왜 중요한가요 – 생성형 AI 워크로드(텍스트 생성, 임베딩, 이미지 생성, 음성 처리)와 전통적인 딥러닝 추론을 OpenAI 호환 REST API 또는 KServe gRPC API 뒤에서 하드웨어 가속과 함께 실행할 수 있으며, 지속적 배치, 스트리밍, 모델 버전 관리, 핫 리로드 등의 기능을 제공합니다.
핵심 기능
| 카테고리 | 주요 기능 |
|---|---|
| 생성형 AI | 채팅/완성, 임베딩, 이미지 생성, 오디오(ASR/TTS)용 OpenAI 호환 엔드포인트. 지속적 배치, 사전 추론, 구조화된 출력, GGUF 모델 포맷 지원. |
| 전통적 추론 | 분류, 탐지, OCR 등에 적합한 KServe 호환 gRPC/REST. TensorFlow, ONNX, PaddlePaddle, OpenVINO IR, MediaPipe 그래프, Python 실행 노드, 동적 형태 처리. |
| 배포 | Docker 이미지(CPU 전용, CPU+GPU/NPU), Linux/Windows용 바이너리, Kubernetes/OpenShift용 Helm 차트. 모델 리포지토리는 로컬, S3, GCS, Azure Blob, HuggingFace Hub에서 선택 가능. |
| 관리 | 모델 버전 관리, 핫 리로드, Prometheus 메트릭, gRPC 스트리밍, 네이티브 앱에 서버를 통합하기 위한 C API. |
| 하드웨어 가속 | OpenVINO를 통해 Intel Xeon CPU, 통합/디스크리트 GPU, Intel NPU에 최적화. |
일반적인 사용 사례
- 로컬 LLM 서비스 (예: Qwen3-4B-int4)를 OpenAI 호환 엔드포인트 뒤에 배포하여 챗 애플리케이션, RAG 파이프라인, 내부 도구에 활용.
- 전통적 비전 모델 (ResNet-50, YOLO, OCR)을 KServe gRPC를 통해 하류 서비스에 노출하여 마이크로서비스 아키텍처에서 확장 가능한 추론을 구현.
- 텍스트, 이미지, 오디오 모델을 결합한 멀티모달 에이전트를 "AI Agents with MCP servers" 데모를 사용해 실행.
- 클라우드 기반 API를 원하지 않는 에지 또는 온프레미스 서버에서 Intel CPU/GPU를 활용해 배포.
시작하기 (빠른 시작)
- Docker 이미지 가져오기
docker pull openvino/model_server:latest # CPU 전용 # 또는 docker pull openvino/model_server:latest-gpu # CPU + Intel GPU/NPU - 모델 실행 – Linux에서 HuggingFace LLM(Qwen3-4B-int4) 예제:
mkdir -p $HOME/models docker run --rm -p 8000:8000 \ --user $(id -u):$(id -g) -v $HOME/models:/models:rw \ openvino/model_server:latest \ --source_model OpenVINO/Qwen3-4B-int4-ov \ --model_repository_path /models \ --rest_port 8000 - API 호출 (Python, OpenAI 클라이언트):
from openai import OpenAI client = OpenAI(base_url="http://localhost:8000/v1", api_key="unused") stream = client.chat.completions.create( model="OpenVINO/Qwen3-4B-int4-ov", messages=[{"role": "user", "content": "파리의 주요 관광지 3곳은 무엇인가요?"}], stream=True) for chunk in stream: if chunk.choices[0].delta.content: print(chunk.choices[0].delta.content, end="") - 전통적 모델 예제 – KServe gRPC를 통해 ResNet-50 IR 모델 제공:
이후 README에 표시된 Triton 클라이언트를 사용해 이미지를 전송하고 상위 1개 클래스를 확인합니다.docker run --rm -d -u $(id -u) -v $(pwd):/models -p 9000:9000 \ openvino/model_server:latest \ --model_name resnet --model_path /models/resnet50.xml \ --mean "[123.675,116.28,103.53]" --scale "[58.395,57.12,57.375]" \ --layout "NHWC:NCHW" --port 9000
생태계 및 통합
- 클라이언트 라이브러리 – HTTP/REST 클라이언트는 모두 작동; 공식 예제는 OpenAI Python SDK와 Triton gRPC 클라이언트 사용.
- 모델 포맷 – TensorFlow, ONNX, PaddlePaddle, OpenVINO IR, MediaPipe, GGUF.
- 관측성 – Prometheus 호환 메트릭 엔드포인트; 로그는 표준 Docker/Kubernetes 규칙을 따릅니다.
- 확장성 – 서버를 통합하기 위한 C API, 사용자 정의 전/후처리를 위한 Python 실행 노드, MediaPipe 그래프를 통한 사용자 정의 파이프라인 지원.
라이선스 및 기여
- 라이선스: Apache 2.0 (README의 배지 참조).
- 기여: GitHub에서 PR 및 이슈를 환영합니다; 보안 정책 제공.
결론: OpenVINO Model Server는 Intel 최적화 하드웨어와 현대 AI 워크로드(대규모 언어 모델부터 전통적 비전 파이프라인까지) 사이의 격차를 메우는 실제 운영 가능한 추론 서빙 플랫폼입니다. OpenAI 및 KServe API를 제공하여 쉽게 통합할 수 있습니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- Dispatch