🛠️ 실데이터 학습 파이프라인 구축
TMS AI 라우팅 엔진 · Airflow DAG · MLflow 버전 관리 · 자동 롤백 · 김지훈 수석연구원 · 연구노트 5p 대응
RT-T1~T4까지는 수십~수백 건의 소규모 샘플로 모델을 검증했다. RT-T5는 실제 운영 환경에서 축적된 6개월치 배차 이력(약 12만 건)을 활용하여 Airflow DAG 기반 일 1회 자동 재학습 체계를 확립한다. 새벽 2시에 매일 실행되며, 전처리·학습·평가·배포의 전 단계를 멱등(idempotent)하게 수행하여 장애 발생 시 안전하게 재실행할 수 있다.
모델 버전 관리는 MLflow가 담당한다. 실험별 run_id, 피처 목록, 하이퍼파라미터, Recall@3, OTIF가 자동으로 기록되며, 승격 조건을 만족하는 경우에만 Production 태그가 이동한다. 배포 이후 OTIF가 2%p 이상 하락하면 전 버전으로 즉시 롤백한다.
운영 DB에서 전일 배차 이력·실적을 추출하여 스테이징 영역에 저장. 멱등(idempotent) 보장.
시간·지역·친숙도·교통·날씨 피처 계산 · 정규화 · 결측 처리 후 학습셋(X, y, group) 생성.
LightGBM Ranker(LambdaRank) 500 iters 학습. MLflow에 run_id·피처 목록·하이퍼파라미터 자동 기록.
Hold-out 세트에서 Recall@3, OTIF 측정. 승격 조건을 만족하는지 게이트 판정.
조건 충족 시 MLflow Production 태그를 신규 버전으로 이동. 실패 시 스킵하고 이전 버전 유지.
# 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
Recall@3new ≥ Recall@3prev − 0.01OTIFnew ≥ 96%OTIFdeployed − OTIFpost-deploy > 2%prun_id·피처 목록·하이퍼파라미터·Recall@3·OTIF를 실험별 자동 기록-0.01 이내 + OTIF ≥96% 두 게이트 통과 필수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)