Tích hợp MLflow cho Ultralytics YOLO#
Giới thiệu#
Ghi log experiment là một khía cạnh quan trọng của quy trình machine learning, cho phép theo dõi nhiều metric, tham số và artifact khác nhau. Việc này giúp cải thiện khả năng tái lập của model, gỡ lỗi và nâng cao hiệu suất model. Ultralytics YOLO, nổi tiếng với khả năng phát hiện đối tượng theo thời gian thực, hiện cung cấp khả năng tích hợp với MLflow, một nền tảng mã nguồn mở để quản lý toàn bộ vòng đời machine learning.
Trang tài liệu này là hướng dẫn toàn diện về cách thiết lập và sử dụng khả năng ghi log MLflow cho project Ultralytics YOLO của bạn.
MLflow là gì?#
MLflow là một nền tảng mã nguồn mở do Databricks phát triển để quản lý toàn bộ vòng đời machine learning. Nền tảng này bao gồm các công cụ để theo dõi experiment, đóng gói code thành các lần chạy có thể tái lập, cũng như chia sẻ và triển khai model. MLflow được thiết kế để hoạt động với mọi thư viện machine learning và ngôn ngữ lập trình.
Tính năng#
- Ghi log metric: Ghi log metric vào cuối mỗi epoch và khi kết thúc quá trình training.
- Ghi log tham số: Ghi log tất cả tham số được sử dụng trong quá trình training.
- Ghi log artifact: Ghi log các artifact của model, bao gồm weight và file cấu hình, khi kết thúc quá trình training.
Thiết lập và điều kiện tiên quyết#
Đảm bảo MLflow đã được cài đặt. Nếu chưa, hãy cài đặt bằng pip:
pip install mlflowĐảm bảo tính năng ghi log MLflow được bật trong phần cài đặt Ultralytics. Thông thường, tùy chọn này được điều khiển bằng key mlflow. Xem trang cài đặt để biết thêm thông tin.
Trong môi trường Python, gọi method update trên object settings để thay đổi cài đặt:
from ultralytics import settings
# Update a setting
settings.update({"mlflow": True})
# Reset settings to default values
settings.reset()Cách sử dụng#
Các lệnh#
-
Đặt tên project: Bạn có thể đặt tên project thông qua một biến môi trường:
export MLFLOW_EXPERIMENT_NAME=YOUR_EXPERIMENT_NAMEHoặc sử dụng argument
project=<project>khi training model YOLO, chẳng hạn nhưyolo train project=my_project. -
Đặt tên run: Tương tự như khi đặt tên project, bạn có thể đặt tên run thông qua một biến môi trường:
export MLFLOW_RUN=YOUR_RUN_NAMEHoặc sử dụng argument
name=<name>khi training model YOLO, chẳng hạn nhưyolo train project=my_project name=my_name. -
Khởi động server MLflow cục bộ: Để bắt đầu theo dõi, hãy sử dụng:
mlflow server --backend-store-uri runs/mlflowTheo mặc định, lệnh này sẽ khởi động một server cục bộ tại
http://127.0.0.1:5000và lưu toàn bộ log mlflow vào thư mục 'runs/mlflow'. Để trỏ các lần training tới một tracking server khác, hãy exportMLFLOW_TRACKING_URItrước khi training:export MLFLOW_TRACKING_URI=http://127.0.0.1:5000 -
Duy trì MLflow run sau khi training: Theo mặc định, Ultralytics tự động kết thúc MLflow run khi training hoàn tất. Để giữ run mở (ví dụ: ghi thêm metric hoặc artifact từ cùng một notebook), hãy đặt
MLFLOW_KEEP_RUN_ACTIVEthànhTruetrước khi training:export MLFLOW_KEEP_RUN_ACTIVE=TrueCác giá trị
1,true,yes,on,yvàtsẽ bật hành vi này (không phân biệt chữ hoa chữ thường). Mọi giá trị khác, bao gồm cả biến chưa được thiết lập, sẽ giữ nguyên mặc định là đóng run. Sau đó, hãy nhớ đóng run thủ công bằngmlflow.end_run().
Ghi log#
Việc ghi log được xử lý bởi các callback function on_pretrain_routine_end, on_fit_epoch_end và on_train_end. Các function này được tự động gọi trong những giai đoạn tương ứng của quy trình training và xử lý việc ghi log tham số, metric và artifact.
Ví dụ#
-
Ghi log metric tùy chỉnh: Bạn có thể thêm metric tùy chỉnh để ghi log bằng cách sửa đổi dictionary
trainer.metricstrước khi gọion_fit_epoch_end. -
Xem experiment: Để xem các log, hãy truy cập server MLflow của bạn (thường là
http://127.0.0.1:5000), sau đó chọn experiment và run.
-
Xem run: Các run là những model riêng lẻ bên trong một experiment. Nhấp vào một run để xem thông tin chi tiết của run, bao gồm các artifact và trọng số model đã tải lên.

Tắt MLflow#
Để tắt tính năng ghi log MLflow:
yolo settings mlflow=FalseKết luận#
Tích hợp ghi log MLflow với Ultralytics YOLO cung cấp một cách hợp lý hóa để theo dõi experiment machine learning. Tính năng này giúp bạn giám sát metric hiệu suất và quản lý artifact hiệu quả, từ đó hỗ trợ phát triển và triển khai model vững chắc. Để biết thêm chi tiết, vui lòng truy cập tài liệu chính thức của MLflow.
FAQ#
Để thiết lập ghi log MLflow với Ultralytics YOLO, trước tiên bạn cần đảm bảo MLflow đã được cài đặt. Bạn có thể cài đặt bằng pip:
pip install mlflowTiếp theo, hãy bật ghi log MLflow trong phần cài đặt Ultralytics. Tùy chọn này có thể được điều khiển bằng key
mlflow. Để biết thêm thông tin, hãy xem hướng dẫn cài đặt.Cập nhật cài đặt MLflow của Ultralyticsfrom ultralytics import settings # Update a setting settings.update({"mlflow": True}) # Reset settings to default values settings.reset()Cuối cùng, hãy khởi động một MLflow server cục bộ để theo dõi:
mlflow server --backend-store-uri runs/mlflowUltralytics YOLO cùng MLflow hỗ trợ ghi log nhiều metric, tham số và artifact trong suốt quy trình training:
- Ghi log metric: Theo dõi metric vào cuối mỗi epoch và khi training hoàn tất.
- Ghi log tham số: Ghi log tất cả tham số được sử dụng trong quy trình training.
- Ghi log artifact: Lưu các artifact của model như weight và file cấu hình sau khi training.
Để biết thông tin chi tiết hơn, hãy truy cập tài liệu theo dõi Ultralytics YOLO.
Có, bạn có thể tắt ghi log MLflow cho Ultralytics YOLO bằng cách cập nhật cài đặt. Sau đây là cách thực hiện bằng CLI:
yolo settings mlflow=FalseĐể tùy chỉnh thêm và đặt lại cài đặt, hãy tham khảo hướng dẫn cài đặt.
Để khởi động MLflow server nhằm theo dõi các experiment trong Ultralytics YOLO, hãy sử dụng lệnh sau:
mlflow server --backend-store-uri runs/mlflowTheo mặc định, lệnh này khởi động một server cục bộ tại
http://127.0.0.1:5000. NhấnCtrl+Ctrong terminal đó để dừng server.Tham khảo phần lệnh để biết thêm các tùy chọn lệnh.
Đặt biến môi trường
MLFLOW_KEEP_RUN_ACTIVEthànhTruetrước khi training:export MLFLOW_KEEP_RUN_ACTIVE=TrueTheo mặc định, giá trị này là
False, vì vậy Ultralytics sẽ gọimlflow.end_run()sau khi training hoàn tất. VớiMLFLOW_KEEP_RUN_ACTIVE=True, run sẽ tiếp tục mở để bạn có thể ghi thêm metric, tham số hoặc artifact từ cùng một session Python — hãy tự đóng run bằngmlflow.end_run()khi hoàn tất. Các giá trị1,true,yes,on,yvàtsẽ bật hành vi này (không phân biệt chữ hoa chữ thường).Tích hợp MLflow với Ultralytics YOLO mang lại một số lợi ích trong việc quản lý experiment machine learning:
- Theo dõi experiment nâng cao: Dễ dàng theo dõi và so sánh các run khác nhau cùng kết quả của chúng.
- Cải thiện khả năng tái lập model: Đảm bảo experiment có thể được tái lập bằng cách ghi log tất cả tham số và artifact.
- Giám sát hiệu suất: Trực quan hóa metric hiệu suất theo thời gian để đưa ra quyết định dựa trên dữ liệu nhằm cải thiện model.
- Quy trình được hợp lý hóa: Tự động hóa quy trình ghi log để tập trung nhiều hơn vào việc phát triển model thay vì theo dõi thủ công.
- Phát triển cộng tác: Chia sẻ kết quả experiment với các thành viên trong nhóm để cộng tác và chia sẻ kiến thức hiệu quả hơn.
Để tìm hiểu chuyên sâu về cách thiết lập và tận dụng MLflow với Ultralytics YOLO, hãy xem tài liệu Tích hợp MLflow cho Ultralytics YOLO.