🎯 目標
建立一個 跨階段的 Flyte Workflow:
抓資料並清洗 (ETL)
匯入 MySQL(更新 evidence 表)
準備特徵資料集
訓練 ML 模型
匯出 ONNX 模型
能一鍵觸發,完成全套「資料 → 模型」流程
為後續 Day19 的 部署 / 自動化觸發 做準備
🏗️ Pipeline 設計
Workflow:wf_etl_train_pipeline(effect_id: str)
t_fetch_sources(Day16)
讀取 evidence_E001.auto.csv / evidence_E002.auto.csv
t_clean_validate(Day16)
清洗後存成 clean.parquet
t_load_mysql(Day16)
寫入 mymall.evidence
t_prepare_dataset(Day17)
從 DB 或 parquet 生成 (X_train, y_train)
輸出到 train.parquet
t_train_model(Day17)
使用 sklearn / pytorch 訓練
輸出 model.pkl
t_export_onnx(Day17)
輸出 recommender_${effect_id}.onnx
路徑:data/models/
t_evaluate_model(Day17)
輸出 metrics.json(accuracy, f1, auc)
🧰 技術重點
Flyte Workflow 串接:
wf_etl_day3 和 wf_train_pipeline 原本是分開的
Day18 要整合成一個 pipeline
在 Flyte UI 上能看到 一條完整 DAG
成果管理
data/models/recommender_E001.onnx
data/models/recommender_E002.onnx
data/metrics/metrics_E001.json
版本控制
每次 pipeline 跑完,產生一個時間戳目錄,例如:
✅ 驗收標準
Pipeline 可跑通,一次完成 ETL + 訓練 + 匯出
Flyte UI DAG 清楚顯示各個 task
metrics.json 中至少有一個評估指標(accuracy/f1)
Spring Boot /api/recommendations/ai 成功讀取最新 ONNX
📦 今日交付
workflows/pipeline_day18.py
wf_etl_train_pipeline(effect_id: str)
outputs/2025-09-18Txx-xx-xx/
recommender_E001.onnx
metrics_E001.json