MLOps
Machine Learning Operations
ML 모델의 개발부터 운영까지 자동화하는 실천. 모델 버전 관리, 배포, 모니터링 포함.
Machine Learning Operations
ML 모델의 개발부터 운영까지 자동화하는 실천. 모델 버전 관리, 배포, 모니터링 포함.
MLOps(Machine Learning Operations)는 ML 모델의 개발, 배포, 운영을 자동화하고 체계화하는 실천 방법론입니다. DevOps 원칙을 머신러닝에 적용하여 모델의 지속적 통합, 배포, 모니터링을 구현합니다.
MLOps는 2015년경 데이터 과학팀과 엔지니어링팀 간의 협업 문제를 해결하기 위해 등장했습니다. 구글, 넷플릭스 등 ML 선도 기업들이 "모델을 만드는 것보다 운영하는 것이 10배 어렵다"는 교훈을 바탕으로 체계적인 방법론을 정립했습니다.
MLOps의 핵심 구성요소는 버전 관리(코드, 데이터, 모델), CI/CD 파이프라인(자동 학습, 테스트, 배포), 모니터링(성능 드리프트, 데이터 드리프트 탐지), 피처 스토어(피처 재사용)입니다. 성숙도는 Level 0(수동)부터 Level 2(완전 자동화)까지 3단계로 구분됩니다.
실무에서 MLOps 도입은 모델 배포 시간을 수주에서 수시간으로 단축하고, 모델 장애 대응 시간을 80% 이상 줄입니다. MLflow, Kubeflow, Vertex AI, SageMaker 등의 플랫폼을 활용하며, 2025년 기준 MLOps 엔지니어 수요는 전년 대비 40% 증가했습니다.
import mlflow
import mlflow.sklearn
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, f1_score
import pandas as pd
# MLflow 실험 설정
mlflow.set_tracking_uri("http://localhost:5000")
mlflow.set_experiment("fraud_detection_v2")
# 데이터 로드 및 분할
data = pd.read_csv("transactions.csv")
X_train, X_test, y_train, y_test = train_test_split(
data.drop("is_fraud", axis=1), data["is_fraud"],
test_size=0.2, random_state=42
)
# MLflow Run 시작
with mlflow.start_run(run_name="rf_baseline"):
# 하이퍼파라미터 로깅
params = {"n_estimators": 100, "max_depth": 10, "min_samples_split": 5}
mlflow.log_params(params)
# 모델 학습
model = RandomForestClassifier(**params, random_state=42)
model.fit(X_train, y_train)
# 예측 및 메트릭 계산
y_pred = model.predict(X_test)
metrics = {
"accuracy": accuracy_score(y_test, y_pred),
"f1_score": f1_score(y_test, y_pred),
"precision": precision_score(y_test, y_pred),
"recall": recall_score(y_test, y_pred)
}
mlflow.log_metrics(metrics)
# 데이터 버전 기록
mlflow.log_param("data_version", "v2.3.1")
mlflow.log_param("training_samples", len(X_train))
# 모델 저장 (아티팩트)
mlflow.sklearn.log_model(
model,
artifact_path="model",
registered_model_name="fraud_detection_rf"
)
# 피처 중요도 시각화 저장
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.barh(X_train.columns, model.feature_importances_)
plt.tight_layout()
mlflow.log_figure(fig, "feature_importance.png")
print(f"Run ID: {mlflow.active_run().info.run_id}")
print(f"Metrics: {metrics}")
# 모델 레지스트리에서 프로덕션 버전 로드
model_uri = "models:/fraud_detection_rf/Production"
production_model = mlflow.sklearn.load_model(model_uri)
"MLOps 파이프라인을 구축해서 이제 모델 재학습부터 배포까지 2시간 내에 자동으로 완료됩니다. 데이터 드리프트 감지 시 슬랙 알림이 오고, A/B 테스트로 새 모델 성능을 검증한 후 자동 롤아웃됩니다."
"MLOps Level 2 성숙도를 달성하려면 데이터 버전 관리, 자동화된 학습 파이프라인, 모델 레지스트리, 지속적 모니터링이 필요합니다. 저는 이전 회사에서 Kubeflow와 MLflow를 조합해 Level 1에서 Level 2로 전환하는 작업을 리드했습니다."
"피처 스토어 도입이 MLOps의 게임 체인저입니다. 학습과 추론에서 동일한 피처를 보장하고, 피처 계산 로직을 중앙 관리해서 팀 간 피처 재사용률이 60%까지 올랐습니다. Feast나 Tecton을 고려해보세요."
모델 재현성을 위해서는 코드, 데이터, 환경 모두 버전 관리가 필요합니다. 데이터 없이 모델만 저장하면 결과 재현이 불가능합니다.
DVC로 데이터 버전을, MLflow로 모델과 하이퍼파라미터를, Docker로 환경을 관리하세요. 모든 실험은 추적 가능하고 재현 가능해야 합니다.