Skip to main content

왜 Databricks에서 ML을 하나요?

전통적으로 ML 워크플로우는 도구가 파편화 되어 있었습니다. 데이터 준비는 Spark, 모델 학습은 Jupyter + GPU 서버, 실험 추적은 별도 서버, 모델 배포는 또 다른 도구… 이런 분산된 환경은 관리가 복잡하고, 데이터를 여러 시스템 간에 복사해야 하며, 거버넌스 적용이 어렵습니다. Databricks는 이 모든 과정을 하나의 플랫폼 에서 수행할 수 있게 합니다. 데이터 엔지니어가 준비한 데이터를 별도로 내보내지 않고 바로 ML 학습에 사용할 수 있으며, 학습된 모델은 클릭 한 번으로 REST API로 배포됩니다. 이러한 통합 환경은 ML 프로젝트의 생산성을 극적으로 향상 시키고, 실험에서 프로덕션까지의 시간(Time to Production)을 크게 단축합니다.

외부 ML 플랫폼과의 비교

ML을 수행할 수 있는 플랫폼은 여러 가지가 있습니다. 각각의 장단점을 이해하면 Databricks의 차별점을 더 명확하게 파악할 수 있습니다.
비교 항목DatabricksAWS SageMakerGoogle Vertex AIAzure ML Studio
데이터 통합Lakehouse 데이터 직접 사용S3에서 데이터 로드 필요BigQuery/GCS 연동Azure Storage 연동
실험 추적MLflow 기본 내장SageMaker ExperimentsVertex ExperimentsMLflow/Azure ML
모델 레지스트리Unity Catalog 통합SageMaker RegistryVertex Model RegistryAzure ML Registry
거버넌스UC로 데이터~모델 통합 거버넌스IAM 기반IAM 기반RBAC 기반
GenAI 지원Agent Framework, TracingJumpStart, Bedrock 연동Model Garden, GeminiAzure OpenAI 연동
오픈소스MLflow (오픈소스) 기반자체 SDK자체 SDKMLflow 지원
멀티클라우드AWS, Azure, GCP 모두 지원AWS 전용GCP 전용Azure 전용
💡 핵심 차별점: Databricks는 데이터 레이크하우스와 ML이 하나의 플랫폼에 통합 되어 있다는 점이 가장 큰 강점입니다. 다른 플랫폼에서는 데이터 준비와 ML이 별도 서비스이므로 데이터 이동과 권한 관리의 복잡성이 증가합니다.

ML 워크플로우 전체 그림

Databricks에서의 ML 워크플로우는 크게 5단계로 구성됩니다. 각 단계가 유기적으로 연결되어 있어, 한 플랫폼 안에서 전체 ML 라이프사이클을 관리할 수 있습니다.
단계작업설명
1데이터 준비Feature Engineering으로 학습 데이터를 준비합니다
2실험/학습MLflow Tracking으로 실험을 추적하며 모델을 학습합니다
3모델 등록UC Model Registry에 모델을 등록하여 버전 관리합니다
4모델 배포Model Serving으로 REST API 엔드포인트에 배포합니다
5모니터링Inference Tables로 성능을 모니터링합니다
재학습/개선모니터링 결과를 바탕으로 실험/학습 단계로 돌아가 반복합니다
단계Databricks 도구역할전통적 도구 (비교)
데이터 준비Feature Engineering, Spark피처 테이블 생성, 학습 데이터 준비pandas (로컬), 별도 Feature Store
실험/학습MLflow Tracking, Notebooks하이퍼파라미터 튜닝, 모델 학습, 실험 비교Jupyter + W&B / TensorBoard
모델 등록Unity Catalog Models모델 버전 관리, 승격(Alias) 관리수동 파일 관리 또는 별도 Registry
모델 배포Model ServingREST API 엔드포인트로 실시간 추론Flask + Docker + K8s
모니터링Inference Tables, Lakehouse Monitoring성능 추적, 드리프트 감지, 비용 추적별도 모니터링 도구

단계별 상세 설명

1단계: 데이터 준비 (Feature Engineering)

ML 모델의 성능은 데이터 품질에 크게 좌우됩니다. Databricks의 Feature Engineering 기능을 사용하면, Lakehouse에 저장된 원본 데이터로부터 피처(Feature) 를 추출하고 재사용 가능한 피처 테이블로 관리할 수 있습니다. 피처 테이블은 학습과 서빙에서 동일한 피처를 일관되게 사용하도록 보장하여, 학습-서빙 불일치(Training-Serving Skew) 문제를 방지합니다.

2단계: 실험 및 학습 (MLflow Tracking)

MLflow Tracking은 모든 실험의 하이퍼파라미터, 메트릭, 모델 아티팩트 를 자동으로 기록합니다. mlflow.autolog() 한 줄이면 대부분의 ML 프레임워크에서 자동 로깅이 활성화되며, 여러 실험을 UI에서 시각적으로 비교하여 최적의 모델을 선택할 수 있습니다. Databricks Notebook에서 Spark의 분산 컴퓨팅 파워를 활용하여 대규모 데이터셋으로 학습하는 것도 가능합니다.

3단계: 모델 등록 (Unity Catalog Model Registry)

학습이 완료된 모델은 Unity Catalog에 등록하여 버전 관리, 접근 권한, 리니지 추적 을 적용합니다. Alias 기능(champion, challenger)을 통해 프로덕션 모델과 테스트 모델을 명확하게 구분하며, 데이터 테이블과 동일한 거버넌스 체계 아래에서 모델을 관리합니다.

4단계: 모델 배포 (Model Serving)

등록된 모델을 서버리스 REST API 엔드포인트 로 배포합니다. 인프라 관리 없이 오토스케일링이 적용되며, A/B 테스트를 위한 트래픽 분할도 지원합니다. 전통 ML 모델뿐 아니라 LLM, RAG 체인, AI 에이전트까지 동일한 방식으로 배포할 수 있습니다.

5단계: 모니터링 (Inference Tables + Lakehouse Monitoring)

배포된 모델의 모든 입력/출력이 Inference Table 에 자동 기록됩니다. 이 데이터를 기반으로 응답 지연시간, 오류율, 데이터 드리프트를 모니터링하며, 품질이 저하되면 알림을 받아 재학습 파이프라인을 트리거할 수 있습니다.

전통 ML vs GenAI 워크플로우

Databricks는 전통적인 ML(테이블 데이터 기반 예측)과 GenAI(LLM 기반 에이전트) 모두 를 지원합니다. 두 워크플로우는 데이터 유형, 모델 종류, 평가 방식에서 근본적인 차이가 있지만, Databricks에서는 동일한 플랫폼 위에서 두 가지 모두를 수행할 수 있습니다.
비교전통 MLGenAI / LLM
데이터정형 데이터 (테이블)텍스트, 문서, 이미지
모델scikit-learn, XGBoost, PyTorchLlama, GPT, Claude + RAG/Agent
학습커스텀 모델 직접 학습사전학습 모델 사용 + Fine-tuning (선택)
입력피처 벡터 (수치)자연어 텍스트, 프롬프트
출력예측값 (수치, 클래스)생성된 텍스트, 도구 호출
평가accuracy, F1, AUCCorrectness, Safety, Groundedness
Databricks 도구Feature Store, Tracking, ServingVector Search, Tracing, Agent Framework

전통 ML 예시: 이탈 예측

고객의 과거 행동 데이터를 바탕으로 이탈 가능성을 예측하는 전형적인 분류(Classification) 문제입니다. mlflow.autolog()를 사용하면 모델의 파라미터, 메트릭, 학습된 모델 자체가 모두 자동으로 MLflow에 기록됩니다.
import mlflow
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.model_selection import train_test_split

mlflow.autolog()  # 자동 로깅 활성화

# 데이터 준비 — Lakehouse의 Gold 테이블에서 직접 로드
train_df = spark.table("gold.customer_features").toPandas()
X = train_df.drop("churned", axis=1)
y = train_df["churned"]

# 학습/테스트 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 모델 학습 → 자동으로 파라미터/메트릭/모델이 MLflow에 기록됩니다
with mlflow.start_run(run_name="churn_prediction_v1"):
    model = GradientBoostingClassifier(n_estimators=200, max_depth=5, learning_rate=0.1)
    model.fit(X_train, y_train)

    # 테스트 셋 평가
    accuracy = model.score(X_test, y_test)
    print(f"테스트 정확도: {accuracy:.4f}")

GenAI 예시: 고객 지원 에이전트

사전학습된 LLM에 사내 문서를 RAG로 연결하고, 주문 조회 같은 도구(Tool)를 부여하여 고객 지원 에이전트를 구축합니다. MLflow에 에이전트를 로깅하면 동일한 Model Serving 인프라로 배포할 수 있습니다.
import mlflow

# RAG 기반 에이전트 구축
agent = CustomerSupportAgent(
    llm="databricks-meta-llama-3-3-70b-instruct",
    vector_index="catalog.schema.docs_index",
    tools=["get_order_status", "create_ticket"]
)

# MLflow에 에이전트 로깅
with mlflow.start_run():
    mlflow.pyfunc.log_model("agent", python_model=agent)

# 에이전트를 Unity Catalog에 등록
mlflow.register_model(
    "runs:/<run_id>/agent",
    "production.ml_models.customer_support_agent"
)

실무 워크플로우 예시: 엔드투엔드 ML 파이프라인

아래는 실제 프로덕션 환경에서 Databricks ML을 활용하는 전체 흐름을 보여주는 예시입니다. 이탈 예측 모델을 데이터 준비부터 배포, 모니터링까지 자동화하는 시나리오입니다.
태스크작업상세
트리거매일 자정 Lakeflow Jobs-
Task 1Feature EngineeringSpark로 customer_features 테이블 갱신
Task 2Model Training최신 피처로 모델 재학습 + MLflow 자동 로깅
Task 3Model Evaluation테스트 셋으로 성능 검증 (정확도 > 0.85?)
Task 4 (성공 시)Model RegistrationUC에 새 버전 등록 + champion Alias 부여
Task 5Model Serving 갱신엔드포인트가 자동으로 새 모델 버전을 서빙
이처럼 Databricks에서는 데이터 파이프라인과 ML 파이프라인이 동일한 플랫폼에서 동작하므로, Lakeflow Jobs로 전체 흐름을 하나의 워크플로우로 관리할 수 있습니다.

Databricks ML 핵심 컴포넌트 맵

아래 표는 Databricks에서 제공하는 ML 관련 컴포넌트를 카테고리별로 정리한 것입니다. 각 컴포넌트의 역할을 파악하면, 본인의 ML 프로젝트에 어떤 도구를 사용해야 하는지 빠르게 판단할 수 있습니다.
카테고리컴포넌트설명
컴퓨트ML RuntimeML 라이브러리(PyTorch, TensorFlow, scikit-learn, XGBoost 등)가 사전 설치된 런타임입니다. 별도 패키지 설치 없이 바로 학습을 시작할 수 있습니다
GPU ClustersNVIDIA GPU가 장착된 클러스터로, 딥러닝 모델 학습과 LLM 파인튜닝에 사용합니다. 단일 노드부터 멀티노드 분산 학습까지 지원합니다
실험 관리MLflow Tracking파라미터, 메트릭, 아티팩트를 체계적으로 추적하고, 여러 실험을 UI에서 시각적으로 비교합니다
MLflow Autologmlflow.autolog() 한 줄로 주요 ML 프레임워크의 자동 로깅을 활성화합니다. 수동 코드 작성이 최소화됩니다
Notebooks대화형 개발 환경으로, 코드 실행, 시각화, 문서화를 한 곳에서 수행합니다. Python, R, Scala, SQL을 모두 지원합니다
피처Feature Engineering피처 테이블을 생성하고 관리합니다. 학습과 서빙에서 동일한 피처를 보장하여 Training-Serving Skew를 방지합니다
Online Tables실시간 추론을 위해 피처를 밀리초 단위로 서빙합니다. Feature Table의 온라인 버전입니다
모델 관리UC Model RegistryUnity Catalog에서 모델 버전과 Alias를 관리합니다. 데이터 테이블과 동일한 거버넌스 체계가 적용됩니다
배포Model Serving서버리스 REST API 엔드포인트로 모델을 배포합니다. 오토스케일링, A/B 테스트, GPU 서빙을 지원합니다
Foundation Model APIDatabricks가 호스팅하는 LLM(Llama, DBRX 등)을 즉시 사용할 수 있는 API입니다. Pay-per-token과 Provisioned Throughput 과금을 지원합니다
GenAIVector Search임베딩 벡터 기반 유사도 검색 서비스입니다. RAG 파이프라인에서 관련 문서를 검색하는 데 사용합니다
Agent FrameworkAI 에이전트를 구축하기 위한 프레임워크입니다. Tool 연결, 멀티턴 대화, 멀티 에이전트 오케스트레이션을 지원합니다
MLflow TracingGenAI 앱의 실행 흐름(LLM 호출, Tool 실행, 검색 등)을 단계별로 추적하여 디버깅과 최적화에 활용합니다
평가MLflow Evaluate모델/에이전트의 품질을 자동으로 평가합니다. LLM Judge 기반의 Correctness, Safety, Groundedness 등의 Scorer를 제공합니다
모니터링Inference Tables서빙 엔드포인트의 모든 추론 입력/출력을 Delta 테이블에 자동 기록합니다. 품질 분석과 감사의 기반 데이터입니다
Lakehouse Monitoring데이터와 모델의 드리프트를 자동 감지합니다. 통계적 변화가 감지되면 알림을 보내어 선제적 대응이 가능합니다

ML Runtime 상세

ML 워크로드를 실행할 때는 ML Runtime 이 포함된 클러스터를 사용하는 것이 좋습니다. ML Runtime은 Standard Runtime에 머신러닝에 필요한 라이브러리를 사전 설치하여 제공하므로, 환경 설정에 들이는 시간을 절약할 수 있습니다.

ML Runtime에 포함된 주요 라이브러리

카테고리라이브러리
전통 MLscikit-learn, XGBoost, LightGBM, CatBoost
딥러닝PyTorch, TensorFlow, Keras
데이터 처리pandas, NumPy, SciPy
시각화matplotlib, seaborn, plotly
NLPHugging Face Transformers, tokenizers
ML 관리MLflow (자동 내장)
분산 학습Horovod, DeepSpeed, PyTorch Distributed
하이퍼파라미터 튜닝Hyperopt, Optuna
💡 GPU Runtime 은 ML Runtime에 CUDA, cuDNN 등 GPU 드라이버가 추가된 버전입니다. 딥러닝이나 LLM 파인튜닝 시에는 반드시 GPU Runtime을 선택해야 합니다.

현장에서 배운 것들: ML 프로젝트의 현실

ML 프로젝트의 80%는 데이터 준비에 쓰인다 — 실화

이건 과장이 아니라 수치로 증명된 현실입니다. 제가 참여한 30개 이상의 ML 프로젝트에서 시간 분배를 추적해봤습니다.
단계교과서 예상현실 (평균)실제 하는 일
데이터 수집/탐색10%25%“이 컬럼이 뭔지 아는 사람?” 회의, 데이터 사전 만들기, 원본 DB 접근 권한 받기
데이터 정제/피처 엔지니어링20%55%NULL 처리, 이상치 제거, 피처 생성, 레이블 정의 논의, 데이터 불균형 처리
모델 학습/실험40%10%AutoML 또는 XGBoost 한두 번 돌리면 의외로 빠름
평가/배포/모니터링30%10%모델은 좋은데 배포하는 데 3개월 걸림 (인프라팀과 협의…)
💡 현업 진실: “멋진 알고리즘”보다 ”** 깨끗한 데이터**“가 모델 성능에 10배 더 큰 영향을 미칩니다. XGBoost + 잘 정제된 피처가 최신 딥러닝 모델 + 지저분한 데이터를 이기는 경우를 수없이 봤습니다. Databricks의 가치는 이 데이터 준비 과정을 같은 플랫폼 안에서 할 수 있다는 것입니다.

Jupyter 노트북에서 시작한 모델이 프로덕션까지 가는 현실적 여정

데이터 과학자의 로컬 Jupyter에서 시작된 모델이 실제 서비스에 배포되기까지의 현실적인 여정을 그려보겠습니다.

전통적 방식 (Databricks 없이)

[1주차] 데이터 과학자: Jupyter에서 모델 개발
    → "내 노트북에서는 잘 되는데요!"

[2주차] 데이터 과학자 → DE: "이 데이터를 S3에서 가져와주세요"
    → DE: "어떤 포맷으로? 스키마 정의해주세요" → 2주 소요

[4주차] 모델 완성 → "배포해주세요"
    → 인프라팀: "Docker 이미지 만들어주세요"
    → 데이터 과학자: "Docker가 뭔가요?"

[6주차] Docker 이미지 완성
    → 인프라팀: "K8s에 올렸는데 메모리 부족이요"
    → 사이즈 조정, 오토스케일링 설정...

[8주차] 배포 완료!
    → 2주 뒤: "모델 성능이 떨어지는데 왜 그런지 모르겠어요"
    → 모니터링 없음, 입력 데이터 드리프트 감지 불가

[12주차] "모델 재학습 하고 싶은데, 처음에 어떤 데이터로 학습했는지 기억이..."
    → 재현 불가능 → 처음부터 다시 시작

총 소요: 3개월, 재학습 주기: "할 수 있으면..."

Databricks 방식

[1일차] Databricks Notebook에서 모델 개발
    → Lakehouse의 Gold 테이블에서 직접 데이터 로드
    → mlflow.autolog()로 자동 실험 추적

[2일차] 최적 모델 선택 → UC Model Registry에 등록
    → 모델 버전, 학습 데이터 리니지, 피처 의존성 모두 기록

[3일차] Model Serving 엔드포인트 생성 (클릭 한 번)
    → 서버리스 오토스케일링 자동 적용
    → Inference Table 자동 활성화 → 모든 입출력 기록

[4일차] Lakeflow Job으로 재학습 파이프라인 자동화
    → 주 1회 자동 재학습 → 성능 검증 → 자동 배포

총 소요: 4일, 재학습 주기: 자동 (주 1회)

MLOps 성숙도 모델: 우리 팀은 어디에 있나요?

제가 고객을 컨설팅할 때 사용하는 MLOps 성숙도 모델입니다. 각 레벨의 현실적인 모습을 그려보겠습니다.
레벨이름특징현실Databricks 도구
0No MLOps수동 실험, 모델 pkl 파일 전달”모델 파일 슬랙으로 보내줄게”-
1수동 추적MLflow로 실험 추적 시작”적어도 어떤 파라미터가 좋은지는 알겠다”MLflow Tracking
2모델 관리Model Registry, 버전 관리”champion 모델이 뭔지는 알겠다”UC Model Registry
3자동 배포CI/CD로 모델 자동 배포”코드 머지하면 모델이 올라간다”Model Serving + Jobs
4자동 재학습모니터링 + 자동 재학습 파이프라인”모델이 알아서 최신 상태를 유지한다”Inference Tables + Monitoring + Jobs
5완전 자동화Feature Store, A/B 테스트, Shadow 배포”새 모델이 기존보다 낫다는 것을 자동으로 검증하고 롤아웃”Feature Engineering + A/B + 전체 통합
⚠️ 많은 팀이 이 실수를 합니다: 레벨 0에서 바로 레벨 5를 목표로 하면 실패합니다. 한 단계씩 성숙도를 올리세요. 대부분의 팀은 레벨 23에서 이미 엄청난 생산성 향상을 경험합니다. 레벨 3에 도달하는 데 보통 36개월이 걸립니다.

ML 프로젝트 실패의 5가지 패턴

성공 사례보다 실패 패턴 을 아는 것이 더 가치 있습니다. 20년간 목격한 가장 흔한 실패 패턴입니다.
패턴증상원인해결책
”** 정확도 99%인데 쓸 수 없어요**“테스트 정확도는 높지만 실제 사용 시 엉망데이터 누수(Data Leakage), 학습/서빙 스큐Feature Store로 학습/서빙 피처 일관성 보장
”** 모델이 2주 만에 쓸모없어져요**“배포 직후엔 좋았는데 빠르게 성능 저하데이터 드리프트, 계절성 미반영Lakehouse Monitoring + 자동 재학습 파이프라인
”** 내 노트북에서는 됐는데…**“로컬에서 재현 가능하지만 프로덕션에서 실패환경 차이, 라이브러리 버전, 데이터 스냅샷 불일치ML Runtime + MLflow 모델 로깅 (환경 패키징)
”** 6개월 개발했는데 비즈니스 임팩트가 없어요**“기술적으로 완벽하지만 비즈니스 가치 없음문제 정의 단계에서 이해관계자 미참여MVP부터 빠르게 배포하고 피드백 수집
”** 모델 학습에 3일 걸려서 실험을 못 해요**“학습 시간이 너무 길어 하이퍼파라미터 튜닝 불가비효율적인 데이터 처리, 단일 머신 학습Spark 분산 처리 + GPU 클러스터 + 샘플링 전략

데이터 과학자 vs ML 엔지니어: 역할의 분리와 협업

ML 프로젝트에서 가장 흔한 조직 문제는 ”** 누가 무엇을 책임지는가?**“가 불명확한 것입니다.
역할주요 책임핵심 스킬Databricks 도구
데이터 과학자문제 정의, EDA, 피처 설계, 모델 실험통계, ML 알고리즘, 도메인 지식Notebooks, MLflow Tracking, AutoML
ML 엔지니어모델 프로덕션화, 파이프라인 자동화, 모니터링소프트웨어 엔지니어링, MLOps, 인프라Model Serving, Lakeflow Jobs, Inference Tables
데이터 엔지니어피처 파이프라인, 데이터 품질, 인프라Spark, SQL, 파이프라인 설계Feature Engineering, SDP, Delta Lake
💡 작은 팀(5명 이하)의 현실: 한 사람이 여러 역할을 겸합니다. 이때 Databricks의 통합 환경이 빛납니다. 한 사람이 노트북에서 실험하고, 같은 코드를 Job으로 스케줄링하고, 클릭 한 번으로 서빙하는 것이 가능하기 때문입니다.

실전 ML 프로젝트 체크리스트

새 ML 프로젝트를 시작할 때 확인해야 할 항목들입니다.
단계체크 항목안 하면 벌어지는 일
시작 전비즈니스 성공 지표 정의 (“정확도 85% 이상이면 월 $50K 절감”)기술적으로 성공해도 프로젝트가 폐기됨
시작 전충분한 레이블 데이터 존재 확인 (최소 수천 건)3개월 개발 후 “데이터가 부족합니다” 발견
데이터 준비Feature Store에 피처 등록다른 팀이 같은 피처를 또 만듬 (중복 작업)
학습MLflow autolog 활성화3개월 뒤 “그때 어떤 파라미터였지?”
평가시간 기반 분할 (미래 예측 시뮬레이션)데이터 누수로 과대평가된 모델이 프로덕션에 배포됨
배포Shadow 배포 (기존 시스템과 병행) 최소 1주새 모델의 예상치 못한 동작이 고객에게 노출
모니터링Inference Table + 드리프트 알림 설정모델 성능 저하를 고객 불만으로 먼저 알게 됨

정리

핵심 메시지설명
통합 플랫폼데이터 준비 → 학습 → 배포 → 모니터링을 하나의 플랫폼에서 수행합니다. 데이터 이동과 도구 전환의 오버헤드가 없습니다
전통 ML + GenAI테이블 데이터 예측부터 LLM 에이전트까지 모두 지원합니다. 동일한 MLflow와 Model Serving 인프라를 공유합니다
거버넌스모델, 피처, 데이터가 모두 Unity Catalog에서 통합 관리됩니다. 접근 권한, 리니지, 감사가 일원화됩니다
MLflow 중심실험 추적, 모델 관리, 트레이싱, 평가를 MLflow가 담당합니다. 오픈소스 기반이므로 벤더 락인(Vendor Lock-in) 위험이 낮습니다
엔드투엔드 자동화Lakeflow Jobs로 데이터 파이프라인과 ML 파이프라인을 하나의 워크플로우로 자동화할 수 있습니다

참고 링크