YOLO Vision 2026:

Tích hợp ClearML#

ClearML MLOps experiment tracking platform

Giới thiệu về ClearML#

ClearML là một nền tảng MLOps mã nguồn mở được xây dựng để tinh gọn quy trình machine learning và tiết kiệm thời gian kỹ thuật.

  • 🔨 Theo dõi mọi lần chạy training YOLOv5 trong trình quản lý experiment.
  • 🔧 Quản lý phiên bản và truy cập training data tùy chỉnh bằng công cụ quản lý phiên bản dữ liệu tích hợp của ClearML.
  • 🔦 Training và monitoring từ xa các lần chạy YOLOv5 bằng ClearML Agent.
  • 🔬 Tìm mAP tốt nhất bằng tối ưu hóa hyperparameter của ClearML.
  • 🔭 Chuyển model YOLOv5 đã training thành một API chỉ với vài lệnh bằng ClearML Serving.

Sử dụng bao nhiêu hoặc ít công cụ này tùy nhu cầu — bắt đầu chỉ với trình quản lý experiment, hoặc kết nối tất cả thành một pipeline hoàn chỉnh.

🦾 Thiết lập#

ClearML cần giao tiếp với một server để theo dõi experiment và dữ liệu của bạn. Bạn có hai lựa chọn:

  • Đăng ký ClearML Hosted Service miễn phí, hoặc
  • Triển khai server ClearML của riêng bạn — vì đây là mã nguồn mở nên vẫn là lựa chọn khả thi ngay cả với dữ liệu nhạy cảm.

Sau đó cài đặt package clearml Python và kết nối SDK với server của bạn:

pip install clearml

Tạo thông tin xác thực tại Settings → Workspace → Create new credentials (góc trên bên phải của giao diện ClearML), sau đó chạy:

clearml-init

Làm theo các lời nhắc. Vậy là xong — thiết lập đã hoàn tất.

🚀 Training YOLOv5 với ClearML#

Để bật tính năng theo dõi experiment, hãy cài package ClearML pip nếu bạn chưa cài:

pip install clearml

Thao tác này sẽ bật tích hợp với training script YOLOv5. Từ bây giờ, mọi lần chạy training sẽ được ClearML experiment manager thu thập và lưu trữ.

Để tùy chỉnh tên project và task, truyền --project--name vào train.py. Giá trị mặc định là YOLOv5Training. ClearML sử dụng / làm dấu phân cách subproject, vì vậy hãy tránh dùng / trong tên project tùy chỉnh.

python train.py --img 640 --batch 16 --epochs 3 --data coco8.yaml --weights yolov5s.pt --cache

Hoặc với các tên tùy chỉnh:

python train.py --project my_project --name my_training --img 640 --batch 16 --epochs 3 --data coco8.yaml --weights yolov5s.pt --cache

Mỗi lần chạy thu thập:

  • Source code và các thay đổi chưa commit
  • Các package đã cài đặt
  • Hyperparameter
  • Checkpoint của model (sử dụng --save-period n để lưu mỗi n epoch)
  • Output trên console
  • Các giá trị vô hướng (mAP_0.5, mAP_0.5:0.95, precision, recall, loss, learning rate)
  • Thông tin máy, runtime và ngày tạo
  • Các biểu đồ được tạo, chẳng hạn như label correlogram và confusion matrix
  • Ảnh có bounding box cho mỗi epoch
  • Các biểu đồ trực quan hóa Mosaic cho mỗi epoch
  • Ảnh validation cho mỗi epoch

Mọi thứ đều xuất hiện trong giao diện ClearML, giúp bạn theo dõi quá trình training tại một nơi. Thêm các cột tùy chỉnh (ví dụ: mAP_0.5) để sắp xếp theo model có hiệu năng tốt nhất, hoặc chọn nhiều experiment để so sánh song song.

Tiếp tục đọc để tìm hiểu về tối ưu hóa hyperparameter và thực thi từ xa.

🔗 Quản lý phiên bản dataset#

Quản lý phiên bản dữ liệu tách biệt với code giúp dễ dàng lấy phiên bản mới nhất và đảm bảo khả năng tái lập đầy đủ. Repository này nhận ID phiên bản dataset, tự động lấy dữ liệu nếu dữ liệu chưa tồn tại và ghi lại ID dưới dạng tham số task, ताकि bạn luôn biết dữ liệu nào đã được sử dụng trong experiment nào.

Chuẩn bị dataset#

Repository YOLOv5 hỗ trợ nhiều dataset thông qua các file cấu hình YAML. Theo mặc định, dataset được tải xuống thư mục ../datasets tương đối với thư mục gốc của repository. Sau khi tải xuống coco128, cấu trúc thư mục sẽ như sau:

..
|_ yolov5
|_ datasets
    |_ coco128
        |_ images
        |_ labels
        |_ LICENSE
        |_ README.txt

Bạn có thể sử dụng bất kỳ dataset nào, miễn là giữ nguyên cấu trúc này.

Tiếp theo, sao chép file YAML của dataset vào thư mục gốc của dataset — ClearML đọc file này để sử dụng dataset đúng cách. Bạn có thể tự viết YAML theo bố cục mẫu, đảm bảo file định nghĩa path, train, test, val, ncnames.

..
|_ yolov5
|_ datasets
    |_ coco128
        |_ images
        |_ labels
        |_ coco128.yaml  # <---- HERE
        |_ LICENSE
        |_ README.txt

Tải dataset lên#

Để đăng ký dataset dưới dạng dataset ClearML có quản lý phiên bản, hãy chuyển đến thư mục gốc của dataset và chạy:

cd ../datasets/coco128
clearml-data sync --project YOLOv5 --name coco128 --folder .

clearml-data sync là cách viết tắt cho chuỗi lệnh sau, bạn cũng có thể chạy rõ ràng:

# Add --parent <parent_dataset_id> to base this version on a previous one.
# Duplicate files are not re-uploaded.
clearml-data create --name coco128 --project YOLOv5
clearml-data add --files .
clearml-data close

Training trên dataset ClearML#

Sau khi đăng ký dataset, trỏ training đến dataset bằng ID:

python train.py --img 640 --batch 16 --epochs 3 --data clearml://YOUR_DATASET_ID --weights yolov5s.pt --cache

👀 Tối ưu hóa hyperparameter#

Khi experiment và dữ liệu đã được quản lý phiên bản, bạn có thể xây dựng dựa trên chúng. Vì mỗi experiment được theo dõi đều ghi lại toàn bộ môi trường — code, package đã cài đặt và cấu hình — nên các lần chạy có khả năng tái lập hoàn toàn. ClearML cho phép bạn clone một experiment, thay đổi các tham số và tự động chạy lại, đây là nền tảng của tối ưu hóa hyperparameter (HPO).

Để chạy HPO cục bộ, hãy sử dụng script đi kèm. Trước tiên, đảm bảo một training task tồn tại trong experiment manager — script sẽ clone task đó và thay đổi các hyperparameter của task.

Điền ID task mẫu vào utils/loggers/clearml/hpo.py, sau đó chạy:

# Install Optuna or change the optimizer to RandomSearch.
pip install optuna
python utils/loggers/clearml/hpo.py

Chuyển task.execute_locally() thành task.execute() để đẩy job vào một queue ClearML cho remote agent nhận.

Bảng điều khiển HPO của ClearML với các chỉ số YOLOv5

🤯 Thực thi từ xa (Nâng cao)#

Chạy HPO cục bộ rất thuận tiện, nhưng bạn thường sẽ muốn thực hiện experiment trên phần cứng mạnh hơn — máy GPU on-prem hoặc instance cloud. Đó là vai trò của ClearML Agent:

Mỗi experiment được theo dõi đều chứa mọi thứ cần thiết để tái lập trên một máy khác (package đã cài đặt, thay đổi chưa commit và cấu hình). ClearML agent lắng nghe một queue, nhận các task đến, tái tạo môi trường, chạy job và stream các giá trị vô hướng cùng biểu đồ trở lại experiment manager.

Biến bất kỳ máy nào — VM cloud, máy GPU cục bộ hoặc laptop — thành ClearML agent bằng:

clearml-agent daemon --queue QUEUES_TO_LISTEN_TO [--docker]

Clone, chỉnh sửa và đưa vào queue#

Khi agent đang chạy, bạn có thể giao việc trực tiếp cho agent từ giao diện:

  • 🪄 Nhấp chuột phải vào một experiment và clone experiment đó.
  • 🎯 Chỉnh sửa các hyperparameter của experiment.
  • ⏳ Nhấp chuột phải vào task đã clone và đưa task vào queue đích.

Thực thi task từ xa#

Bạn cũng có thể đánh dấu một script đang chạy để thực thi từ xa theo lập trình bằng cách thêm task.execute_remotely() sau khi khởi tạo ClearML logger. Thêm dòng được đánh dấu vào train.py:

# ...
# Loggers
data_dict = None
if RANK in {-1, 0}:
    loggers = Loggers(save_dir, weights, opt, hyp, LOGGER)  # loggers instance
    if loggers.clearml:
        loggers.clearml.task.execute_remotely(queue="my_queue")  # <------ ADD THIS LINE
        # data_dict is None unless the user selected a ClearML dataset, in which case ClearML fills it in.
        data_dict = loggers.clearml.data_dict
# ...

Sau thay đổi này, khi chạy training script, script sẽ thực thi đến dòng đó, đóng gói code và gửi code vào queue.

Worker tự động scale#

ClearML đi kèm autoscaler, có thể khởi tạo các máy từ xa trên AWS, GCP hoặc Azure khi queue có experiment đang chờ, chuyển chúng thành ClearML agent và tắt chúng khi công việc hoàn tất — vì vậy bạn chỉ trả phí cho compute thực sự đang chạy.

Xem video hướng dẫn bắt đầu bên dưới:

Xem video

Tìm hiểu thêm#

Để biết thêm thông tin về việc tích hợp ClearML với các model Ultralytics, hãy xem hướng dẫn tích hợp ClearML và tìm hiểu cách nâng cao quy trình MLOps với các công cụ theo dõi experiment khác.

Bình luận