Ultralytics YOLO27:

Tích hợp MLflow cho Ultralytics YOLO#

MLflow experiment tracking with 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.

Cập nhật cài đặt MLflow của Ultralytics

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#

  1. Đặ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_NAME

    Hoặc sử dụng argument project=<project> khi training model YOLO, chẳng hạn như yolo train project=my_project.

  2. Đặ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_NAME

    Hoặc sử dụng argument name=<name> khi training model YOLO, chẳng hạn như yolo train project=my_project name=my_name.

  3. 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/mlflow

    Theo mặc định, lệnh này sẽ khởi động một server cục bộ tại http://127.0.0.1:5000 và 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 export MLFLOW_TRACKING_URI trước khi training:

    export MLFLOW_TRACKING_URI=http://127.0.0.1:5000
  4. 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_ACTIVE thành True trước khi training:

    export MLFLOW_KEEP_RUN_ACTIVE=True

    Các giá trị 1, true, yes, on, yt sẽ 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ằng mlflow.end_run().

Ghi log#

Việc ghi log được xử lý bởi các callback function on_pretrain_routine_end, on_fit_epoch_endon_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ụ#

  1. 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.metrics trước khi gọi on_fit_epoch_end.

  2. 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. MLflow experiment tracking interface for YOLO

  3. 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. MLflow run details with YOLO artifacts

Tắt MLflow#

Để tắt tính năng ghi log MLflow:

yolo settings mlflow=False

Kế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 mlflow

    Tiế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 Ultralytics
    from 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/mlflow
  • Ultralytics 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/mlflow

    Theo 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ấn Ctrl+C trong 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_ACTIVE thành True trước khi training:

    export MLFLOW_KEEP_RUN_ACTIVE=True

    Theo mặc định, giá trị này là False, vì vậy Ultralytics sẽ gọi mlflow.end_run() sau khi training hoàn tất. Với MLFLOW_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ằng mlflow.end_run() khi hoàn tất. Các giá trị 1, true, yes, on, yt sẽ 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.

Bình luận