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를 활용해 배포.

시작하기 (빠른 시작)

  1. Docker 이미지 가져오기
    docker pull openvino/model_server:latest   # CPU 전용
    # 또는
    docker pull openvino/model_server:latest-gpu   # CPU + Intel GPU/NPU
    
  2. 모델 실행 – 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
    
  3. 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="")
    
  4. 전통적 모델 예제 – KServe gRPC를 통해 ResNet-50 IR 모델 제공:
    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
    
    이후 README에 표시된 Triton 클라이언트를 사용해 이미지를 전송하고 상위 1개 클래스를 확인합니다.

생태계 및 통합

  • 클라이언트 라이브러리 – 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