티스토리 뷰

반응형

머신러닝 기초학습 9: AutoML과 파이프라인 자동화 — 데이터 → 학습 → 배포까지 ‘완전 자동화’하는 법


“모델 학습과 배포를 매번 수동으로 돌릴 필요가 있을까?”

정답은 아니오입니다.

현대 머신러닝의 흐름은 자동화(AutoML + Pipeline) 입니다.
모델 개발자는 로직과 아이디어에 집중하고,
반복적이고 기계적인 작업은 시스템이 대신 처리하는 시대입니다.

이번 글에서는
AutoML, ML 파이프라인 자동화, 학습/배포의 완전 자동화 구조
실제 현업 기준으로 설명합니다.


1. AutoML이란 무엇인가?

AutoML(Automated Machine Learning)은
머신러닝의 전 과정을 자동화하는 기술입니다.

AutoML이 해주는 일들

  • 데이터 전처리 자동화
  • 피처 엔지니어링 자동화
  • 최적 모델 탐색 (알고리즘 선택)
  • 하이퍼파라미터 튜닝
  • 교차검증
  • 성능 평가
  • 모델 선택 및 저장

즉, “사람이 하던 대부분의 반복 실험”을 자동으로 처리해줍니다.


2. AutoML 기술의 종류

AutoML 종류 특징 대표 라이브러리

Single-Model 기반 모델 구조 자동 탐색 AutoKeras, AutoPyTorch
Pipeline 기반 전처리 + 모델 조합 자동 Auto-sklearn, TPOT
Cloud AutoML 서비스형 AutoML Google Vertex AI, AWS SageMaker Autopilot
튜닝 Expert 기반 HyperParameter 최적화 Optuna, Hyperopt, skopt

우리는 여기서 Pipeline 기반 AutoML튜닝 기반 AutoML 을 중심으로 설명합니다.


3. Auto-sklearn으로 자동 파이프라인 생성

반응형

Auto-sklearn은 머신러닝 실무에서 가장 실용적인 AutoML 도구 중 하나입니다.

특징

  • 여러 모델을 자동으로 실험
  • 전처리 자동 적용
  • 하이퍼파라미터 자동 튜닝
  • 성능 좋은 모델 조합으로 앙상블 생성
  • 실험 시간 제한 가능

실습 코드

import autosklearn.classification
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

X, y = load_digits(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)

automl = autosklearn.classification.AutoSklearnClassifier(
    time_left_for_this_task=120,     # 전체 자동화 시간
    per_run_time_limit=30,           # 한 모델당 제한 시간
    ensemble_size=30
)

automl.fit(X_train, y_train)
pred = automl.predict(X_test)
print("정확도:", accuracy_score(y_test, pred))
print(automl.show_models())

자동으로

  • 데이터 전처리
  • 피처 선택
  • 모델 탐색
  • 하이퍼파라미터 조정
  • 앙상블 결합
    까지 수행합니다.

4. TPOT: 유전 알고리즘 기반 AutoML

TPOT은 유전 알고리즘(GA) 방식으로
“좋은 모델 조합 + 전처리 조합”을 탐색하는 방식입니다.

작동 방식

  1. 여러 후보 모델 생성
  2. 성능 좋은 모델을 “부모”로 선택
  3. 교배·돌연변이로 새로운 모델 생성
  4. 반복 → 최적 파이프라인 탐색

코드

from tpot import TPOTClassifier
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split

X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)

tpot = TPOTClassifier(
    generations=5,
    population_size=20,
    verbosity=2,
    max_time_mins=5
)

tpot.fit(X_train, y_train)
print(tpot.score(X_test, y_test))
tpot.export("best_pipeline.py")

5. Optuna로 고정 모델을 튜닝하는 AutoML

Optuna는 “하이퍼파라미터 최적의 조합”을 찾아주는 고급 튜닝 라이브러리입니다.

핵심 특징

  • Bayesian Optimization 기반
  • 빠르고 강력
  • 딥러닝, LightGBM, XGBoost 등에 특히 강함
  • pruning 기능으로 불필요한 실험 자동 중단

실습 코드

import optuna
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score
from sklearn.datasets import load_iris

X, y = load_iris(return_X_y=True)

def objective(trial):
    n_estimators = trial.suggest_int("n_estimators", 50, 400)
    max_depth = trial.suggest_int("max_depth", 2, 20)
    clf = RandomForestClassifier(
        n_estimators=n_estimators,
        max_depth=max_depth,
        random_state=42
    )
    return cross_val_score(clf, X, y, cv=5).mean()

study = optuna.create_study(direction="maximize")
study.optimize(objective, n_trials=30)

print(study.best_params)

6. 자동 파이프라인 구성: Airflow 사용

AutoML로 모델만 자동화하는 건 시작일 뿐.
데이터 → 전처리 → 학습 → 평가 → 배포
전체 흐름이 자동화되어야 합니다.

Airflow DAG 예시:

from airflow import DAG
from airflow.operators.python import PythonOperator
from datetime import datetime

def fetch_data():
    pass

def preprocess():
    pass

def train_model():
    pass

def evaluate():
    pass

def deploy():
    pass

with DAG("ml_pipeline", start_date=datetime(2025, 1, 1), schedule_interval="@daily") as dag:
    t1 = PythonOperator(task_id="fetch", python_callable=fetch_data)
    t2 = PythonOperator(task_id="preprocess", python_callable=preprocess)
    t3 = PythonOperator(task_id="train", python_callable=train_model)
    t4 = PythonOperator(task_id="evaluate", python_callable=evaluate)
    t5 = PythonOperator(task_id="deploy", python_callable=deploy)

    t1 >> t2 >> t3 >> t4 >> t5

7. MLflow로 실험 관리 + 모델 저장/배포 자동화

MLflow는 실무에서 가장 중요한 MLOps 도구입니다.

MLflow가 하는 일

  • 실험 기록 (metric, parameter, artifact)
  • 모델 저장/로딩
  • 모델 레지스트리
  • REST API 배포

기본 코드

import mlflow
import mlflow.sklearn
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)

with mlflow.start_run():
    model = RandomForestClassifier()
    model.fit(X_train, y_train)

    mlflow.log_param("n_estimators", model.n_estimators)
    mlflow.log_metric("accuracy", model.score(X_test, y_test))
    mlflow.sklearn.log_model(model, "model")

8. 완전 자동화 예시 (전체 플로우)

1) 데이터 수집

  • S3, DB, API에서 자동으로 패치
  • Airflow DAG로 일일 자동 실행

2) 전처리

  • 결측치/스케일링/인코딩 자동 수행
  • 파이프라인 저장: preprocessor.pkl

3) AutoML로 학습

  • Auto-sklearn 또는 Optuna

4) MLflow로 성능 기록

  • 성능이 기존 모델보다 좋으면 “Production”으로 승격

5) Docker 이미지 자동 생성

  • GitHub Actions로 자동 빌드

6) API/K8s로 자동 배포

  • FastAPI + Docker → Kubernetes → 서비스 반영

7) 모니터링

  • 모델 Drift 감지
  • 성능 감소 시 Airflow가 재학습 수행

9. AutoML & MLOps의 철학

원칙 설명

반복은 자동화하라 사람이 하는 반복 작업은 오류를 만든다
모든 단계는 버전 관리 데이터/모델/전처리/파이프라인
자동 평가 → 자동 배포 성능 기준을 코드로 정의
데이터 기반 재학습 데이터 drift 발생 시 자동 업데이트

10. 결론

AutoML은
“모델을 만드는 일” → “모델이 스스로 성장하도록 만드는 일”
로 넘어가게 해주는 기술입니다.

파이프라인 자동화는
“데이터 → 학습 → 배포 → 모니터링 → 재학습”
전 과정을 연결하는 실무 핵심 역량입니다.


📘 다음 글 예고

👉 머신러닝 기초학습 10(마지막): 머신러닝 프로젝트 완성 — 데이터 설계부터 운영까지 A~Z 실제 예제

실제 하나의 ML 프로젝트를
기획 → 데이터 수집 → 모델링 → 튜닝 → 해석 → 배포 → MLOps 운영
전 과정으로 보여주는 ‘완전체 튜토리얼’을 작성합니다.



머신러닝,AutoML,MLOps,Airflow,MLflow,AutoSklearn,TPOT,Optuna,Pipeline자동화,모델배포

※ 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
글 보관함
반응형