Tích hợp ClearML

ClearML MLOps experiment tracking platform

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 quy trình học máy (machine learning) và tiết kiệm thời gian kỹ thuật.

  • 🔨 Theo dõi mọi quá trình huấn luyện 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 với công cụ quản lý phiên bản dữ liệu tích hợp của ClearML.
  • 🔦 Huấn luyện và giám sát từ xa các quy trình 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ố (hyperparameter) của ClearML.
  • 🔭 Chuyển đổi mô hình YOLOv5 đã huấn luyện thành API chỉ với vài câu lệnh sử dụng ClearML Serving.

Sử dụng bao nhiêu công cụ tùy theo nhu cầu của bạn — 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 pipeline hoàn chỉnh.

Bảng điều khiển các chỉ số ClearML hiển thị số liệu huấn luyện YOLOv5

🦾 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ý ClearML Hosted Service miễn phí, hoặc
  • Triển khai máy chủ ClearML của riêng bạn — đây là nền tảng 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 đó, hãy cài đặt gói Python clearml và kết nối SDK với máy chủ của bạn:

pip install clearml

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

clearml-init

Làm theo các hướng dẫn. Vậy là xong — việc thiết lập đã hoàn tất.

🚀 Huấn luyện 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 thực hiện:

pip install clearml

Việc này sẽ kích hoạt tích hợp với tập lệnh huấn luyện YOLOv5. Kể từ bây giờ, mọi quá trình huấn luyện sẽ được ghi lại và lưu trữ bởi trình quản lý thí nghiệm của ClearML.

Để tùy chỉnh tên dự án và tác vụ, hãy truyền --project--name vào train.py. Các giá trị mặc định là YOLOv5Training. ClearML sử dụng / làm dấu phân cách dự án con, 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 --cache

Hoặ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 --cache

Mỗ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
  • Siêu tham số (Hyperparameters)
  • Checkpoint mô hình (sử dụng --save-period n để lưu sau mỗi n epoch)
  • Đầu ra console
  • Các chỉ số (mAP_0.5, mAP_0.5:0.95, độ chính xác, recall, 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 đồ đã tạo như correlogram nhãn và ma trận nhầm lẫn
  • Hình ảnh kèm BBox theo mỗi epoch
  • Hình ảnh trực quan hóa Mosaic theo mỗi epoch
  • Hình ảnh xác thực (validation) theo mỗi epoch

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

Đọc tiếp 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 quản lý phiên bản dữ liệu tách biệt với mã nguồn giúp dễ dàng lấy phiên bản mới nhất và đảm bảo tính tái lập đầy đủ. 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 thiếu và ghi lại ID dưới dạng 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.

Giao diện quản lý phiên bản tập dữ liệu ClearML

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 tệp cấu hình YAML. Theo mặc định, tập dữ liệu sẽ tải xuống thư mục ../datasets so với 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.txt

Bấ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 ví dụ, đảm bảo tệp xác định các trường path, train, test, val, nc, và names.

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

Tả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ó phiên bản, hãy chuyển đến 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à lệnh viết tắt cho chuỗi lệnh sau, bạn cũng có thể chạy từng bước một cách 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

Huấn luyện trên tập dữ liệu ClearML

Khi tập dữ liệu đã được đăng ký, hãy trỏ quá trình huấn luyện vào đó 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 quản lý 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 đều ghi lại toàn bộ môi trường — mã, gói đã cài đặt và cấu hình — các lần chạy hoàn toàn có khả năng tái lập. ClearML cho phép bạn clone (sao chép) một thí nghiệm, thay đổi tham số của nó và chạy lại tự động, đây 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 đi kèm. Trước tiên, hãy đảm bảo một tác vụ huấn luyện đã 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.py

Chuyển task.execute_locally() thành task.execute() để đẩy công việc vào hàng đợi ClearML cho một agent từ xa tiếp 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 tiện lợi, 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 instance trên cloud. Đó là vai trò của ClearML Agent:

Mỗi thí nghiệm được theo dõi đều 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, thay đổi chưa commit và cấu hình). Một ClearML agent lắng nghe hàng đợi, tiếp nhận các tác vụ sắp tới, tái tạo môi trường, chạy công việc và truyền trực tiếp các chỉ số và biểu đồ trở lại trình quản lý thí nghiệm.

Biến bất kỳ máy nào — máy ảo trên cloud, máy GPU cục bộ hoặc laptop — thành một ClearML agent với:

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

Clone, Chỉnh sửa và Đưa vào hàng đợi

Với một agent đang chạy, bạn có thể gán công việc cho nó trực tiếp từ giao diện UI:

  • 🪄 Chuột phải vào một thí nghiệm và chọn clone.
  • 🎯 Chỉnh sửa các siêu tham số của nó.
  • ⏳ Chuột phải vào tác vụ đã clone và đưa nó vào một hàng đợi mục tiêu.

Đưa tác vụ vào hàng đợi từ giao diện UI

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 bằng cách thêm task.execute_remotely() sau khi logger ClearML đã được khởi tạo. Thêm dòng được tô sáng 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 huấn luyện sẽ thực thi cho đến dòng đó, đóng gói mã và chuyển nó đến hàng đợi.

Tự động mở rộng quy mô (Autoscaling) các Workers

ClearML đi kèm với autoscalers giúp khởi tạo các máy từ xa trên AWS, GCP hoặc Azure khi hàng đợi có các thí nghiệm chờ, chuyển đổi chúng thành các ClearML agent và tắt chúng khi công việc hoàn tất — vì vậy bạn chỉ phải trả phí cho tài nguyên tính toán 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 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ể tăng cường quy trình MLOps của mình với các công cụ theo dõi thí nghiệm khác.

Bình luận