Hướng Dẫn Sử Dụng MLflow Với Python Để Xây Dựng Mô Hình Học Máy trong Databricks

Thư viện MLflow trong Python là một công cụ mạnh mẽ hỗ trợ các nhà phát triển trong việc xây dựng và quản lý quy trình công việc trong các dự án học máy. MLflow cung cấp khả năng theo dõi và giám sát hiệu suất của mô hình, cho phép người dùng lưu trữ các thông tin quan trọng như tham số, phiên bản dữ liệu và kết quả đầu ra của mô hình. Với MLflow, việc tái tạo các thí nghiệm trở nên dễ dàng hơn, giúp tiết kiệm thời gian và công sức khi cần so sánh các mô hình khác nhau. Ngoài ra, thư viện này còn tích hợp tính năng triển khai mô hình, giúp người dùng dễ dàng đưa mô hình vào môi trường sản xuất và tạo ra các ứng dụng thực tiễn từ những nghiên cứu học máy của họ. Chính vì vậy, MLflow đang trở thành một phần không thể thiếu trong bộ công cụ của những nhà khoa học dữ liệu và kỹ sư học máy.

Cài đặt MLflow trong Databricks, chúng ta dùng lệnh:

%pip install mlflow

Sau khi cài đặt, để sử dụng thư viện này, chúng ta phải khởi động lại kernel. Để làm điều này, chúng ta có thể dùng:

%pip install mlflow

Ví dụ về cách sử dụng MLflow với GradientBoostingRegressor cho bộ dữ liệu California Housing

Bạn có thể tải notebook về để chạy. Nếu chưa biết cách import notebook vào Databricks, bạn có thể xem hướng dẫn.

Import các thư viện cần thiết:

import mlflow
import mlflow.sklearn
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

Giải thích:

  • mlflowmlflow.sklearn: Thư viện MLflow dùng để theo dõi thí nghiệm học máy. mlflow.sklearn hỗ trợ ghi lại và lưu trữ thông tin liên quan đến các mô hình từ thư viện Scikit-learn.
  • GradientBoostingRegressor: Mô hình Gradient Boosting (một loại mô hình ensemble) dùng cho bài toán hồi quy.
  • fetch_california_housing: Hàm này tải bộ dữ liệu mẫu California Housing từ Scikit-learn.
  • train_test_split: Dùng để chia dữ liệu thành hai phần: huấn luyện (training) và kiểm tra (testing).
  • mean_squared_error: Hàm tính toán lỗi bình phương trung bình (MSE) – một thước đo hiệu suất của mô hình hồi quy.

Kích hoạt tính năng ghi tự động cho mô hình sklearn

mlflow.sklearn.autolog()

Lệnh mlflow.sklearn.autolog() tự động ghi lại các tham số của mô hình, quá trình huấn luyện, điểm số, và thậm chí cả mô hình đã huấn luyện, giúp việc theo dõi và lưu trữ dễ dàng hơn.


Tải dữ liệu California Housing

data = fetch_california_housing(as_frame=True)
X = data.data  # Các đặc trưng (features)
y = data.target  # Biến mục tiêu (giá trị trung bình của nhà)

Giải thích:

  • fetch_california_housing: Tải bộ dữ liệu California Housing.
  • X: Đây là tập dữ liệu các đặc trưng (features) như thu nhập trung bình, số lượng phòng, v.v.
  • y: Là biến mục tiêu cần dự đoán, biểu thị giá trị trung bình của nhà.

Chia dữ liệu thành tập huấn luyện và tập kiểm tra

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

Giải thích:

  • train_test_split chia dữ liệu thành hai tập:
    • X_trainy_train: Dữ liệu dùng để huấn luyện mô hình.
    • X_testy_test: Dữ liệu dùng để kiểm tra mô hình.
  • test_size=0.2: 20% dữ liệu được giữ lại cho kiểm tra.
  • random_state=42: Đảm bảo kết quả chia dữ liệu luôn giống nhau mỗi khi chạy mã.

Bắt đầu ghi thông tin theo dõi với MLflow

with mlflow.start_run():

Giải thích:

  • mlflow.start_run(): Tạo một phiên (run) để ghi lại các thông tin liên quan đến quá trình huấn luyện mô hình.

Định nghĩa các tham số cho mô hình

n_estimators = 150  # Số lượng cây trong mô hình
learning_rate = 0.05  # Tốc độ học của mô hình
max_depth = 5  # Độ sâu tối đa của mỗi cây

Giải thích:

  • n_estimators: Số lượng cây trong mô hình Gradient Boosting.
  • learning_rate: Tốc độ học, kiểm soát mức độ điều chỉnh trọng số sau mỗi lần lặp.
  • max_depth: Độ sâu tối đa của mỗi cây, giúp kiểm soát độ phức tạp của mô hình.

Huấn luyện mô hình Gradient Boosting Regressor

gbr = GradientBoostingRegressor(n_estimators=n_estimators, learning_rate=learning_rate, max_depth=max_depth)
gbr.fit(X_train, y_train)  # Huấn luyện mô hình với tập huấn luyện

Giải thích:

  • GradientBoostingRegressor: Tạo mô hình Gradient Boosting Regressor với các tham số đã định nghĩa trước đó.
  • fit(): Phương thức dùng để huấn luyện mô hình trên tập dữ liệu X_trainy_train.

Dự đoán kết quả trên tập kiểm tra

predictions = gbr.predict(X_test)  # Dự đoán từ dữ liệu kiểm tra

Giải thích:

  • predict(): Dùng mô hình đã huấn luyện để dự đoán biến mục tiêu (y) từ dữ liệu kiểm tra (X_test).

Đánh giá hiệu suất của mô hình với Mean Squared Error (MSE)

mse = mean_squared_error(y_test, predictions)
print(f"Lỗi bình phương trung bình (MSE) trên tập kiểm tra: {mse}")

Giải thích:

  • mean_squared_error(): Tính lỗi bình phương trung bình (MSE), đo lường sự khác biệt giữa giá trị thực tế (y_test) và giá trị dự đoán (predictions).
  • print(): In kết quả MSE, giúp đánh giá mô hình. Giá trị MSE càng thấp, mô hình càng tốt.

Sau khi chạy xong, bạn có thể kiểm tra thông tin logging trên MLflow để xem chi tiết về mô hình và quá trình huấn luyện.

thì sẽ thấy logging


Discover more from Science Comics

Subscribe to get the latest posts sent to your email.

Leave a Reply

error: Content is protected !!