피드로 돌아가기
컬리 기술블로그DevOps
원문 읽기
Kurly만의 MLOps 구축하기 - 초석 다지기
Kurly가 Karpenter를 도입해 GPU 노드의 자동 Provisioning/Deprovisioning 구조로 MLOps 플랫폼 기초 구축
AI 요약
Context
Kurly의 ML 애플리케이션이 증가하면서 GPU 리소스 관리 부담이 가중되었다. 클라우드 환경에서 GPU 인스턴스 비용이 높아 엔지니어의 수동 요청 및 모니터링이 필수였고, 데이터 사이언티스트들이 자유롭게 사용하기 어려운 상황이었다. 또한 Jupyter, Airflow, MLFlow 등 기존 도구들이 독립적으로 운영되어 통합된 ML 환경이 부족했다.
Technical Solution
- Karpenter 도입: AWS가 개발한 오픈소스 프로젝트인 Karpenter를 사용해 Kubernetes Worker Node 자동 확장 기능 구현
- GPU 노드 자동 할당: JupyterHub Notebook 생성 시 GPU 옵션 설정 → GPU 서버 자동 할당
- 자동 해제 메커니즘: Notebook 종료 시 GPU 서버 자동 Deprovisioning 구조 설계
- 노드 격리 전략: Label, Node Selector, Node Affinity, Anti Node Affinity 활용해 GPU 노드와 일반 파드의 혼재 방지
- Consolidation 옵션 적용: Karpenter v0.15.0의 Consolidation 옵션으로 사용 중이지 않은 노드 자동 정리
Impact
아티클에 정량적 수치(성능 향상, 비용 절감, 레이턴시 감소 등)가 명시되지 않음.
Key Takeaway
Kubernetes 기반의 기존 인프라 위에 Karpenter를 통한 세밀한 노드 관리를 추가하면, 높은 비용의 GPU 리소스를 효율적으로 자동 관리할 수 있다. CRD 버전 불일치 같은 운영 이슈를 사전에 인지하고 대응하는 것이 중요하다.
실천 포인트
Kubernetes를 사용하는 ML 플랫폼 팀에서 GPU 자원 활용을 자동화하려면 Karpenter로 노드 라이프사이클을 관리하고, Label 기반 Pod 스케줄링 제약을 적용하면 엔지니어의 수동 개입 없이도 비용 효율적인 리소스 할당이 가능하다.