MLflow 및 Kubeflow와 같은 오픈 소스 도구부터 엔드투엔드 MLOps 플랫폼까지 최고의 MLOps 프레임워크를 살펴보세요. 팀에 적합한 솔루션을 선택하는 방법을 알아보세요.
작성자: Databricks 직원
노트북에서 머신러닝 모델의 성능을 잘 나오게 하는 것은 절반의 성공일 뿐입니다. 대부분의 팀이 어려움을 겪는 부분은 해당 모델을 안정적이고 확장 가능한 프로덕션 환경으로 옮기고 시간이 지나도 계속 성능을 유지하는 것입니다. 실험과 안정적인 배포 사이의 이러한 격차를 해소하기 위해 MLOps 프레임워크가 설계되었습니다.
MLOps(머신러닝 운영)는 자동화, 버전 관리, 지속적 배포와 같은 MLOps 원칙을 전체 머신러닝 라이프사이클에 적용 하는 분야로 부상했습니다. 올바른 프레임워크는 개발 단계에 머무르는 모델과 대규모로 실제 비즈니스 가치를 창출하는 모델 간의 차이를 만들 수 있습니다. 하지만 경량 오픈소스 도구부터 기능이 풍부한 엔터프라이즈 MLOps 플랫폼까지 수십 가지 옵션이 available하므로, 적합한 것을 선택하려면 스택의 각 계층이 실제로 무엇을 하는지 명확하게 이해해야 합니다.
이 가이드에서는 가장 널리 채택된 MLOps 프레임워크, 핵심 구성 요소 및 팀의 특정 요구 사항에 맞춰 평가하는 방법을 자세히 설명합니다. 첫 프로덕션 파이프라인을 구축하는 스타트업이든 여러 클라우드에 걸쳐 수백 개의 ML 모델을 관리하는 대기업이든, 상황에 맞는 프레임워크 아키텍처가 있습니다.
머신러닝 운영의 과제는 단순한 DevOps 자동화를 넘어섭니다. ML 워크플로우는 동적 데이터셋, 비결정적 학습 실행, 복잡한 모델 버전 관리 요구 사항, 배포 후 지속적인 모델 모니터링의 필요성을 포함합니다. 전통적인 소프트웨어 엔지니어링 관행은 필수적이지만 그 자체만으로는 충분하지 않습니다.
구조화된 도구 없이 일반적인 머신러닝 프로젝트를 생각해 보세요. 데이터 과학자들은 수십 번의 실험을 격리된 상태로 실행하며, 파라미터를 수동으로 기록하거나 전혀 기록하지 않습니다. 모델 학습은 로컬 머신과 공유 드라이브에 흩어진 아티팩트를 생성합니다. 배포 시점이 되면 재현성이 없습니다. 즉, 어떤 데이터셋 버전, 하이퍼파라미터 구성 또는 코드 커밋이 프로덕션으로 가는 모델을 생성했는지에 대한 명확한 기록이 없습니다. 배포 후에는 데이터 분포가 변경되어 모델 성능 이 조용히 저하되며, 이를 감지할 모니터링이 없습니다.
MLOps 프레임워크는 실험 추적, 모델 버전 관리 및 모델 레지스트리, ML 파이프라인 및 워크플로우 오케스트레이션, 모델 배포 및 모델 서빙, 그리고 관찰 가능성을 갖춘 모델 모니터링이라는 머신러닝 라이프사이클의 다섯 가지 핵심 영역에 일관성을 가져옴으로써 이 문제를 해결합니다. 최고의 MLOps 플랫폼은 이 다섯 가지를 통합된 방식으로 처리하며, 전문화된 오픈소스 도구는 종종 하나 또는 두 가지 영역에서 뛰어납니다.
특정 도구를 비교하기 전에 완전한 MLOps 워크플로우가 지원해야 하는 기능들을 이해하는 것이 좋습니다.
실험 추적은 기반입니다. ML 엔지니어와 데이터 과학자는 알고리즘, 하이퍼파라미터 튜닝 구성 및 특성 엔지니어링 접근 방식을 다양하게 하여 수백 번의 학습 반복을 실행합니다. 각 실행과 연결된 메트릭, 파라미터 및 코드 버전의 체계적인 추적 없이는 재현 가능한 결과를 얻을 수 없습니다. 실험 추적 도구는 모든 학습 실행에 대한 검색 가능한 감사 추적을 생성하여 팀이 반복 간 모델 성능을 비교하고 최상의 버전을 자신 있게 홍보할 수 있도록 합니다.
모델 버전 관리 및 모델 레지스트리는 코드뿐만 아니라 모델 자체에 대한 버전 관리를 확장합니다. 모델 레지스트리는 학습된 ML 모델이 카탈로그화되고, 버전이 지정되며, 스테이징 및 검증부터 프로덕션 및 보관까지 라이프사이클 단계를 거치는 중앙 저장소 역할을 합니다. 이를 통해 팀은 며칠이 아닌 몇 분 안에 성능이 저하된 모델을 이전 버전으로 롤백할 수 있습니다.
워크플로우 오케스트레이션은 데이터 수집 및 전처리부터 모델 학습, 검증, 배포에 이르기까지 다단계 ML 파이프라인의 자동화를 처리합니다. 오케스트레이션 도구는 이러한 단계를 예약하고 조정하며, 종속성을 관리하고, 오류를 우아하게 처리하며, 파이프라인 상태에 대한 가시성을 제공합니다. 오케스트레이션 없이는 MLOps 파이프라인이 안정적으로 실행되기 위해 상당한 수동 개입이 필요합니다.
피처 스토어는 MLOps에서 가장 과소평가된 문제점 중 하나인 학습 및 서빙 간의 피처 일관성을 해결합니다. 피처 스토어는 ML 피처의 계산 및 저장을 중앙 집중화하여 학습 데이터셋을 생성하는 데 사용된 것과 동일한 변환이 추론 시 일관되게 적용되도록 하여 학습-서빙 편향을 제거합니다.
모델 서빙 및 배포는 ML 모델이 패키징되고, API로 노출되며, 프로덕션 환경에 배포되는 방법을 다룹니다. 여기에는 낮은 지연 시간 추론을 위한 실시간 서빙과 배치 추론 워크로드가 포함되며, 확장 동작, A/B 테스트 및 카나리 배포도 포함됩니다. 실시간 추론은 지연 시간이 중요한 사기 탐지, 개인화 및 추천 시스템과 같은 프로덕션 사용 사례에 특히 중요합니다.
모델 모니터링 및 관찰 가능성은 배포 후 모델 성능, 데이터 드리프트, 예측 분포 및 다운스트림 비즈니스 메트릭을 지속적으로 추적하여 루프를 닫습니다. 모델 모니터링 없이는 팀이 비즈니스 결과에 이미 영향을 받은 후에야 모델 성능 저하를 발견하는 경우가 많습니다.
MLflow는 현재 프로덕션 환경에서 가장 널리 채택된 오픈소스 MLOps 프레임워크라고 할 수 있습니다. 원래 Databricks에서 개발되어 나중에 Linux Foundation에 기증된 MLflow는 특정 인프라 스택에 팀을 종속시키지 않고 핵심 MLOps 라이프사이클을 처리하는 모듈식 구성 요소를 제공합니다.
핵심적으로 MLflow는 네 가지 기본 모듈로 구성됩니다. MLflow Tracking은 학습 실행의 파라미터, 메트릭 및 아티팩트를 로깅하기 위한 API 및 UI를 제공하여 데이터 과학자가 최소한의 변경으로 기존 Python 코드에 계측하는 것을 쉽게 만듭니다. MLflow 추적은 백엔드 저장소(로컬 파일 시스템, 클라우드 객체 스토어 또는 관리형 데이터베이스)에 실행 기록을 저장하고 대화형 시각화 대시보드를 통해 이를 노출합니다.
MLflow Model Registry는 스테이징 및 프로덕션 라이프사이클 단계, 협업 검토 워크플로우 및 모델 버전 관리를 갖춘 중앙 집중식 모델 저장소를 제공하여 이를 확장합니다. 팀은 학습된 모델을 등록하고, 검증 단계를 거쳐 프로덕션에 배포할 수 있으며, 각 전환을 승인한 사람에 대한 전체 감사 추적을 제공합니다.
MLflow Models는 TensorFlow, PyTorch, scikit-learn 또는 다른 라이브러리 등 기본 ML 프레임워크를 추상화하는 표준 모델 패키징 형식을 도입합니다. 이 패키징 형식은 REST API 엔드포인트, Kubernetes 기반 서비스 및 배치 추론 작업을 포함한 광범위한 배포 대상에서 모델 서빙을 가능하게 합니다.
MLflow Projects는 재현 가능한 ML 학습 코드를 패키징하기 위한 사양으로 프레임워크를 완성하여, 팀이 Python, Docker 컨테이너 또는 Conda를 사용하여 서로 다른 컴퓨팅 환경에서 동일한 학습 워크플로우를 일관되게 실행할 수 있도록 합니다.
자체 관리형 오픈소스 이상의 기능을 원하는 팀을 위해 관리형 MLflow는 Databricks 데이터 인텔리전스 플랫폼 내에서 네이티브로 제공되며, 세분화된 액세스 제어, 노트북 실행에 대한 자동 실험 추적, 통합 거버넌스와 같은 엔터프라이즈 기능을 제공합니다.
Kubeflow는 Kubernetes에서 ML 워크플로우를 실행하기 위해 특별히 제작되었으므로, 인프라에 이미 Kubernetes를 표준화한 조직에 적합합니다. 다단계 ML 워크플로우를 정의하고 실행하기 위한 Kubeflow Pipelines, 대화형 모델 개발을 위한 Kubeflow Notebooks, 확장 가능한 모델 서빙을 위한 KServe(이전 KFServing)를 포함한 포괄적인 구성 요소 세트를 제공합니다.
Kubeflow의 핵심 강점은 클라우드 네이티브 아키텍처에 있습니다. Kubernetes에서 네이티브로 실행되므로 Kubernetes의 확장성과 클라우드 공급자 간의 이식성을 상속합니다. Kubeflow Pipelines는 Docker 컨테이너를 기반으로 하는 도메인별 언어(DSL)를 사용하므로 MLOps 파이프라인의 각 단계는 격리되고 재현 가능합니다. 파이프라인은 각 노드가 컨테이너화된 함수에 해당하는 방향성 비순환 그래프(DAG)로 정의될 수 있습니다.
Kubeflow는 TensorFlow, PyTorch 및 XGBoost를 포함한 주요 ML 프레임워크와 통합되며, 자동화된 머신러닝 모듈인 Katib을 통한 하이퍼파라미터 튜닝 구성 요소를 제공합니다. 이는 Kubeflow를 대규모 GPU에서 컴퓨팅 집약적인 딥러닝 워크로드를 실행하는 팀에게 강력한 선택으로 만듭니다.