콘텐츠로 이동
Study NoteGPUStack

0. GPUStack의 자리

문제는 GPU가 여러 개 있다는 사실이 아니라 여러 곳의 실행 상태를 사람이 기억해야 한다는 것이다

이 장에서 처음 나오는 말4개
관리 평면Control plane
원하는 상태를 받아 실제 상태를 맞추는 중앙 부분. GPUStack Server와 scheduler가 여기에 속한다.
workerWorker node
모델 컨테이너가 실제로 실행되는 노드. 이 덱에서는 DGX Spark 한 대가 worker 하나다.
deploymentModel deployment
어떤 모델을 어떤 backend·설정·replica 수로 계속 실행할지 적은 원하는 상태다.
replicaReplica
같은 모델을 독립적으로 실행하는 복제본. 다른 replica가 살아 있으면 한 노드 장애에도 요청을 계속 받을 수 있다.

Spark가 한두 대일 때는 SSH와 docker run으로 충분하다. 대수가 늘면 같은 방식이 다음 질문에 답하지 못한다.

질문수동 Docker만 쓸 때GPUStack이 맡을 자리
모델 A는 지금 어디에 떠 있나사람의 메모·문서deployment와 instance 목록
노드가 죽었다 살아나면운영자가 재실행원하는 replica 수에 맞춰 재생성
같은 모델 두 개로 트래픽을 어떻게 나누나별도 proxy 설정model route와 gateway
새 모델이 어느 GPU에 들어가나접속해서 메모리 확인scheduler·selector·수동 GPU 선택
로그와 GPU 상태는 어디서 보나노드마다 접속중앙 로그 진입점과 metrics exporter
FastAPI 자체 모델은 어떻게 올리나별도 배포 스크립트custom backend + Generic Proxy

GPUStack의 가치는 vLLM을 실행하는 명령 자체보다 배포 상태를 데이터로 만들고 계속 맞추는 것에 있다.

잘 맞는다

여러 Linux GPU 노드에 모델 서버를 배치한다.

vLLM·SGLang 같은 표준 backend를 주로 쓴다.

FastAPI 모델이 컨테이너 하나와 health endpoint로 닫힌다.

모델 단위 replica·route·재시작·관측이 필요하다.

Kubernetes 운영팀 없이 빠르게 시작해야 한다.

경계가 온다

학습 job의 queue·fair-share가 핵심이다.

서비스 하나가 DB·queue·sidecar·CronJob을 함께 요구한다.

복잡한 secret·network policy·GitOps·canary가 플랫폼 공통 요구다.

FastAPI 자체 backend가 여러 노드를 함께 써야 한다.

이 경우 Slurm 또는 Kubernetes/KServe의 문제에 가까워진다.

이 덱이 가정하는 워크로드는 세 갈래다.

워크로드기본 실행 단위권장 backend이용자 입구
LLMSpark 1대, 예외적으로 2대 pairGPUStack 내장 vLLMLiteLLM
embeddingSpark 1대우선 vLLM, 필요 시 FastAPI customOpenAI 호환이면 LiteLLM
classificationSpark 1대FastAPI customGPUStack Generic Proxy 또는 사내 API Gateway

이 조합은 GPUStack의 중심 범위와 정확히 겹친다. Kubernetes가 더 많은 것을 할 수 있다는 사실은 선택 이유가 아니다. 이 구성에서 필요한 배포 단위가 모델 서버 컨테이너 하나이므로 그 단위를 직접 아는 GPUStack이 더 작은 운영 비용으로 문제를 푼다.

도입 성공을 “UI에서 모델이 떴다”로 잡으면 안 된다. PoC는 다음 질문에 답해야 한다.

  • worker 한 대를 재부팅했을 때 서비스가 언제 복구되는가
  • 같은 모델 replica 둘 중 하나를 죽여도 기존 endpoint가 계속 응답하는가
  • vLLM streaming과 LiteLLM timeout·retry가 함께 정상인가
  • FastAPI /health 실패를 GPUStack이 감지하고 재시작하는가
  • ARM64·GB10용 image를 digest로 고정해 다른 Spark에서도 같은 결과가 나는가
  • 한 대와 두 대 pair의 처리량·첫 토큰 시간·장애 복구 차이가 측정됐는가