Skip to main content

ML Runtime이란?

머신러닝 프로젝트를 시작할 때 가장 번거로운 작업 중 하나가 환경 설정 입니다. PyTorch, TensorFlow, scikit-learn, XGBoost, MLflow 등 수십 개의 라이브러리를 설치하고, 서로의 버전 호환성을 맞추는 데만 상당한 시간이 소요됩니다.
💡 ML Runtime 은 이 문제를 해결합니다. 머신러닝에 필요한 모든 라이브러리가 사전 설치되고 호환성이 검증된 Databricks Runtime입니다. 클러스터를 시작하면 바로 모델 학습을 시작할 수 있습니다.

Runtime 유형별 비교

Databricks는 용도에 따라 3가지 Runtime을 제공합니다.
Runtime포함 내용적합한 워크로드예시
Standard RuntimeSpark + Delta Lake + 기본 Python데이터 엔지니어링, SQL 분석ETL 파이프라인, 배치 처리
ML RuntimeStandard + ML/DL 라이브러리ML 모델 학습, Feature Engineeringscikit-learn, XGBoost 학습
ML Runtime (GPU)ML Runtime + GPU 드라이버(CUDA, cuDNN)딥러닝, LLM 파인튜닝PyTorch, Transformer 학습
런타임포함 구성추가 요소
Standard RuntimeSpark + Delta Lake기본 런타임
ML RuntimeStandard + ML 라이브러리scikit-learn, XGBoost, PyTorch 등 사전 설치
ML Runtime (GPU)ML Runtime + CUDA/cuDNNGPU 드라이버가 추가됩니다

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

전통 ML (Traditional Machine Learning)

라이브러리용도특징
scikit-learn분류, 회귀, 클러스터링, 전처리가장 범용적인 ML 라이브러리
XGBoost그래디언트 부스팅정형 데이터에서 최고 성능, Kaggle 우승 단골
LightGBM경량 그래디언트 부스팅대용량 데이터에서 빠른 학습 속도
CatBoost카테고리 피처 부스팅범주형 변수를 자동 처리
Spark MLlib분산 MLSpark 위에서 대용량 데이터로 학습

딥러닝 (Deep Learning)

라이브러리용도특징
PyTorch딥러닝 프레임워크연구/프로덕션 모두 사용, 가장 인기
TensorFlow / Keras딥러닝 프레임워크프로덕션 배포에 강점
Hugging Face Transformers사전학습 모델 활용BERT, GPT, LLaMA 등 LLM 사용
tokenizers텍스트 토크나이저Transformers와 함께 사용

데이터 처리 / 시각화

라이브러리용도
pandas데이터 조작 (DataFrame)
NumPy수치 계산
SciPy과학/통계 계산
matplotlib / seaborn정적 데이터 시각화
plotly대화형 시각화

ML Ops / 실험 관리

라이브러리용도
MLflow실험 추적, 모델 관리, 트레이싱
Hyperopt하이퍼파라미터 자동 튜닝 (Bayesian Optimization)
Optuna하이퍼파라미터 튜닝 (최신)
SHAP모델 해석 (피처 중요도 시각화)
💡 ML Runtime에 포함된 라이브러리 버전은 Runtime 버전마다 다릅니다. 정확한 버전 목록은 릴리즈 노트를 확인하세요.

GPU Runtime 구성

GPU 인스턴스 유형

인스턴스 (AWS)GPUGPU 메모리vCPURAM적합한 워크로드
g4dn.xlargeNVIDIA T4 × 116 GB416 GB추론, 소규모 학습
g5.xlargeNVIDIA A10G × 124 GB416 GB중규모 학습, 파인튜닝
g5.12xlargeNVIDIA A10G × 496 GB48192 GB대규모 학습
p3.2xlargeNVIDIA V100 × 116 GB861 GB고성능 학습
p4d.24xlargeNVIDIA A100 × 8320 GB961,152 GBLLM 파인튜닝, 대규모 분산 학습

선택 가이드

워크로드권장 인스턴스이유
추론 (Inference)g4dn.xlarge (T4)비용 대비 추론 성능이 우수
소규모 모델 학습g5.xlarge (A10G)24GB GPU 메모리로 대부분의 모델 처리
이미지/비전 모델 학습g5.12xlarge (A10G × 4)멀티 GPU로 빠른 학습
LLM 파인튜닝 (7B~13B)p4d.24xlarge (A100 × 8)대용량 GPU 메모리 필수

AutoML

Databricks의 AutoML 은 데이터를 주면 자동으로 최적의 모델을 학습 합니다. ML 전문 지식이 없어도 빠르게 좋은 성능의 모델을 얻을 수 있습니다.

AutoML의 동작 과정

단계작업설명
1데이터셋 입력Delta 테이블에서 데이터를 읽습니다
2자동 전처리결측값 처리, 인코딩 등을 자동 수행합니다
3다중 모델 학습XGBoost, LightGBM, RF, LR 등 여러 모델을 학습합니다
4자동 평가교차 검증으로 성능을 평가합니다
5최적 모델 선택최적 모델을 선택하고 MLflow에 로깅합니다

AutoML 사용 방법

UI에서 실행:
  1. ExperimentsCreate AutoML Experiment
  2. 데이터셋(Delta 테이블) 선택
  3. 타겟 컬럼(예측할 컬럼) 지정
  4. 문제 유형 선택 (분류 / 회귀 / 예측)
  5. Start 클릭
API로 실행:
from databricks import automl

# 분류 문제
result = automl.classify(
    dataset="catalog.schema.customer_churn",
    target_col="churned",
    timeout_minutes=30,
    max_trials=50
)

# 최적 모델 확인
print(f"Best model: {result.best_trial.model_description}")
print(f"Metric (F1): {result.best_trial.metrics['val_f1_score']:.4f}")

# 모델 URI (배포에 사용)
print(f"Model URI: {result.best_trial.model_uri}")

AutoML이 지원하는 문제 유형

문제 유형함수평가 지표
분류 (Classification)automl.classify()F1, Accuracy, ROC-AUC
회귀 (Regression)automl.regress()RMSE, MAE, R²
시계열 예측 (Forecasting)automl.forecast()SMAPE, RMSE

AutoML의 핵심 장점

장점설명
자동 전처리결측값 처리, 범주형 인코딩, 피처 스케일링을 자동으로 수행합니다
다양한 알고리즘XGBoost, LightGBM, Random Forest, Logistic Regression 등을 모두 시도합니다
노트북 생성각 시행(trial)의 전체 코드를 노트북으로 자동 생성합니다. 결과를 검토하고 커스터마이즈할 수 있습니다
MLflow 자동 연동모든 실험 결과가 MLflow에 자동 로깅됩니다
피처 중요도SHAP 기반 피처 중요도를 자동으로 계산합니다
💡 AutoML이 생성하는 노트북을 활용하세요. AutoML은 블랙박스가 아닙니다. 최적 모델의 학습 코드가 담긴 노트북이 자동 생성되므로, 이를 기반으로 추가 커스터마이징이 가능합니다.

분산 학습 (Distributed Training)

TorchDistributor

Databricks ML Runtime은 TorchDistributor 를 통해 PyTorch 모델의 멀티 GPU / 멀티 노드 분산 학습을 지원합니다.
from pyspark.ml.torch.distributor import TorchDistributor

def train_function():
    import torch
    import torch.distributed as dist

    # 분산 환경 자동 초기화
    dist.init_process_group("nccl")
    rank = dist.get_rank()
    device = torch.device(f"cuda:{rank}")

    # 모델 정의 및 DDP 래핑
    model = MyModel().to(device)
    model = torch.nn.parallel.DistributedDataParallel(model, device_ids=[rank])

    # 학습 루프
    for epoch in range(10):
        train_one_epoch(model, device)

# 4개 GPU에서 분산 학습 실행
distributor = TorchDistributor(
    num_processes=4,       # 총 GPU 수
    local_mode=False,      # False = 여러 노드에 분산
    use_gpu=True
)
distributor.run(train_function)

DeepSpeed 연동

대규모 LLM 학습에는 DeepSpeed를 활용할 수 있습니다.
# DeepSpeed ZeRO-3로 LLM 파인튜닝
from pyspark.ml.torch.distributor import TorchDistributor

def train_with_deepspeed():
    import deepspeed
    model_engine, optimizer, _, _ = deepspeed.initialize(
        model=model,
        config="ds_config.json"  # ZeRO-3 설정
    )
    # 학습 루프...

distributor = TorchDistributor(num_processes=8, use_gpu=True, local_mode=False)
distributor.run(train_with_deepspeed)

라이브러리 관리

ML Runtime에 포함되지 않은 라이브러리가 필요한 경우 추가 설치할 수 있습니다.

설치 방법

방법범위설명
%pip install노트북/클러스터 세션현재 노트북에서만 유효
클러스터 라이브러리클러스터 전체클러스터 설정에서 라이브러리 추가
Init Script클러스터 시작 시클러스터 시작할 때마다 자동 실행
requirements.txtJob/PipelineJob 설정에서 의존성 파일 지정
# 노트북에서 추가 라이브러리 설치
%pip install sentence-transformers==2.2.2 faiss-cpu==1.7.4

# 설치 후 반드시 restart
dbutils.library.restartPython()
⚠️ %pip install은 기존 라이브러리의 버전을 변경할 수 있습니다. 이로 인해 MLflow나 다른 사전 설치 라이브러리와 충돌이 발생할 수 있으므로, 버전 충돌 여부를 주의하세요.

Runtime 버전 선택 가이드

상황권장 Runtime
최신 라이브러리 필요최신 ML Runtime (예: 16.x ML)
프로덕션 안정성 우선LTS(Long Term Support) ML Runtime
GPU 학습 필요ML Runtime GPU
기존 코드 호환성 유지현재 사용 중인 Runtime 유지
💡 LTS (Long Term Support): 장기 지원 버전으로, 보안 패치를 2년간 받을 수 있습니다. 프로덕션 환경에서는 LTS를 권장합니다.
질문조건권장 런타임
워크로드 유형은?데이터 엔지니어링/SQLStandard Runtime
워크로드 유형은?ML 모델 학습 → GPU 불필요 (sklearn, XGBoost)ML Runtime (CPU)
워크로드 유형은?ML 모델 학습 → GPU 필요 → 소~중형 모델ML Runtime GPU (g5.xlarge)
워크로드 유형은?ML 모델 학습 → GPU 필요 → 대형 LLM 파인튜닝ML Runtime GPU (p4d.24xlarge)

현업 사례: ML Runtime 버전을 업그레이드했더니 모델 재현이 안 되는 문제

현업에서 가장 흔하고 가장 고통스러운 문제 중 하나입니다. “어제까지 잘 돌던 모델이 오늘 다른 결과를 냅니다.”

사례: 금융사 신용평가 모델

[상황]
- 신용평가 모델: XGBoost 기반, MLflow로 관리
- Runtime 14.3 LTS ML에서 개발 및 학습
- 규정상 분기별 모델 재학습 필요
- 재학습 시 Runtime을 15.4 LTS ML로 업그레이드

[문제]
- 같은 코드, 같은 데이터, 같은 하이퍼파라미터인데 AUC가 0.872 → 0.861로 하락
- 규제 당국 보고 기준인 0.870을 밑돌아 모델 승인 불가
- 원인 분석에 2주 소요

[원인]
- Runtime 14.3: XGBoost 1.7.6, scikit-learn 1.3.0, NumPy 1.24.x
- Runtime 15.4: XGBoost 2.0.3, scikit-learn 1.4.2, NumPy 1.26.x
- XGBoost 2.0에서 기본 tree_method가 변경됨 (exact → hist)
- NumPy의 난수 생성 방식이 미묘하게 달라짐

LTS 선택이 중요한 이유

⚠️ 현업에서는 이렇게 합니다: 프로덕션 ML 모델을 운영한다면 반드시 LTS(Long Term Support) Runtime만 사용 합니다. 비-LTS 버전은 3~6개월마다 EOL되고, 라이브러리 버전이 예고 없이 바뀝니다.
판단 기준LTS Runtime최신 Runtime
보안 패치2년간 제공다음 버전 출시 시 중단
라이브러리 안정성버전 고정, 검증됨최신이지만 호환성 미검증
적합한 환경프로덕션, 규제 산업PoC, 실험, 연구
업그레이드 주기연 1~2회 (계획적)수시 (필요할 때)
Runtime 버전 관리 전략 (현업 권장):
환경전략상세
프로덕션(모델 학습/서빙)LTS Runtime만 사용새 LTS 출시 → 2주간 검증 → 재현성 확인(AUC, F1) → 통과 시 전환, 실패 시 이전 LTS 유지
실험/PoC최신 Runtime 사용 가능새 라이브러리/기능 테스트 → 모델 확정 후 LTS로 전환

GPU 인스턴스 선택 실전 가이드

GPU 인스턴스 선택을 잘못하면 비용이 10배 낭비 됩니다. 현업에서 가장 많이 하는 실수와 올바른 선택법을 공유합니다.

가장 많이 하는 실수

#실수결과올바른 접근
1”GPU가 좋을수록 빠르겠지” → A100을 scikit-learn에 사용A100 시간당 $30+ 인데 CPU로도 충분한 작업scikit-learn, XGBoost는 CPU로 충분. GPU 불필요
2”7B 모델이면 GPU 1개로 되겠지” → 16GB T4에서 OOM7B 모델의 FP16 가중치만 14GB, 추론 시 메모리 추가 필요모델 크기의 2~3배 GPU 메모리 필요
3”멀티 GPU면 2배 빠르겠지” → 통신 오버헤드로 오히려 느림데이터가 작으면 GPU 간 통신 시간 > 학습 시간데이터 10GB 이하면 단일 GPU 추천
4Spot 인스턴스로 12시간 학습 → 11시간째 회수11시간의 연산 결과가 사라짐체크포인트를 30분~1시간마다 저장

모델 크기별 GPU 메모리 필요량

[FP16 기준 최소 GPU 메모리]
모델 파라미터 × 2 bytes (FP16) = 가중치 메모리
+ 추론/학습 오버헤드 (가중치의 1~3배)

| 모델 크기 | 가중치 메모리 | 총 필요 메모리 | 권장 GPU |
|----------|-----------|------------|---------|
| 1B | 2GB | ~6GB | T4 (16GB) |
| 7B | 14GB | ~28GB | A10G (24GB) x2 또는 A100 (40GB) x1 |
| 13B | 26GB | ~52GB | A100 (80GB) x1 또는 A10G x4 |
| 70B | 140GB | ~280GB | A100 (80GB) x4 이상 |
| 405B | 810GB+ | - | A100 x16 이상 (멀티 노드 필수) |
워크로드권장 인스턴스시간당 비용 (대략)핵심 이유
scikit-learn, XGBoostCPU 인스턴스 (m5.2xlarge)~$0.40GPU 불필요, CPU가 더 비용 효율적
소형 모델 추론(<3B)g4dn.xlarge (T4)~$0.53T4는 추론 비용 대비 성능 최고
중형 모델 학습/추론(3~7B)g5.2xlarge (A10G)~$1.2124GB GPU 메모리로 7B까지 커버
대형 모델 파인튜닝(7~13B)g5.12xlarge (A10G × 4)~$5.6796GB GPU 메모리, 단일 노드
LLM 파인튜닝(13~70B)p4d.24xlarge (A100 × 8)~$32.77320GB GPU 메모리, NVLink 대역폭
💡 현업 팁: GPU 비용은 시간 × 인스턴스 수 입니다. A100 1대에서 10시간 걸리는 학습이 A100 4대에서 3시간이면, 4대가 더 비용 효율적입니다 (10시간 vs 12시간 GPU 시간). 하지만 분산 학습의 통신 오버헤드로 선형 확장은 되지 않으므로, 반드시 벤치마크 후 결정하세요.

커스텀 라이브러리 설치 시 주의사항

ML Runtime에 포함되지 않은 라이브러리를 설치할 때 벌어지는 현실적인 문제들입니다.

흔한 사고 시나리오

[시나리오 1: 의존성 지옥]
%pip install transformers==4.40.0
→ 이 버전이 tokenizers>=0.19.0을 요구
→ tokenizers 업그레이드가 huggingface_hub를 업그레이드
→ huggingface_hub 업그레이드가 MLflow와 충돌
→ MLflow 자동 로깅이 깨짐
→ 모든 실험 결과가 MLflow에 기록되지 않음 (발견까지 3일 소요)

[시나리오 2: Init Script 실패]
클러스터 시작 시 Init Script로 라이브러리 설치
→ PyPI 서버 일시 장애
→ 라이브러리 설치 실패
→ 클러스터 시작 실패
→ 스케줄된 Job 전체 실패 (새벽 3시 알림 폭탄)

안전한 라이브러리 관리 전략

전략방법적합한 환경
버전 완전 고정%pip install library==x.y.z (반드시 == 사용)프로덕션
requirements.txt 관리파일로 의존성 관리, Git에 커밋팀 공유 환경
컨테이너 이미지커스텀 Docker 이미지 사용복잡한 의존성
클러스터 정책라이브러리 설치 제한거버넌스 필요 시
# 안전한 설치 패턴
%pip install sentence-transformers==2.2.2 faiss-cpu==1.7.4 --no-deps
# --no-deps: 의존성 자동 업그레이드 방지 (수동 관리 필요하지만 안전)

# 설치 후 반드시 확인
%pip list | grep -E "mlflow|torch|transformers"
# MLflow, PyTorch 등 핵심 라이브러리 버전이 변하지 않았는지 확인
⚠️ 현업에서는 이렇게 합니다: 프로덕션 Job에서는 %pip install을 절대 사용하지 않습니다. 대신 (1) 테스트 환경에서 의존성을 확인하고, (2) requirements.txt를 확정한 후, (3) 클러스터 라이브러리 또는 Docker 이미지로 고정합니다. PyPI 서버 장애로 프로덕션이 멈추는 것은 용납할 수 없습니다.

정리

핵심 개념설명
ML RuntimeML 라이브러리가 사전 설치되고 호환성이 검증된 Databricks Runtime입니다
GPU RuntimeCUDA/cuDNN GPU 드라이버가 포함되어 딥러닝에 사용합니다
AutoML데이터를 주면 자동으로 최적의 모델을 학습하고 노트북을 생성합니다
TorchDistributor멀티 GPU / 멀티 노드 분산 학습을 간편하게 실행합니다
LTS Runtime프로덕션 환경에 권장되는 장기 지원 버전입니다

참고 링크