So sánh Airflow, MLflow và Kubeflow trong MLOps
Machine learning hiện nay đang tập trung nhiều hơn vào dữ liệu (data-centric AI), và MLOps rõ ràng là con đường để đưa các dự án ML vào production. Hôm nay, mình sẽ điểm qua ba framework MLOps phổ biến: Airflow, MLflow và Kubeflow. Mục tiêu là trả lời hai câu hỏi:
- Sự khác biệt giữa các framework này là gì?
- Nên sử dụng framework nào cho hệ thống MLOps hiện đại?
I. Tổng quan
Trước tiên, hãy cùng tìm hiểu từng framework để xem chúng cung cấp những tính năng gì cho hệ thống MLOps của bạn.
1. Airflow
Airflow là một framework toàn diện cho workflow orchestration (điều phối luồng công việc – bao gồm viết, lên lịch và giám sát workflow). Một workflow có thể là một DAG (Directed Acyclic Graph – đồ thị có hướng không chu trình) của các bước ML như hình dưới đây:
Airflow có thể được cài đặt dưới dạng Python package, Docker containers (dùng docker-compose
), hoặc trên cụm Kubernetes. Airflow là lựa chọn tốt cho cả hệ thống quy mô nhỏ và lớn. Nó cũng rất thân thiện với Kubernetes: tích hợp dễ dàng và hiệu quả.
2. MLflow
MLflow là một công cụ quản lý dự án ML, theo dõi thí nghiệm, quản lý và lưu trữ mô hình. Gói Python mlflow
cung cấp API để quản lý các thí nghiệm, chạy thử, ghi log thông số, chỉ số, artifact và đăng ký mô hình. Nó còn hỗ trợ kiểm soát phiên bản của mô hình và artifact.
Framework này có thể được cài bằng Python package hoặc trong Docker container (hướng dẫn). MLflow có thể hoạt động trong nhiều kịch bản, từ ổ đĩa cục bộ, đến tracking server từ xa, database server riêng và lưu trữ artifact trên host tách biệt.
Ví dụ triển khai:
- MLflow với lưu trữ file cục bộ cho cả artifact và cơ sở dữ liệu:
- MLflow với tracking server, host artifact và cơ sở dữ liệu từ xa:
3. Kubeflow
Trong khi Airflow là framework điều phối workflow tổng quát (không dành riêng cho ML), còn MLflow là framework quản lý dự án ML (không có tính năng orchestration), thì Kubeflow được thiết kế là một nền tảng cloud-native đầy đủ cho MLOps – bao gồm pipeline, quản lý huấn luyện và triển khai mô hình.
Kubeflow được xây dựng dành cho hệ thống quy mô lớn ngay từ đầu và yêu cầu có Kubernetes để chạy.
4. Mức độ phổ biến
Mức độ phổ biến của một framework phản ánh độ ổn định, trưởng thành, tài liệu và cộng đồng hỗ trợ. Số lượng star trên GitHub là một chỉ số tham khảo tốt. Biểu đồ dưới đây thể hiện lịch sử star của Airflow, MLflow và Kubeflow:
Tại thời điểm 28/07/2025 cho thấy Airflow được sử dụng rộng rãi hơn, có thể vì nó dùng cho nhiều tác vụ cần điều phối workflow, không chỉ ML như MLflow hoặc Kubeflow.
II. Airflow + MLflow vs. Kubeflow
Để có hệ thống MLOps đầy đủ tính năng, Airflow cần kết hợp với MLflow, trong khi Kubeflow có thể cung cấp gần như toàn bộ tính năng MLOps.
Dưới đây là so sánh giữa hai stack: Airflow + MLflow
và Kubeflow
:
1. Điều phối workflow & truyền dữ liệu
Cả Airflow và Kubeflow đều hỗ trợ điều phối workflow. Tuy nhiên, Kubeflow Pipelines được thiết kế thân thiện hơn với ML: nó có chuẩn để truyền dữ liệu giữa các bước (inputValue/outputValue hoặc artifact).
Trong khi đó, Airflow dùng XCOM (key-value) nhưng phải tự xây dựng logic truyền artifact. Khi kết hợp với MLflow, có thể tận dụng tính năng artifact logging để truyền dữ liệu giữa các operator.
2. Theo dõi thí nghiệm và ghi log
Cả MLflow và Kubeflow đều hỗ trợ theo dõi thí nghiệm và logging. Tuy nhiên, các hàm logging trong gói mlflow
dễ dùng hơn Kubeflow. MLflow cũng hỗ trợ ghi và truy xuất lịch sử metric (như loss, accuracy…) trong quá trình huấn luyện, điều mà Kubeflow chưa có.
3. Đăng ký và phục vụ mô hình
MLflow có cơ chế đăng ký mô hình đơn giản theo tên, còn Kubeflow dùng ML Metadata khá phức tạp. Tuy nhiên, về phục vụ mô hình (model serving), Kubeflow mạnh hơn với KServe và các addon khác.
4. Tính năng ML chuyên biệt trong Kubeflow
Một số tính năng Kubeflow có mà Airflow + MLflow không có:
- Kubeflow Notebooks: tạo và chạy JupyterLab ngay trên cluster Kubernetes
- Katib: tối ưu siêu tham số và tìm kiến trúc mạng (NAS)
- Addon mở rộng: hỗ trợ nhiều bài toán data science và nền tảng khác nhau
5. Khả năng mở rộng
- Airflow + MLflow linh hoạt hơn: chạy được từ máy cá nhân (Python, Docker, Compose) đến Kubernetes.
- Kubeflow luôn cần Kubernetes → phù hợp với hệ thống lớn, chuyên nghiệp.
Airflow cũng có thể chạy trên Kubernetes cloud nhờ KubernetesPodOperator hoặc Kubernetes Executor.
6. Chọn stack nào?
Tóm lại, theo quan điểm cá nhân:
- ❇️ Nếu bạn cần điều phối nhiều loại workflow (không chỉ ML) → chọn Airflow (đa năng, mature)
- 🚀 Nếu bạn triển khai hệ thống ML lớn, muốn dùng các thành phần ML dựng sẵn → chọn Kubeflow
- 💻 Nếu bạn làm hệ thống nhỏ (máy cá nhân, workstation) → chọn Airflow + MLflow để tránh phải setup Kubernetes
Kết luận: Bài viết này đã so sánh nhanh giữa Airflow, MLflow và Kubeflow, giúp bạn lựa chọn giữa hai hướng tiếp cận: Airflow + MLflow hoặc Kubeflow.
📚 Nguồn gốc bài viết: https://www.vietanh.dev/blog/2022-03-26-airflow-mlflow-or-kubeflow-for-mlops