gpustack
무엇인가
GPUStack은 여러 GPU 클러스터에 추론 엔진을 배치하고 모델을 서빙하는 관리 계층이다. 추론 엔진 자체가 아니라, 엔진을 고르고 GPU를 배분하는 스케줄러와 제어 평면에 해당한다. 온프레미스 서버, Kubernetes 클러스터, 클라우드 제공자에 흩어진 GPU를 하나의 서버에서 다룬다.
어떻게 동작하나
구성은 서버와 워커로 나뉜다. GPUStack 서버는 GPU 없이 CPU 노드에서 돌아가고, 워커는 GPU가 붙은 노드에서 Docker 컨테이너로 실행된다. 서버의 스케줄러가 GPU를 할당하고, 플러그 가능한 엔진 계층이 vLLM·SGLang·TensorRT-LLM 또는 사용자 정의 엔진을 자동 구성한다. 모델 파일은 워커가 내려받아 배포하고, 배포 상태는 UI의 Workers·Catalog 페이지에 나타난다. GPU 사용률과 토큰 사용량은 Prometheus와 Grafana 대시보드로 수집된다.
무엇과 다른가
노드마다 vLLM을 직접 설치해 파라미터를 맞추는 방식과 달리, 엔진 선택과 튜닝을 서버가 대신한다. 저지연·고처리량 프리셋을 고를 수 있고, LMCache·HiCache 같은 확장 KV 캐시로 TTFT를 줄인다. EAGLE3·MTP·N-gram 기반 추측 디코딩도 내장한다. Kubernetes 전용 오케스트레이터와 달리 Kubernetes 밖의 베어메탈·클라우드 노드도 같은 클러스터로 묶는다. 모델 서빙 외에 SSH로 접속하는 GPU 인스턴스를 요청 시 생성한다.
어떻게 쓰나
서버는 Docker로 설치하고 기동 로그에서 초기 admin 비밀번호를 읽는다. 브라우저로 서버 IP에 접속해 admin으로 로그인한 뒤 Clusters 페이지에서 클러스터를 추가한다. 제공자로 Docker를 고르면 UI가 워커 접속용 Docker 명령을 만들어 준다. 그 명령을 GPU 노드에서 실행하면 Workers 페이지에 노드가 나타난다. Catalog에서 모델을 골라 Save를 누르면 배포가 시작되고, Running 상태가 되면 Playground에서 대화하거나 Access Control의 API 키로 호출한다.
전제와 한계
워커 노드는 Linux만 지원한다. Windows는 WSL2를 쓰고 Docker Desktop은 피하며, macOS는 워커로 쓸 수 없다. 워커에는 NVIDIA 드라이버, Docker, NVIDIA Container Toolkit이 미리 설치되어 있어야 한다. NVIDIA 외에 AMD GPU, Ascend NPU, Hygon DCU, MThreads, Iluvatar, MetaX, Cambricon MLU, T-Head PPU를 가속기로 쓴다. 서버는 GPU가 없어도 되고 Docker Desktop에서도 돌아간다.
관련 논문 3
유사 도구
- dynamo추론 엔진 위에 올라가 여러 GPU와 노드를 하나의 서빙 시스템으로 묶는 Rust 기반 오케스트레이션 계층이다. KV 인식 라우팅과 분리형 서빙을 수행한다.
- HyperQwenvLLM을 패치해 24GB 소비자 GPU 한 장에서 대형 Qwen을 서빙하는 스택이다. 150k 컨텍스트와 OpenAI 호환 API를 단일 사용자·배치 두 모드로 내놓는다.
- qwen38-27b-rtx3090단일 RTX 3090 24GB에서 vLLM으로 Qwen3.8-27B를 서빙하는 패치·재양자화 스크립트·벤치 모음이다. 150k 컨텍스트 OpenAI 호환 API를 띄운다.
- harborDocker Compose로 Ollama·llama.cpp·vLLM 백엔드와 Open WebUI·SearXNG·ComfyUI를 한 명령에 묶어 띄우는 Python CLI다.
- prometheus-evalLLM 응답을 채점하도록 학습된 오픈소스 평가자 모델 Prometheus를 vLLM 또는 LiteLLM API로 호출해 지시문-응답 쌍에 점수를 매기는 Python 패키지다.
- markerPDF·이미지·오피스 문서를 마크다운·JSON·HTML로 변환하는 Python CLI다. 레이아웃 검출과 OCR을 로컬 VLM 서버로 처리하고 LLM으로 정확도를 보강한다.