Kurly만의 MLOps 구축하기 - 초석 다지기
이상협 · 컬리 · 컬리 기술 블로그
소개
GPU사용환경 만들기
AI 핵심 요약
컬리는 ML 업무가 늘면서 GPU를 요청·관리하는 엔지니어의 부담과 클라우드 비용을 줄이고, JupyterHub·Airflow·MLflow를 더 쉽게 연결할 MLOps 환경이 필요했다. 기존 Kubernetes 기반 도구를 활용해 노트북에서 GPU를 요청하면 노드를 만들고 사용이 끝나면 회수하는 구조를 목표로 삼았으며, 노드 수명주기를 직접 관리하는 Karpenter를 선택했다. Provisioner로 GPU 노드의 조건과 자원 한도를 정하고, NVIDIA device plugin으로 GPU를 사용할 수 있게 했으며, label과 affinity 설정으로 무관한 파드가 GPU 노드에 남는 문제를 다뤘다. 또한 Consolidation 설정 오류의 원인이 구버전 CRD일 수 있음을 확인했으며, 이 작업을 Kurly 맞춤형 MLOps 플랫폼의 기반으로 삼았다.
- GPU 노드를 자동으로 만들고 회수하려면 노트북 종료뿐 아니라 해당 노드에 남아 있는 다른 파드도 고려해야 한다.
- Provisioner의 requirements와 limits로 허용할 인스턴스 유형, GPU 조건, 클러스터 자원 상한을 정의할 수 있다.
- GPU 노드가 준비된 뒤에는 NVIDIA device plugin이 설치되어야 쿠버네티스 파드에서 GPU를 사용할 수 있다.
- GPU를 쓰지 않는 파드가 GPU 노드에 배치되지 않도록 label과 Node Affinity 또는 Anti-Affinity를 활용한다.
- Karpenter 설정 필드가 인식되지 않는다면 컨트롤러 버전뿐 아니라 관련 CRD도 함께 갱신됐는지 확인한다.
비슷한 학습 자료
카카오뱅크의 MLOps / if(kakao)2022
if kakao · YouTube
[팀네이버 컨퍼런스 DAN25] MLXP: GPU 효율화를 선도하는 대규모 MLOps 플랫폼
DAN 2025 · YouTube
ARC로 확장가능한 GPU 서비스 개발 인프라 구축하기
엔지니어링데이 2025 · YouTube
GPU를 밀도 있게 쓰는 방법 - 토스증권의 GPU 가상화(MIG) 도입기
김진웅 · 토스 기술 블로그
AWS MLOps 분산학습 워크숍 방문기
김왕수 · 컬리 기술 블로그
Kurly만의 MLOps 구축하기 - 쿠브플로우 도입기
구국원 · 컬리 기술 블로그