프로덕션에서의 Voice AI: RunPod에서 Hosted Kubernetes까지
Source: Dev.to
The Gap Between Demo and Production
데모에서는 음성 모델이 정상적으로 동작하지만, 동일한 모델을 프로덕션에서 동시 부하 하에 실행하면 멈춥니다. 모델 파일과 GPU는 동일하고, 배포 방식만 바뀐 것입니다.
만약 TTS 서비스가 단일 RunPod pod에서 실행된다면 이미 한계에 부딪힌 것입니다:
- 한 번에 GPU당 하나의 요청만 처리합니다.
- 크래시가 발생하면 모델을 다시 로드하는 데 약 90 초가 걸립니다.
- 장애 조치가 없습니다.
- 마케팅에서는 “즉시 내레이션”을 약속하지만, 인프라에서는 순차적인 대기열을 강요합니다.
프로토타입과 제품 사이의 실제 차이는 인프라 레이어에 있습니다. 많은 음성‑AI 팀이 호스팅된 Kubernetes를 요구하는 이유는 모델 개발 대신 pod 관리에 엔지니어링 시간을 낭비하고 있기 때문입니다.
Why a Single Pod Is Not Enough
GPU Capacity Limits
- Qwen3‑TTS 같은 모델은 GPU 메모리에 한 번만 로드됩니다.
- 각 추론마다 작업 버퍼가 추가됩니다.
- H100에서는 모델과 약 4–8개의 동시 생성 작업을 수행할 수 있지만, 그 이상이면 지연 시간이 급증합니다.
- 4090에서는 이 수치가 더 낮습니다.
이 한계가 pod당 최대 비즈니스 용량을 정의합니다. 더 큰 GPU를 구매하면 도움이 되지만, 동일한 pod에 두 번째 GPU를 연결할 수는 없습니다. 하나 이상의 머신이 필요해지면 분산 시스템 영역으로 들어가게 됩니다.
Cold Starts
pod가 죽으면 모델을 VRAM에 다시 로드해야 하는데, 이 과정에 약 90 초가 걸립니다. 그 사이 사용자는 502 오류를 보게 됩니다. Kubernetes의 워밍 풀(pod)로 손실을 흡수할 수 있습니다.
Voice Profile Storage
- 단일 pod에서는 사용자의 클론된 음성이 로컬 디스크에 저장됩니다.
- 여러 pod로 확장하려면 공유 스토리지와 각 노드에 복제본을 배포해야 합니다.
- 복제본이 없으면 잘못된 음성이나 오류가 발생합니다.
Cost and Preemptible GPUs
- 프리엠티블(preemptible) GPU는 일반 GPU 비용의 약 ⅓ 수준입니다.
- 클라우드 제공자는 2분 전 통보만으로 GPU를 회수할 수 있어 pod가 갑자기 중단됩니다.
- 워밍 레플리카가 있는 K8s 클러스터는 트래픽을 다른 노드로 라우팅해 사용자에게는 회수 사실을 숨길 수 있습니다.
Fine‑Tuning and Custom Voices
맞춤 음성 생성을 제공하면 추론을 방해하지 않는 훈련 작업이 필요합니다:
- 훈련 전용 큐와 GPU 풀을 별도로 운영합니다.
- 실시간 추론과 충돌하지 않도록 우선순위 규칙을 적용합니다.
- 단일 pod은 이러한 워크로드를 다중화할 수 없으며, 나중에 레트로핏하는 비용은 처음부터 설계하는 것보다 훨씬 비쌉니다.
Practical Kubernetes Strategies
Warm Model Caching
모델 가중치를 pod 내부가 아니라 노드에 저장합니다. 해당 노드에 스케줄된 새 pod는 10 초 이하에 시작할 수 있는 워밍 캐시를 상속받습니다(90초가 아니라).
Heterogeneous Node Pools
- 실시간 저지연 요청은 4090 노드 풀에서 실행합니다.
- 프리미엄 배치 생성 작업은 H100 노드 풀로 라우팅합니다.
- 노드 풀 라벨과 테인트를 사용해 라우팅하고, 애플리케이션 코드는 이를 알 필요가 없습니다.
Autoscaling Signal
- 대기열 깊이(대기 중인 요청 수)는 신뢰할 수 있는 자동 스케일링 지표입니다.
- CPU 메트릭은 쓸모없으며, GPU 활용도는 모델이 스트리밍될 때 오해를 일으킬 수 있습니다.
- 사용자에게 직접 보이는 지연 시간과 바로 연결되는 대기 요청 수를 기준으로 스케일링합니다.
User‑Facing Queue Feedback
대기열 위치와 예상 대기 시간을 호출자에게 표시합니다. 예: “현재 4번째이며, 약 40초 정도 소요됩니다.”
30초 동안 아무 응답도 없으면 서비스가 고장난 것으로 인식됩니다.
Call to Action
음성‑AI 제품이 데모 단계를 넘어 실제 트래픽에서 문제를 일으키고 있다면, 저는 Kubernetes 레이어를 담당해 팀이 모델 개발에 집중할 수 있도록 도와드릴 수 있습니다.
Contact via the blog for assistance.
Originally published at renezander.com.