1. 15:42 14/10/2026
Giới thiệu
AutoML giúp giảm thiểu công sức thủ công khi tìm kiếm mô hình và siêu tham số tối ưu cho dữ liệu bảng. Bài viết này chia sẻ cách kết hợp Optuna (tối ưu hóa), MLflow (theo dõi thí nghiệm) và FastAPI (phục vụ API) để xây dựng một pipeline AutoML hoàn chỉnh, sẵn sàng cho production.
Các thành phần chính
- Optuna: thuật toán tìm kiếm Bayesian, hỗ trợ pruning để dừng sớm các trial kém hiệu quả.
- MLflow: lưu trữ metrics, parameters, artifacts và model registry cho mỗi trial.
- FastAPI:Expose endpoint /predict và /retrain để ứng dụng gọi mô hình tốt nhất hoặc kích hoạt huấn luyện lại tự động.
- Docker & docker‑compose: đóng gói toàn bộ stack để triển khai nhất quán trên máy chủ hoặc Kubernetes.
Quy trình triển khai
1. Chuẩn bị dữ liệu: chia train/validation/test, lưu dưới dạng Parquet và đăng ký vào MLflow dataset.
2. Định nghĩa không gian tìm kiếm: số lớp, số neuron, learning rate, dropout, loại optimizer. Sử dụng `optuna.trial.suggest_*` trong hàm objective.
3. Huấn luyện trong objective: train mô hình (ví dụ LightGBM hoặc MLP PyTorch) trên train set, đánh giá trên validation set, log metrics vào MLflow (`mlflow.log_metric`).
4. Pruning: gọi `trial.report` và `trial.should_prune` sau mỗi epoch để tiết kiệm tài nguyên.
5. Sau khi study kết thúc, lấy best trial, đăng ký model vào MLflow Model Registry với stage "Production".
6. Xây dựng FastAPI service: load model từ registry (`mlflow.pyfunc.load_model`) và cung cấp endpoint dự đoán. Thêm endpoint /retrain để trigger Optuna study mới khi dữ liệu drift.
7. Container hóa: Dockerfile cài đặt dependencies, copy code, entrypoint chạy `uvicorn main:app --host 0.0.0.0 --port 8000`.
8. Giám sát: tích hợp Prometheus/Grafana để theo dõi latency, error rate và số lần retrain.
Ví dụ thực tế
Một'équipe fintech sử dụng pipeline này để dự đoán rủi ro tín dụng hàng ngày. Dữ liệu mới được nạp mỗi đêm, pipeline tự động chạy retrain nếu data drift vượt ngưỡng (được phát hiện bởi Evidently). Mô hình tốt nhất sau mỗi chu kỳ được đẩy lên registry và FastAPI reload mà không downtime.
Lời khuyên áp dụng
- Luôn version dữ liệu và code cùng nhau (DVC + Git) để tái hiện trial.
- Giới hạn số trial và thời gian chạy (timeout) để tránh chi phí GPU quá lớn.
- Sử dụng MLflow Projects để đóng gói entry point, giúp chạy study trên nhiều môi trường (local, cloud).
- Triển khai canary cho model mới: route 10% traffic sang version mới, quan sát metrics trước khi promote.
- Tự động hóa cleanup artifact cũ trong MLflow để tránh đầy ổ đĩa.