본문으로 이동
Kurly만의 MLOps 구축하기 - 초석 다지기
문서

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도 함께 갱신됐는지 확인한다.