3. 모델 학습 (Training)
Databricks Runtime ML
Databricks Runtime ML은 표준 런타임에 ML/DL 라이브러리가 사전 설치된 특수 런타임 입니다. 직접 라이브러리를 설치하고 버전 충돌을 해결하는 고통을 없애줍니다. 주요 사전 설치 라이브러리는 다음과 같습니다.| 카테고리 | 라이브러리 |
|---|---|
| Classic ML | scikit-learn, XGBoost, LightGBM, CatBoost |
| Deep Learning | PyTorch, TensorFlow, Keras |
| 분산 학습 | Horovod, DeepSpeed, PyTorch Distributed |
| 실험 관리 | MLflow (Workspace에 자동 연결) |
| 데이터 처리 | pandas, NumPy, SciPy, Spark MLlib |
| 시각화 | matplotlib, seaborn, plotly |
| GPU 지원 | CUDA, cuDNN (GPU 클러스터 선택 시) |
AutoML
왜 등장했는가: 데이터 사이언티스트가 새 데이터셋에 대해 적합한 알고리즘, 하이퍼파라미터, 전처리 방법을 찾는 데 수일~수주가 걸립니다. AutoML은 이 탐색 과정을 자동화합니다. Databricks AutoML의 차별점: Google AutoML, AWS SageMaker Autopilot 등 대부분의 AutoML 도구는 결과 모델만 반환하는 블랙박스 방식입니다. Databricks AutoML은 근본적으로 다릅니다 — 각 시도(trial)가 완전한 실행 가능 노트북 으로 생성되고, 모든 전처리/학습/평가 코드가 투명하게 공개됩니다. 이 노트북을 기반으로 도메인 지식을 반영한 수정이 가능하므로, AutoML이 출발점(starting point) 역할을 하고 데이터 사이언티스트가 전문성을 더하는 워크플로가 됩니다. 내부 탐색 과정: AutoML은 내부적으로 다음 단계를 자동 수행합니다.- 데이터 프로파일링: 각 컬럼의 타입, 분포, 결측률을 분석하여 데이터 탐색 노트북 생성
- 전처리 자동화: 수치형 컬럼의 결측치를 중앙값/평균으로 대체, 범주형 컬럼에 원-핫 인코딩, 날짜 컬럼에서 요일/월/시간 등 파생 피처 추출
- 알고리즘 탐색: LightGBM, XGBoost, RandomForest, LogisticRegression/ElasticNet 등을 순차적으로 시도
- 하이퍼파라미터 최적화: Hyperopt(TPE 알고리즘, Tree-structured Parzen Estimator) 기반으로 각 알고리즘의 최적 하이퍼파라미터를 탐색
- 앙상블 시도: 상위 모델들의 가중 투표(Weighted Voting) 앙상블도 자동 시도
| 기능 | 설명 |
|---|---|
| 지원 문제 유형 | 분류, 회귀, 시계열 예측 (Prophet, ARIMA 포함) |
| 탐색 알고리즘 | LightGBM, XGBoost, sklearn (RandomForest, LogisticRegression 등) + Hyperopt TPE |
| 자동 전처리 | 결측치 처리, 범주형 인코딩, 날짜 피처 추출, 텍스트 피처 TF-IDF |
| 출력물 | 베스트 모델 노트북 + MLflow Experiment + 데이터 탐색 노트북 |
| 사용 방법 | UI (Experiments > Create AutoML Experiment) 또는 Python API |
| 제한사항 | 딥러닝 모델은 탐색하지 않음, 이미지/텍스트 전용 태스크 미지원, 대규모 데이터셋(수백GB 이상)에서는 샘플링 필요 |
참고 AutoML은 baseline 모델 을 빠르게 확보하는 용도로 가장 효과적입니다. 생성된 노트북을 기반으로 도메인 지식을 반영한 피처 추가, 커스텀 전처리 등을 수행하는 것이 일반적인 워크플로입니다.
분산 학습
Databricks 클러스터의 분산 컴퓨팅 능력을 ML 학습에 활용하는 방법은 여러 가지입니다.| 방법 | 적합한 경우 | 작동 방식 |
|---|---|---|
| Spark MLlib | 대규모 정형 데이터, 클래식 ML 알고리즘 | Spark DataFrame 기반 분산 학습 |
| pandas UDF + Spark | 그룹별 독립 모델 학습 (예: 매장별 수요 예측) | applyInPandas()로 그룹별 pandas 모델 병렬 학습 |
| Horovod / TorchDistributor | 대규모 딥러닝 모델 (CNN, Transformer) | 데이터 병렬(Data Parallel) 분산 학습 |
| DeepSpeed | 초대형 모델 (수십억 파라미터) | ZeRO 최적화로 메모리 효율적 분산 학습 |
| 단일 노드 멀티 GPU | 중간 규모 DL 모델 | PyTorch DDP 또는 Horovod 사용 |
- Spark 드라이버가 각 워커에 PyTorch 학습 프로세스를 시작하도록 지시
- 각 워커에서
torch.distributed백엔드(NCCL for GPU, Gloo for CPU)가 초기화되어 프로세스 간 통신 채널 구성 - 데이터 병렬(Data Parallel) 방식으로 각 노드가 전체 모델의 복사본을 보유하고, 미니배치를 분할하여 학습
- 그래디언트를 AllReduce 연산으로 동기화하여 모델 파라미터를 일치시킴
| ZeRO Stage | 분산 대상 | 메모리 절감 | 통신 오버헤드 |
|---|---|---|---|
| Stage 1 | Optimizer States (Adam의 momentum, variance) | ~4x | 낮음 |
| Stage 2 | + Gradients | ~8x | 중간 |
| Stage 3 | + Model Parameters | ~N배 (N=GPU 수) | 높음 (파라미터 수집 필요) |
GPU 클러스터 활용
Databricks는 AWS(p4d, p5, g5), Azure(NC, ND 시리즈), GCP의 GPU 인스턴스를 지원합니다. GPU 클러스터 사용 시 고려사항은 다음과 같습니다.| 고려사항 | 권장 사항 |
|---|---|
| 인스턴스 선택 | 학습: A100/H100 (고대역폭). 추론: T4/A10G (비용 효율) |
| Runtime 선택 | 반드시 ML Runtime (GPU 버전) 선택 |
| 스팟 인스턴스 | 학습 시 비용 절감 가능. 체크포인트 저장 필수 |
| 단일 vs 멀티 노드 | 모델 크기 < GPU 메모리이면 단일 노드로 충분 |
4. 실험 관리 & 모델 레지스트리
MLflow Tracking
왜 필요한가: ML 프로젝트에서는 수십~수백 번의 실험을 수행합니다. 어떤 하이퍼파라미터 조합이 최적이었는지, 어떤 전처리를 적용했는지를 체계적으로 기록하지 않으면 재현이 불가능합니다. Databricks에는 Managed MLflow 가 내장되어 있어 별도 서버 구축 없이 바로 사용할 수 있습니다.| MLflow 구성 요소 | 역할 |
|---|---|
| Experiment | 관련 실험(Run)의 논리적 그룹. 프로젝트나 문제 단위로 생성 |
| Run | 하나의 학습 실행. 파라미터, 메트릭, 아티팩트, 소스 코드를 기록 |
| Parameter | 하이퍼파라미터 (learning_rate, n_estimators 등) |
| Metric | 평가 지표 (accuracy, f1, rmse 등). 스텝별 기록 가능 |
| Artifact | 모델 파일, 그래프, 데이터 샘플 등 모든 바이너리 |
| Tag | 실행에 대한 메타데이터 (팀, 버전, 환경 등) |
mlflow.autolog()를 호출하면 scikit-learn, XGBoost, PyTorch, TensorFlow 등의 학습을 자동으로 추적합니다.
Unity Catalog 모델 레지스트리
왜 등장했는가: 기존 Workspace 레벨 모델 레지스트리는 워크스페이스 간 모델 공유가 어렵고, 데이터 거버넌스와 분리되어 있었습니다. Unity Catalog 모델 레지스트리는 모델을 데이터와 동일한 거버넌스 체계 로 관리합니다.| 기능 | Workspace 레지스트리 (Legacy) | Unity Catalog 레지스트리 |
|---|---|---|
| 네임스페이스 | 워크스페이스 내 | catalog.schema.model_name (3-level) |
| 접근 제어 | 워크스페이스 단위 | Unity Catalog 권한 (GRANT/REVOKE) |
| 크로스 워크스페이스 | 불가 | 동일 메타스토어 내 모든 워크스페이스에서 접근 |
| Lineage | 제한적 | 데이터 테이블 → 피처 → 모델 → 엔드포인트 전체 추적 |
| 스테이지 관리 | Staging/Production/Archived | Alias (Champion, Challenger 등 자유 지정) |
Champion(현재 프로덕션 모델)과 Challenger(검증 중인 후보 모델) Alias를 지정하여 A/B 테스트를 구성하거나, region-kr, region-us처럼 지역별 모델을 관리할 수도 있습니다. Model Serving Endpoint가 Alias를 참조하므로, Alias를 다른 버전으로 이동시키면 엔드포인트가 자동으로 새 모델 버전을 로드 합니다 — 제로 다운타임 배포가 가능합니다.
모델 버전 관리 워크플로
아래 표는 일반적인 모델 라이프사이클에서 각 단계별 Databricks 기능 매핑을 보여줍니다.| 라이프사이클 단계 | 활동 | Databricks 기능 |
|---|---|---|
| 실험 | 여러 알고리즘/파라미터 시도 | MLflow Experiment + Autolog |
| 등록 | 최적 모델을 레지스트리에 등록 | mlflow.register_model() |
| 검증 | Challenger 모델과 Champion 비교 | Alias + 평가 노트북 |
| 승격 | 검증 통과 시 Champion으로 변경 | client.set_registered_model_alias() |
| 배포 | 서빙 엔드포인트에 반영 | Model Serving (Alias 기반 자동 업데이트) |
| 폐기 | 더 이상 사용하지 않는 버전 정리 | client.delete_registered_model_alias() |