Experiment Tracking
Theo dõi thí nghiệm ghi lại các tham số, phiên bản code và dữ liệu, metric cùng artifact của mỗi lần chạy huấn luyện ML để có thể so sánh và tái lập các lần chạy.
Theo dõi thực nghiệm là việc ghi lại mọi thông tin về từng lần chạy huấn luyện machine learning trong một kho dữ liệu có thể tìm kiếm, bao gồm phiên bản mã, phiên bản dữ liệu, thiết lập, môi trường, metrics theo thời gian và các tệp đầu ra như trọng số, biểu đồ. Dự án thử hàng chục learning rate, thiết lập augmentation và kích thước model sẽ tạo ra các lần chạy trông giống nhau trên ổ đĩa; hệ thống theo dõi lưu lại cấu hình tương ứng với mỗi kết quả, giúp so sánh, tái tạo và truy vết lần chạy tốt nhất ngay cả sau nhiều tháng. TensorBoard, phát hành cùng TensorFlow năm 2015, đã đưa biểu đồ huấn luyện trực tiếp thành tiêu chuẩn; năm 2018, Databricks công bố mã nguồn mở MLflow với tracking là một trong ba thành phần ban đầu. Weights & Biases, Comet, ClearML và DVC là những công cụ theo dõi được sử dụng rộng rãi khác.
Tracker ghi lại những gì#
Mỗi lần chạy có một ID duy nhất và thuộc về một thực nghiệm, tức nhóm được đặt tên gồm các lần chạy có liên quan. Bản ghi của một lần chạy thường bao gồm:
- Siêu tham số: Learning rate, batch size, optimizer, kiến trúc model, random seed và mọi thiết lập khác ảnh hưởng đến quá trình huấn luyện.
- Metrics: Loss và điểm số trên tập huấn luyện, tập xác thực được ghi lại theo từng bước hoặc epoch, cùng metrics hệ thống như bộ nhớ và mức sử dụng GPU.
- Artifact: Checkpoint, confusion matrix, dự đoán mẫu và tệp cấu hình.
- Dòng dõi: Git commit, phiên bản dataset, phiên bản gói, phần cứng và tác giả đã tạo ra lần chạy.
Việc ghi log có thể thực hiện qua một lệnh gọi client cho mỗi giá trị, hoặc tự động thông qua tích hợp autologging để thu thập tham số và metrics của framework mà không cần thêm mã. Máy chủ tracking dùng chung thu thập các lần chạy từ mọi laptop, máy cloud và tác vụ CI trong nhóm; dashboard của máy chủ chồng các đường cong loss của những lần chạy được chọn và lọc theo bất kỳ tham số hay metric nào, nhờ đó dễ dàng nhận biết các vấn đề như overfitting.
Quá trình huấn luyện Ultralytics YOLO ghi các tham số của mỗi lần chạy vào args.yaml và loss cùng metrics theo từng epoch vào results.csv; các tích hợp tích hợp sẵn gửi cùng những giá trị này đến MLflow, Comet, ClearML hoặc DVC ngay khi cài đặt gói tương ứng; TensorBoard và Weights & Biases được bật thông qua yolo settings. Các tham số huấn luyện project và name trở thành tên thực nghiệm và tên lần chạy trong MLflow, vì vậy một lượt thử nghiệm YOLO26 đã được sắp xếp sẵn trong tracker.
So sánh và tái tạo các lần chạy#
Dashboard biểu đồ metric theo một parameter qua nhiều lần chạy hoặc vẽ biểu đồ tọa độ song song nối cấu hình của mỗi lần chạy với điểm số, qua đó cho thấy cấu hình nào quan trọng trong một sweep. Trên Ultralytics Platform, một project so sánh các model bằng các đường cong metric và loss chồng lên nhau cùng bảng đặt cạnh nhau; bài học Compare Runs and Pick a Winner biến phép so sánh đó thành một cổng phê duyệt tự động bằng script. Tái tạo một lần chạy cần nhiều hơn hyperparameter: bản ghi cũng phải lưu commit mã, snapshot dữ liệu chính xác, phiên bản package và random seed, vì kernel GPU và thứ tự tải dữ liệu có thể làm kết quả thay đổi đôi chút ngay cả giữa các lần chạy giống hệt nhau về mọi mặt khác.
Tập lệnh MLflow này huấn luyện cây quyết định với bốn độ sâu trên bộ chữ số viết tay của scikit-learn, ghi lại mỗi độ sâu dưới dạng tham số và độ chính xác trên tập xác thực dưới dạng metric, rồi truy vấn thực nghiệm như một bảng:
import mlflow
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
# Store runs in a local SQLite file and group them under one experiment
mlflow.set_tracking_uri("sqlite:///mlflow.db")
mlflow.set_experiment("digits-tree-depth")
X_train, X_val, y_train, y_val = train_test_split(*load_digits(return_X_y=True), random_state=0)
# One tracked run per setting: the parameter goes in, the metric comes out
for depth in [2, 4, 8, 16]:
with mlflow.start_run(run_name=f"depth-{depth}"):
model = DecisionTreeClassifier(max_depth=depth, random_state=0).fit(X_train, y_train)
mlflow.log_param("max_depth", depth)
mlflow.log_metric("val_accuracy", model.score(X_val, y_val))
# Query the experiment like a table, best run first
runs = mlflow.search_runs(order_by=["metrics.val_accuracy DESC"])
print(runs[["params.max_depth", "metrics.val_accuracy"]])Trên cơ sở dữ liệu mới, bảng liệt kê độ sâu 16 đầu tiên với độ chính xác xác thực 0.838, tiếp theo là độ sâu 8 với 0.818, độ sâu 4 với 0.533 và độ sâu 2 với 0.318. Chạy mlflow ui trong cùng thư mục với --backend-store-uri sqlite:///mlflow.db sẽ mở các lần chạy đó trên trình duyệt.
Theo dõi thực nghiệm và các phương pháp liên quan#
Theo dõi thực nghiệm là một giai đoạn trong vận hành machine learning (MLOps), bên cạnh ba phương pháp thường bị nhầm lẫn với nó:
- Registry model: Lưu giữ một số ít model đã huấn luyện đáng triển khai, mỗi phiên bản được liên kết ngược với lần chạy đã tạo ra model đó trong hệ thống tracking.
- Giám sát model: Theo dõi đầu vào, đầu ra và độ chính xác của model đã triển khai trong môi trường production, sau khi tracking hoàn tất vai trò trong quá trình phát triển.
- Tối ưu siêu tham số: Các công cụ tìm kiếm như Optuna và Ray Tune tự động khởi chạy nhiều lần chạy; tracker lưu trữ và xếp hạng tất cả các lần chạy đó.










