Tích hợp MLflow cho Ultralytics YOLO#
Giới thiệu#
Việc ghi nhật ký thử nghiệm là khía cạnh thiết yếu trong quy trình học máy, cho phép theo dõi nhiều chỉ số, tham số và hiện vật. Việc này giúp tăng khả năng tái lập của model, gỡ lỗi và cải thiện 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 diện vòng đời học máy.
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 của MLflow cho dự án Ultralytics YOLO.
MLflow là gì?#
MLflow là nền tảng mã nguồn mở do Databricks phát triển để quản lý toàn bộ vòng đời học máy. Nền tảng này bao gồm các công cụ theo dõi thí nghiệm, đó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 học máy và ngôn ngữ lập trình.
Tính năng#
- Ghi log metric: Ghi log tốc độ học, loss huấn luyện và metric xác thực vào cuối mỗi epoch.
- Ghi log tham số: Ghi log tất cả tham số được sử dụng trong quá trình huấn luyện.
- Ghi log artifact: Ghi log artifact của model, bao gồm trọng số và tệp cấu hình, vào cuối quá trình huấn luyện.
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 cài đặt Ultralytics. Thông thường, tính năng này được kiểm soát bằng khóa cài đặt mlflow. Xem trang cài đặt để biết thêm thông tin.
Trong môi trường Python, gọi phương thức update trên đối tượng settings để thay đổi cài đặt:
from ultralytics import settings
# Cập nhật một cài đặt
settings.update({"mlflow": True})
# Đặt lại cài đặt về giá trị mặc định
settings.reset()Cách sử dụng#
Lệnh#
-
Đặt tên dự án: Bạn có thể đặt tên dự án thông qua biến môi trường:
export MLFLOW_EXPERIMENT_NAME=YOUR_EXPERIMENT_NAMEHoặc dùng đối số
project=<project>khi huấn luyện model YOLO, ví dụyolo train project=my_project. -
Đặt tên lần chạy: Tương tự như đặt tên dự án, bạn có thể đặt tên lần chạy thông qua biến môi trường:
export MLFLOW_RUN=YOUR_RUN_NAMEHoặc dùng đối số
name=<name>khi huấn luyện model YOLO, ví dụyolo train project=my_project name=my_name. -
Khởi động máy chủ MLflow cục bộ: Để bắt đầu theo dõi, hãy dùng:
mlflow server --backend-store-uri runs/mlflowTheo mặc định, thao tác này sẽ khởi động máy chủ 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 chạy huấn luyện đến một máy chủ theo dõi khác, hãy đặtMLFLOW_TRACKING_URItrước khi huấn luyện:export MLFLOW_TRACKING_URI=http://127.0.0.1:5000 -
Giữ lần chạy MLflow hoạt động sau khi huấn luyện: Theo mặc định, Ultralytics tự động kết thúc lần chạy MLflow khi quá trình huấn luyện hoàn tất. Để giữ lần chạy 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 huấn luyện:export MLFLOW_KEEP_RUN_ACTIVE=TrueCác giá trị
1,true,yes,on,yvàtbậ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, đều giữ nguyên hành vi mặc định là đóng phiên chạy. Sau đó, hãy nhớ đóng phiên theo cách thủ công bằngmlflow.end_run().
Ghi log#
Việc ghi log được xử lý bởi các hàm callback on_pretrain_routine_end, on_train_epoch_end, on_fit_epoch_end và on_train_end. Các hàm này được tự động gọi trong những giai đoạn tương ứng của quá trình huấn luyện và đảm nhiệm việc ghi log các tham số, metrics và artifacts.
Ví dụ#
-
Ghi log metrics tùy chỉnh: Bạn có thể thêm metrics tùy chỉnh để ghi log bằng cách chỉnh sửa dictionary
trainer.metricstrước khi gọion_fit_epoch_end. -
Xem thử nghiệm: Để xem log, hãy truy cập máy chủ MLflow của bạn (thường là
http://127.0.0.1:5000) rồi chọn thử nghiệm và phiên chạy.
-
Xem phiên chạy: Các phiên chạy là những model riêng lẻ bên trong một thử nghiệm. Nhấp vào một phiên chạy để xem thông tin chi tiết, bao gồm artifacts đã tải lên và trọng số model.

Tắt MLflow#
Để tắt tính năng ghi log của MLflow:
yolo settings mlflow=FalseKết luận#
Tích hợp ghi log MLflow với Ultralytics YOLO cung cấp cách đơn giản hóa để theo dõi các thử nghiệm machine learning. Tích hợp này giúp bạn giám sát các metrics hiệu năng và quản lý artifacts 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.
Câu hỏi thường gặp#
Để 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, bật ghi log MLflow trong phần cài đặt Ultralytics. Bạn có thể điều khiển tính năng này bằng khóa
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 # Cập nhật một cài đặt settings.update({"mlflow": True}) # Đặt lại cài đặt về giá trị mặc định settings.reset()Cuối cùng, khởi chạy máy chủ MLflow cục bộ để theo dõi:
mlflow server --backend-store-uri runs/mlflowUltralytics YOLO kết hợp với MLflow hỗ trợ ghi log nhiều metrics, tham số và artifacts trong suốt quá trình huấn luyện:
- Ghi log metrics: Theo dõi metrics vào cuối mỗi epoch và khi quá trình huấn luyện hoàn tất.
- Ghi log tham số: Ghi log tất cả tham số được sử dụng trong quá trình huấn luyện.
- Ghi log artifacts: Lưu artifacts của model, chẳng hạn như trọng số và tệp cấu hình, sau khi huấn luyện.
Để 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 phần 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 phần cài đặt, hãy tham khảo hướng dẫn cài đặt.
Để khởi động máy chủ MLflow nhằm theo dõi các thử nghiệm Ultralytics YOLO, hãy dùng lệnh sau:
mlflow server --backend-store-uri runs/mlflowTheo mặc định, lệnh này khởi động máy chủ cục bộ tại
http://127.0.0.1:5000. NhấnCtrl+Ctrong terminal đó để dừng máy chủ.Tham khảo mục lệnh để xem thêm các tùy chọn lệnh.
Đặt biến môi trường
MLFLOW_KEEP_RUN_ACTIVEthànhTruetrước khi huấn luyện:export MLFLOW_KEEP_RUN_ACTIVE=TrueTheo mặc định, giá trị này là
False, vì vậy Ultralytics gọimlflow.end_run()sau khi quá trình huấn luyện hoàn tất. VớiMLFLOW_KEEP_RUN_ACTIVE=True, phiên chạy vẫn mở để bạn có thể ghi log thêm metrics, tham số hoặc artifacts từ cùng một phiên Python — hãy tự đóng phiên bằngmlflow.end_run()khi hoàn tất. Các giá trị1,true,yes,on,yvàtbậ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ý các thử nghiệm machine learning:
- Nâng cao khả năng theo dõi thử nghiệm: Dễ dàng theo dõi và so sánh các phiên chạy 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 các thử nghiệm có thể được tái lập bằng cách ghi log tất cả tham số và artifacts.
- Giám sát hiệu năng: Trực quan hóa metrics hiệu năng theo thời gian để đưa ra quyết định dựa trên dữ liệu nhằm cải thiện model.
- Tối ưu hóa quy trình làm việc: Tự động hóa quy trình ghi log để tập trung nhiều hơn vào 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ả thử nghiệm 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à khai thác MLflow với Ultralytics YOLO, hãy xem tài liệu Tích hợp MLflow cho Ultralytics YOLO.