Khóa học
MLOps là một phần quan trọng của machine learning vì nó giúp tự động hóa việc huấn luyện và triển khai các mô hình machine learning. Sự tự động hóa này có thể giúp tăng tốc quá trình phát triển và đưa mô hình vào vận hành, đồng thời đảm bảo mô hình được triển khai đúng cách. MLOps cũng hỗ trợ giám sát hiệu năng của mô hình và chủ động phát hiện các vấn đề có thể cần xử lý trong môi trường sản xuất.
Bức tranh MLOps năm 2022 bao gồm nhiều công cụ và dịch vụ giúp tổ chức tự động hóa việc xây dựng, huấn luyện và triển khai mô hình machine learning. Các công cụ và dịch vụ này được thiết kế để phối hợp với nhau, khiến quy trình MLOps hiệu quả hơn và dễ quản lý hơn. MLflow là một công cụ quan trọng như vậy mà chúng ta sẽ khám phá trong bài viết này.
MLflow là một nền tảng mã nguồn mở dành cho toàn bộ vòng đời machine learning từ đầu đến cuối. Nó cho phép nhà khoa học dữ liệu theo dõi thí nghiệm, tái lập các lần chạy và phục vụ mô hình của họ dưới dạng các endpoint. Trong bài viết này, chúng ta sẽ đi sâu vào MLflow là gì và cách bạn có thể tận dụng nền tảng mã nguồn mở tuyệt vời này để theo dõi và triển khai các thí nghiệm machine learning.
Nếu bạn muốn tìm hiểu kỹ hơn về MLOps, hãy xem Hướng dẫn Machine Learning, Pipelines, Triển khai và MLOps của chúng tôi.
MLflow là gì
MLflow là một nền tảng mã nguồn mở để quản lý vòng đời machine learning từ đầu đến cuối. Nó cung cấp một nơi trung tâm để theo dõi thí nghiệm, chia sẻ mã và mô hình, và triển khai mô hình vào sản xuất. MLflow cũng bao gồm một số thuật toán và gói tích hợp sẵn cho các bộ công cụ ML phổ biến. Nó có bốn chức năng chính:
- MLflow Tracking. Theo dõi các thí nghiệm machine learning để ghi lại, phân tích và so sánh kết quả và tham số.
- MLflow Projects. Đóng gói mã machine learning thành dạng có thể tái sử dụng và tái lập để chia sẻ với nhà khoa học dữ liệu khác hoặc chuyển vào môi trường sản xuất.
- MLflow Models. Quản lý và triển khai các mô hình lấy từ nhiều thư viện machine learning tới nhiều nền tảng phục vụ và suy luận mô hình khác nhau như Amazon Sagemaker.
- MLflow Model Registry. Cung cấp kho mô hình tập trung để quản lý cộng tác toàn bộ vòng đời của một mô hình MLflow, bao gồm quản lý phiên bản, chuyển trạng thái và chú thích.

Nguồn ảnh: https://www.databricks.com/wp-content/uploads/2021/02/mlflow-components2.png
MLflow không bị ràng buộc với bất kỳ thư viện nào. Vì tất cả chức năng có thể truy cập qua REST API và giao diện dòng lệnh, bạn có thể dùng nó với bất kỳ thư viện machine learning và ngôn ngữ lập trình nào. Dự án cũng tích hợp sẵn API Python, API R và API Java để bạn tiện sử dụng.
Các khái niệm chính trong MLflow
MLflow Tracking
Khi bạn chạy mã machine learning, thành phần MLflow Tracking cung cấp một API và giao diện người dùng (UI) để ghi log các tham số, phiên bản mã, chỉ số và tệp đầu ra. Sau đó, bạn có thể trực quan hóa kết quả đã log. Nhờ MLflow Tracking, bạn cũng có thể ghi log và truy vấn thí nghiệm bằng Python, REST, R API và Java API.
MLflow Tracking được tổ chức xoay quanh khái niệm run. Mỗi run ghi lại thông tin và siêu dữ liệu chính như thời gian bắt đầu và kết thúc, tệp nguồn, tham số, artifact, chỉ số, thẻ, v.v.
Bạn có thể ghi lại các run bằng API Python, R hoặc Java của MLflow từ bất kỳ đâu, bất kể mã của bạn chạy ở đâu. Ví dụ, bạn có thể ghi chúng trong một chương trình độc lập, trên máy đám mây từ xa hoặc trong notebook tương tác.
Tương tự, bạn có thể tổ chức các run riêng lẻ thành các experiment, là tập hợp các run được nhóm lại cho một mục đích cụ thể. Giao diện dòng lệnh (CLI), phương thức mlflow.create experiment() hoặc REST API là vài lựa chọn để khởi tạo việc tạo một experiment. Người dùng cũng có thể tạo experiment bằng MLflow UI.
Nếu cần, bạn có thể lưu bản ghi các run của MLflow cục bộ vào tệp, tải lên một cơ sở dữ liệu tương thích SQLAlchemy hoặc tải từ xa lên một máy chủ tracking. Mặc định, API Python của MLflow ghi log run cục bộ vào các tệp trong thư mục mlruns tại vị trí chương trình của bạn chạy. Sau đó, bạn có thể xem các run đã log bằng cách khởi chạy ứng dụng mlflow ui.

Nguồn ảnh: https://mlflow.org/docs/latest/_images/scenario_1.png
MLflow Projects
MLflow Projects là cách cấu trúc mã machine learning theo hướng có thể tái sử dụng và tái lập. Bạn có thể dùng projects với bất kỳ thư viện và môi trường phát triển machine learning nào. Mỗi project gồm một thư mục chứa tệp MLproject, mô tả môi trường và tham số của dự án, cùng một tập tệp chứa mã machine learning.
Hiện MLflow hỗ trợ các loại môi trường project sau:
- Môi trường Conda,
- Môi trường Virtualenv,
- Container Docker,
- Môi trường hệ thống.
Bằng cách thêm tệp MLProject, vốn chỉ là một tệp YAML, bạn có thể kiểm soát chi tiết hơn dự án MLflow. Dưới đây là ví dụ tệp MLProject:

Nguồn: https://mlflow.org/docs/latest/projects.html#overview
Khi project không chứa tệp MLproject, MLflow sẽ giả định một số quy ước mặc định như:
- Tên project là tên thư mục.
- Sử dụng môi trường Conda và được chỉ định trong tệp conda.yaml, tệp này phải nằm trong cùng thư mục.
- Bất kỳ tệp .py hoặc .sh nào đều có thể là entry point.
- Mặc định, các entry point không có tham số.

MLflow Models
MLflow Model là một định dạng tiêu chuẩn để đóng gói các mô hình machine learning, sau đó có thể được sử dụng trong nhiều công cụ ở các bước tiếp theo của pipeline. Điều này có thể bao gồm phục vụ thời gian thực qua REST API hoặc quy trình suy luận theo lô. MLflow Model là một trong những thành phần then chốt của MLflow. Nó chỉ định một giao thức cho phép lưu mô hình theo nhiều "flavor" khác nhau, mỗi flavor có thể được một tập công cụ hạ nguồn cụ thể hiểu được.
Mỗi MLflow Model thực chất là một thư mục lưu trữ các tệp tùy ý cùng với một tệp MLmodel ở gốc thư mục, có thể định nghĩa nhiều flavor mà mô hình có thể được nhìn nhận. Nhóm tệp này được gọi chung là MLflow Model.
Ý tưởng cốt lõi tạo nên sức mạnh của MLflow Models là việc sử dụng các flavor, đóng vai trò như một tiêu chuẩn để công cụ triển khai hiểu mô hình. Điều này cho phép nhà phát triển tạo các công cụ có thể tương tác với mô hình từ bất kỳ thư viện ML nào mà không phải tích hợp từng công cụ với từng thư viện. Một flavor "chuẩn" được tất cả công cụ triển khai tích hợp sẵn của MLflow hỗ trợ là "Python Function", mô tả cách chạy mô hình như một hàm Python.
Ví dụ một thư mục MLflow Models sử dụng flavor Scikit-learn:

Nguồn ảnh: https://mlflow.org/docs/latest/models.html
MLflow hỗ trợ sẵn các thư viện sau (dưới dạng flavor mô hình):
- Scikit-learn
- TensorFlow
- PyTorch
- Keras
- Spark MLlib
- XGBoost
- LightGBM
- CatBoost
- Spacy
- Fastai
- Statsmodels
- Prophet
- Hàm Python (tổng quát)
- Hàm R (tổng quát)
- Xem danh sách đầy đủ tại đây
MLflow Model Registry
MLflow Model Registry là kho trung tâm để lưu trữ và quản lý phiên bản các mô hình ML. Nó cung cấp cách theo dõi phả hệ mô hình, so sánh mô hình và triển khai mô hình.
Thành phần MLflow Model Registry là tập hợp các API và giao diện người dùng để cộng tác quản lý toàn bộ vòng đời của một MLflow Model.
Truy cập model registry qua giao diện người dùng (UI) hoặc giao diện lập trình ứng dụng (API) yêu cầu sử dụng backend store có hỗ trợ cơ sở dữ liệu nếu bạn muốn dùng Model Registry.
Đăng ký mô hình bằng MLflow UI:

Nguồn ảnh: https://mlflow.org/docs/latest/model-registry.html#concepts
MLflow Pipelines (thử nghiệm)
MLflow Pipelines là một khả năng mới và vẫn đang ở chế độ thử nghiệm.
Việc phát triển và đưa ứng dụng machine learning vào sản xuất trở nên dễ dàng và tiêu chuẩn hóa hơn nhờ MLflow Pipelines, một khung ý kiến định hướng để cấu trúc các quy trình làm việc MLOps. Nhờ MLflow Pipelines, nhà khoa học dữ liệu có thêm thời gian tập trung xây dựng mô hình chất lượng cao, đồng thời dễ dàng tuân theo các tiêu chuẩn ngành khi tạo ra các sản phẩm machine learning sẵn sàng cho sản xuất.
MLflow Pipelines cũng cho phép kỹ sư machine learning và đội DevOps nhúng các mô hình này vào ứng dụng và phát hành ra sản xuất một cách liền mạch.
MLflow Pipelines cung cấp các mẫu pipeline đạt chất lượng sản xuất cho các dạng bài toán machine learning điển hình như hồi quy và phân loại, và các tác vụ MLOps như tính điểm theo lô. Các pipeline được cấu trúc như các kho git với tệp cấu hình dựa trên YAML và mã Python. Điều này đem lại cho nhà phát triển một cách tiếp cận khai báo để xây dựng ứng dụng ML, giúp giảm lượng mã lặp.
MLflow Pipelines cũng triển khai một bộ thực thi nhận biết bộ nhớ đệm cho các bước pipeline. Điều này đảm bảo chỉ chạy các bước khi có thay đổi trong mã hoặc cấu hình tương ứng. Nhờ đó, nhà khoa học dữ liệu, kỹ sư ML và đội DevOps có thể lặp nhanh trong lĩnh vực chuyên môn của mình. Ngoài ra, việc thực thi pipeline và xem xét đầu ra có thể được thực hiện qua API và giao diện dòng lệnh (CLI) do MLflow cung cấp.
|
Triển khai mô hình machine learning vào sản xuất có vẻ dễ với các công cụ hiện đại, nhưng thường gây thất vọng khi mô hình hoạt động kém hơn trong sản xuất so với lúc phát triển. Nếu bạn muốn học cách thiết kế quy trình làm việc machine learning bằng Python có giá trị lâu dài, hãy xem khóa học Designing Machine Learning Workflows in Python của chúng tôi. |
MLflow vs. Kubeflow
Bây giờ bạn đã hiểu MLflow là gì, hãy giải đáp một câu hỏi rất phổ biến trong lĩnh vực này: sự khác nhau giữa MLflow và Kubeflow là gì?
Trước hết, Kubeflow là gì?
Kubeflow là một dự án mã nguồn mở bao gồm tập hợp các công cụ và khung đã được tuyển chọn. Mục tiêu chính của Kubeflow là giúp việc phát triển, triển khai và quản lý các quy trình làm việc machine learning có thể di động và mở rộng trở nên dễ dàng.
Kubeflow được xây dựng trên Kubernetes, một nền tảng mã nguồn mở để chạy và điều phối container. Kubernetes được thiết kế để chạy nhất quán trên các môi trường khác nhau, đây là chìa khóa cho cách Kubeflow vận hành.
Để tìm hiểu thêm về Kubeflow, hãy đọc hướng dẫn chi tiết về Kubeflow của chúng tôi.
Khi so sánh MLflow và Kubeflow, điểm giống nhau duy nhất giữa hai dự án này là cả hai đều mã nguồn mở nhưng phục vụ những nhu cầu hoàn toàn khác nhau. Kubeflow là hệ thống điều phối container mã nguồn mở để phát triển, triển khai và quản lý các ứng dụng machine learning trên Kubernetes. Ngược lại, MLflow là một thư viện Python để theo dõi thí nghiệm và quản lý phiên bản/triển khai mô hình, bất kể môi trường điều phối là gì.
Hướng dẫn MLflow
Sử dụng MLflow cực kỳ dễ. Chỉ cần vài dòng mã là bạn có thể tích hợp ghi log MLflow vào mã hiện có. Nhưng trước tiên, bạn phải cài đặt MLflow bằng pip.
# install mlflow
pip install mlflow
Hãy tạo một script Python đơn giản để huấn luyện mô hình hồi quy logistic và ghi log chỉ số cùng mô hình bằng MLflow. Đây là ví dụ chính thức từ MLflow, được tái hiện từ đây.
import numpy as np
from sklearn.linear_model import LogisticRegression
import mlflow
import mlflow.sklearn
if __name__ == "__main__":
X = np.array([-2, -1, 0, 1, 2, 1]).reshape(-1, 1)
y = np.array([0, 0, 1, 1, 1, 0])
lr = LogisticRegression()
lr.fit(X, y)
score = lr.score(X, y)
print("Score: %s" % score)
mlflow.log_metric("score", score)
mlflow.sklearn.log_model(lr, "model")
print("Model saved in run %s" % mlflow.active_run().info.run_uuid)
KẾT QUẢ:
>>> Score: 0.6666666666666666
>>> Model saved in run 9def2bd1c55b4f0985aa5c050b8f71cd
Bạn có thể khởi chạy MLflow UI bằng cách gõ `mlflow ui` trên terminal trong cùng thư mục chứa tệp python của bạn.
mlflow ui
Sau đó truy cập https://localhost:5000, bạn sẽ thấy trang sau:

Bạn có thể thấy chỉ có một bản ghi, tức là mô hình chúng ta đã huấn luyện và ghi log trong script ở trên. Nhấp vào tên, bạn sẽ thấy trang chi tiết:

|
NÂNG CẤP BẢN THÂN NGAY BÂY GIỜ! ĐĂNG KÝ HÔM NAY khóa Machine Learning Scientist with Python Làm chủ các kỹ năng cốt lõi để ứng tuyển vị trí nhà khoa học machine learning. Bạn sẽ bổ sung cho kỹ năng lập trình Python bộ công cụ để thực hiện học có giám sát, không giám sát và học sâu. Bạn sẽ học:
|
Kết luận
MLflow là một nền tảng mã nguồn mở và là công cụ tuyệt vời để quản lý vòng đời machine learning từ đầu đến cuối. Nó được tạo ra bởi Databricks, công ty đứng sau nền tảng Apache Spark nổi tiếng, và được thiết kế để hoạt động với bất kỳ thư viện, thuật toán hay ngôn ngữ machine learning nào.
MLflow mang lại nhiều lợi ích cho nhà phát triển machine learning và nhà khoa học dữ liệu. Nó cung cấp một nơi tập trung để theo dõi thí nghiệm và quản lý dự án machine learning. Đây có thể là công cụ hữu ích cho cộng tác, vì nó cho phép các thành viên nhóm thấy người khác đang làm gì và so sánh kết quả.
MLflow có thể tự động hóa quy trình machine learning, từ tiền xử lý dữ liệu đến huấn luyện mô hình đến triển khai. Điều này có thể tiết kiệm thời gian, công sức và giúp dễ dàng tái lập kết quả.
Tổng thể, MLflow là công cụ giá trị để quản lý các dự án machine learning. Nó có thể giúp bạn theo dõi thí nghiệm, tự động hóa quy trình và tối ưu mô hình. Nếu bạn đang làm việc với các dự án machine learning, bạn nhất định nên tìm hiểu MLflow.
|
Nếu bạn muốn nâng cao kỹ năng và hiểu các nguyên lý của Machine Learning cùng ứng dụng trong kinh doanh, hãy xem khóa Machine Learning for Business trên DataCamp. |