Tích hợp ClearML#
Về ClearML#
ClearML là một nền tảng MLOps mã nguồn mở được xây dựng nhằm tối ưu hóa các quy trình công việc học máy và tiết kiệm thời gian kỹ thuật.
- 🔨 Theo dõi mọi lần chạy đào tạo YOLOv5 trong trình quản lý thử nghiệm.
- 🔧 Quản lý phiên bản và truy cập dữ liệu huấn luyện tùy chỉnh của bạn bằng công cụ quản lý phiên bản dữ liệu ClearML tích hợp.
- 🔦 Đào tạo và giám sát từ xa các lần chạy YOLOv5 bằng ClearML Agent.
- 🔬 Tìm mAP tốt nhất với tính năng tối ưu hóa siêu tham số của ClearML.
- 🔭 Biến model YOLOv5 đã đào tạo của bạn thành một API với vài lệnh sử dụng ClearML Serving.
Sử dụng bao nhiêu tùy thích trong số các công cụ này — bắt đầu chỉ với trình quản lý thử nghiệm hoặc kết hợp mọi thứ thành một quy trình hoàn chỉnh.

🦾 Thiết lập mọi thứ#
ClearML cần giao tiếp với máy chủ để theo dõi các thử nghiệm và dữ liệu của bạn. Bạn có hai tùy chọn:
- Đăng ký Dịch vụ lưu trữ ClearML miễn phí, hoặc
- Triển khai máy chủ ClearML của riêng bạn — đây là phần mềm mã nguồn mở, vì vậy nó vẫn là một lựa chọn khả thi ngay cả đối với dữ liệu nhạy cảm.
Sau đó, cài đặt gói Python clearml và kết nối SDK với máy chủ của bạn:
pip install clearmlTạo thông tin xác thực tại Cài đặt → Không gian làm việc → Tạo thông tin xác thực mới (ở góc trên bên phải của giao diện ClearML), sau đó chạy:
clearml-initLàm theo các hướng dẫn. Thế là xong — thiết lập đã hoàn tất.
🚀 Đào tạo YOLOv5 với ClearML#
Để bật tính năng theo dõi thử nghiệm, hãy cài đặt gói pip ClearML nếu bạn chưa làm:
pip install clearmlThao tác này sẽ bật tính năng tích hợp với tập lệnh huấn luyện YOLOv5. Mọi lượt huấn luyện từ bây giờ sẽ được ghi lại và lưu trữ bởi trình quản lý thí nghiệm ClearML.
Để tùy chỉnh tên dự án và tác vụ, hãy truyền --project và --name vào train.py. Các giá trị mặc định là YOLOv5 và Training. ClearML sử dụng / làm ký tự phân tách tiểu dự án, vì vậy hãy tránh dùng / trong tên dự án tùy chỉnh.
python train.py --img 640 --batch 16 --epochs 3 --data coco8.yaml --weights yolov5s.pt --cacheHoặc với 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 --cacheMỗi lần chạy sẽ ghi lại:
- Mã nguồn và các thay đổi chưa được commit
- Các gói đã cài đặt
- Các siêu tham số
- Các điểm kiểm tra mô hình (checkpoint) (sử dụng
--save-period nđể lưu sau mỗinkỷ nguyên) - Đầu ra console
- Các đại lượng (mAP_0.5, mAP_0.5:0.95, độ chính xác, recall, các hàm mất mát, tốc độ học)
- Chi tiết máy, thời gian chạy và ngày tạo
- Các biểu đồ được tạo như biểu đồ tương quan nhãn và ma trận nhầm lẫn
- Hình ảnh kèm theo hộp bao (bounding box) cho mỗi kỷ nguyên
- Trực quan hóa Mosaic theo từng epoch
- Hình ảnh kiểm chứng theo từng epoch
Mọi thứ đều xuất hiện trong giao diện ClearML để bạn có thể theo dõi quá trình huấn luyện 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 mô hình có hiệu suất tốt nhất, hoặc chọn nhiều thí nghiệm để so sánh cạnh nhau.
Đọc tiếp để tìm hiểu về tối ưu hóa siêu tham số và thực thi từ xa.
🔗 Quản lý phiên bản tập dữ liệu#
Việc lập phiên bản dữ liệu tách biệt với mã giúp dễ dàng tải xuống phiên bản mới nhất và đảm bảo khả năng tái lập hoàn toàn. Kho lưu trữ này chấp nhận ID phiên bản tập dữ liệu, tự động lấy dữ liệu nếu bị thiếu và ghi lại ID đó như một tham số tác vụ để bạn luôn biết dữ liệu nào đã được sử dụng trong thử nghiệm nào.

Chuẩn bị tập dữ liệu của bạn#
Kho lưu trữ YOLOv5 hỗ trợ nhiều tập dữ liệu thông qua các tệp cấu hình YAML. Theo mặc định, các tập dữ liệu sẽ tải xuống thư mục ../datasets tính từ gốc kho lưu trữ. Sau khi tải xuống coco128, cấu trúc thư mục sẽ trông như sau:
..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ LICENSE
|_ README.txtBất kỳ tập dữ liệu nào cũng hoạt động, miễn là bạn giữ nguyên cấu trúc này.
Tiếp theo, sao chép tệp YAML của tập dữ liệu vào thư mục gốc của tập dữ liệu — ClearML đọc tệp này để sử dụng tập dữ liệu đúng cách. Bạn có thể tự viết tệp YAML theo bố cục mẫu, đảm bảo nó xác định path, train, test, val, nc, và names.
..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ coco128.yaml # <---- HERE
|_ LICENSE
|_ README.txtTải lên tập dữ liệu của bạn#
Để đăng ký tập dữ liệu dưới dạng tập dữ liệu ClearML được lập phiên bản, hãy chuyển vào thư mục gốc của nó và chạy:
cd ../datasets/coco128
clearml-data sync --project YOLOv5 --name coco128 --folder .clearml-data sync là viết tắt của chuỗi sau, mà bạn cũng có thể chạy một cách tường minh:
# 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Đào tạo trên tập dữ liệu ClearML#
Sau khi tập dữ liệu được đăng ký, hãy trỏ quá trình đào tạo đến nó 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 siêu tham số#
Với các thử nghiệm và dữ liệu đã được lập phiên bản, bạn có thể xây dựng dựa trên chúng. Vì mỗi thử nghiệm được theo dõi sẽ nắm bắt toàn bộ môi trường — mã, các gói đã cài đặt và cấu hình — nên các lần chạy hoàn toàn có thể tái lập. ClearML cho phép bạn clone một thử nghiệm, thay đổi các tham số của nó và chạy lại tự động, đây chính là nền tảng của tối ưu hóa siêu tham số (HPO).
Để chạy HPO cục bộ, hãy sử dụng tập lệnh được đính kèm. Trước tiên hãy đảm bảo tác vụ đào tạo tồn tại trong trình quản lý thử nghiệm — tập lệnh sẽ clone nó và thay đổi các siêu tham số của nó.
Điền ID tác vụ 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.pyChuyển task.execute_locally() thành task.execute() để đẩy tác vụ vào hàng đợi ClearML cho tác nhân từ xa (remote agent) nhận xử lý.

🤯 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 chạy các thí nghiệm trên phần cứng mạnh mẽ hơn — một máy GPU tại chỗ (on-prem) hoặc một thể hiện đám mây. Đó là vai trò của ClearML Agent:
Mỗi thử nghiệm được theo dõi chứa mọi thứ cần thiết để tái lập nó trên một máy khác (các gói đã cài đặt, các thay đổi chưa commit và cấu hình). Một ClearML agent lắng nghe hàng đợi, nhận các tác vụ đến, tái tạo môi trường, chạy công việc và truyền các đại lượng và biểu đồ ngược lại trình quản lý thử nghiệm.
Biến bất kỳ máy nào — máy ảo đám mây, máy GPU cục bộ hoặc máy tính xách tay — thành ClearML agent với:
clearml-agent daemon --queue QUEUES_TO_LISTEN_TO [--docker]Cloning, Chỉnh sửa và Xếp hàng#
Với một agent đang chạy, bạn có thể chỉ định công việc trực tiếp từ giao diện người dùng:
- 🪄 Chuột phải vào một thử nghiệm và clone nó.
- 🎯 Chỉnh sửa các siêu tham số của nó.
- ⏳ Chuột phải vào tác vụ đã clone và thêm vào một hàng đợi mục tiêu.

Thực thi tác vụ từ xa#
Bạn cũng có thể đánh dấu một tập lệnh đang chạy để thực thi từ xa theo cách lập trình bằng cách thêm task.execute_remotely() sau khi bộ ghi nhật ký ClearML đã được khởi tạo. 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, việc chạy tập lệnh đào tạo sẽ thực thi đến dòng đó, đóng gói mã và gửi nó đến hàng đợi.
Workers tự động mở rộng#
ClearML đi kèm với các trình tự động chia tỷ lệ giúp khởi chạy các máy từ xa trên AWS, GCP hoặc Azure khi một hàng đợi có các thí nghiệm đang chờ, chuyển đổi chúng thành các tác nhân ClearML và tắt chúng đi khi hoàn thành công việc — vì vậy bạn chỉ trả tiền cho thời gian tính toán thực tế đang chạy.
Xem video hướng dẫn bắt đầu bên dưới:
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 mô hình Ultralytics, hãy xem hướng dẫn tích hợp ClearML của chúng tôi và khám phá cách bạn có thể nâng cao quy trình MLOps của mình với các công cụ theo dõi thí nghiệm khác.