RT-T5: 실데이터 학습 파이프라인

🎯 실데이터 학습 파이프라인 개요소규모 샘플 → 6개월치 12만 건 운영 데이터

RT-T1~T4까지는 수십~수백 건의 소규모 샘플로 모델을 검증했다. RT-T5는 실제 운영 환경에서 축적된 6개월치 배차 이력(약 12만 건)을 활용하여 Airflow DAG 기반 일 1회 자동 재학습 체계를 확립한다. 새벽 2시에 매일 실행되며, 전처리·학습·평가·배포의 전 단계를 멱등(idempotent)하게 수행하여 장애 발생 시 안전하게 재실행할 수 있다.

모델 버전 관리는 MLflow가 담당한다. 실험별 run_id, 피처 목록, 하이퍼파라미터, Recall@3, OTIF가 자동으로 기록되며, 승격 조건을 만족하는 경우에만 Production 태그가 이동한다. 배포 이후 OTIF가 2%p 이상 하락하면 전 버전으로 즉시 롤백한다.

🌀 Airflow DAG 구조schedule_interval = "0 2 * * *"
STEP 1
extract_route_data

운영 DB에서 전일 배차 이력·실적을 추출하여 스테이징 영역에 저장. 멱등(idempotent) 보장.

STEP 2
feature_engineering

시간·지역·친숙도·교통·날씨 피처 계산 · 정규화 · 결측 처리 후 학습셋(X, y, group) 생성.

STEP 3
train_lgbm

LightGBM Ranker(LambdaRank) 500 iters 학습. MLflow에 run_id·피처 목록·하이퍼파라미터 자동 기록.

STEP 4
evaluate_model

Hold-out 세트에서 Recall@3, OTIF 측정. 승격 조건을 만족하는지 게이트 판정.

STEP 5
deploy_if_better

조건 충족 시 MLflow Production 태그를 신규 버전으로 이동. 실패 시 스킵하고 이전 버전 유지.

🐍 Airflow DAG 수도코드
# Airflow DAG 정의
dag = DAG("tms_ai_retrain", schedule_interval="0 2 * * *")

extract   = PythonOperator(task_id="extract_route_data", ...)
transform = PythonOperator(task_id="feature_engineering", ...)
train     = PythonOperator(task_id="train_lgbm", ...)
evaluate  = PythonOperator(task_id="evaluate_model", ...)
deploy    = PythonOperator(task_id="deploy_if_better", ...)

extract >> transform >> train >> evaluate >> deploy
📦 MLflow 승격 & 롤백 정책실험 추적 · 게이트 조건 · 자동 복구
Recall@3newRecall@3prev0.01
AND
OTIFnew96%
# 두 조건을 모두 충족하면 Production 태그 이동, 아니면 배포 스킵
ROLLBACKOTIFdeployedOTIFpost-deploy > 2%p
# 배포 후 24시간 OTIF 2%p 이상 하락 시 이전 버전으로 자동 복구
trackMLflow가 run_id·피처 목록·하이퍼파라미터·Recall@3·OTIF를 실험별 자동 기록
promoteRecall@3 회귀 허용폭 -0.01 이내 + OTIF ≥96% 두 게이트 통과 필수
rollback실측 OTIF 하락폭 2%p 초과 시 추론 트래픽 중단 없이 이전 버전 승계

모델 아티팩트(.lgb)와 feature_schema.json은 버전별로 MLflow Registry에 보관되며, Production·Staging·Archived 3 단계의 스테이지 태그로 전이가 관리된다. 담당자는 MLflow UI에서 각 버전의 성능 지표 추이를 비교하고, 이상 감지 시 수동 롤백도 가능하다.

참고문헌
[1] MLflow Docs, "Model Registry and Stage Transitions" (2025.10)
[2] Apache Airflow Docs, "TaskFlow API and XCom" (2025.09)