mosecorg/mosec
A high-performance ML model serving framework, offers dynamic batching and CPU/GPU pipelines to fully exploit your compute machine
What it solves
Mosec은 고성능 모델 서빙 프레임워크로, 학습된 머신러닝 모델과 효율적인 온라인 서비스 API 사이의 격차를 메우기 위해 설계되었습니다. 모델을 프로덕션 수준의 마이크로서비스로 전환하는 과정을 단순화하고, 클라우드 배포와 높은 처리량에 최적화합니다.
How it works
웹 레이어와 작업 조정은 Rust로 구현되어 비동기 I/O를 통한 빠른 속도와 효율적인 CPU 활용을 제공하고, 사용자 인터페이스는 Python으로 유지해 사용 편의성을 보장합니다. 사용자는 mosec.Worker를 상속한 Python 클래스를 정의하고 forward 메서드에 모델 로직을 구현합니다.
핵심 기술 메커니즘은 다음과 같습니다:
- Dynamic Batching: 여러 사용자의 개별 요청을 하나의 배치로 모아 추론 시 처리량을 높입니다.
- Pipelined Stages: CPU에서 전처리하고 GPU에서 추론하는 등 다단계 워크플로를 생성할 수 있으며, 각 단계는 별도 프로세스로 실행되어 하드웨어 활용도를 극대화합니다.
- Flexible Serialization: 기본적으로 JSON을 지원하고, 이미지나 임베딩을 보다 효율적으로 처리하기 위해 msgpack 같은 바이너리 포맷용 믹스인을 제공합니다.
Who it’s for
Kubernetes 또는 기타 컨테이너 오케스트레이션 시스템을 사용해 클라우드에서 확장 가능하고 고성능 API로 ML 모델을 배포해야 하는 ML 엔지니어 및 백엔드 개발자를 위한 것입니다.
Highlights
- Rust-powered core: blazing speed와 효율적인 리소스 관리.
- Framework-agnostic: 모든 ML 프레임워크(PyTorch, JAX 등)와 호환.
- Cloud-native: 내장 Prometheus 모니터링 메트릭, 모델 워밍업, 우아한 종료 지원.
- High throughput: dynamic batching 및 멀티프로세스 파이프라인을 통해 최적화.