[MLOps] MLOps를 위한 올바른 도구 찾기

MLOps 파이프라인 구축에 필요한 핵심 도구 모음입니다. 모델 배포부터 관리까지 전 과정을 자동화하여 운영 효율성과 재현성을 높일 수 있습니다.

[MLOps] MLOps를 위한 올바른 도구 찾기
Photo by Fleur / Unsplash

개요

Notion Image

MLOps 파이프라인을 구축하는데 필요한 도구들을 정리하였습니다.

모델의 배포, 관리, 확장을 간소화하는 동시에 프로덕션에서 자동화와 효율성을 보장합니다.

버전 관리 및 협업

  • Git: 코드의 변경 이력을 관리하고 여러 사람이 함께 작업할 수 있도록 돕는 필수 도구입니다.
  • DVC (Data Version Control): 코드뿐만 아니라 대용량의 데이터셋, 모델, 실험 결과 등의 버전까지 Git과 연동하여 관리할 수 있게 해줍니다. 이를 통해 전체 워크플로우의 재현성을 높입니다.

CI/CD (지속적 통합/지속적 배포)

  • CI (Continuous Integration) 도구: 코드 변경 사항을 자동으로 빌드하고 테스트하여 통합하는 도구들입니다.
    • Jenkins, GitLab CI/CD, CircleCI
  • CD (Continuous Deployment) 도구: CI를 통과한 코드를 실제 운영 환경까지 자동으로 배포하는 도구들입니다.
    • Kubeflow: 쿠버네티스(Kubernetes) 기반의 머신러닝 전용 배포 플랫폼으로, 전체 파이프라인 자동화에 강점이 있습니다.
    • Terraform: 인프라 구성을 코드로 관리하여 자동화합니다.
    • ArgoCD: 쿠버네티스 환경을 위한 GitOps 방식의 배포 도구입니다.

실험 추적 및 관리

  • MLflow: 머신러닝 프로젝트의 실험, 재현, 배포 등 전체 라이프사이클을 관리하는 올인원 플랫폼입니다.
  • Neptune.ai: 머신러닝 실험을 추적하고 시각적으로 비교, 분석하는 데 특화된 도구입니다.

자동화된 테스트 및 검증

  • Pytest: 파이썬 코드의 품질과 정확성을 검증하기 위한 테스트 프레임워크입니다.
  • Great Expectations: 데이터의 품질을 검증하고 문서화하는 데 사용되는 도구입니다.

컨테이너화 및 오케스트레이션

  • Docker: 애플리케이션을 실행 환경과 함께 패키징(컨테이너화)하여 어디서든 동일하게 실행될 수 있도록 합니다.
  • Kubernetes: 다수의 도커 컨테이너를 효율적으로 관리하고 자동화하는 시스템입니다.

모니터링 및 로깅

  • Prometheus: 시스템 및 애플리케이션의 상태 지표(메트릭)를 수집하고 모니터링하며, 이상 발생 시 알림을 보냅니다.
  • Grafana: Prometheus 등으로 수집한 데이터를 시각적으로 표현하여 대시보드를 만듭니다.
  • ELK Stack (Elasticsearch, Logstash, Kibana): 시스템 로그를 수집, 분석, 시각화하는 데 사용되는 통합 솔루션입니다.

보안 및 규정 준수

  • HashiCorp Vault: API 키, 비밀번호 등 민감한 정보를 안전하게 저장하고 접근을 제어합니다.
  • SonarCloud: 코드의 버그, 취약점, 코드 스멜 등을 자동으로 검사하여 코드 품질을 관리합니다.

워크플로우 오케스트레이션

  • Airflow: 데이터 수집, 모델 훈련, 배포 등 복잡한 머신러닝 파이프라인 작업을 순서에 맞게 자동화하고 스케줄링합니다.

하이퍼파라미터 튜닝 및 최적화

  • Optuna / Hyperopt: 머신러닝 모델의 최적 성능을 내는 하이퍼파라미터 조합을 효율적으로 찾아주는 도구입니다.