Đón xem YOLO Vision 2025!
25 tháng 9, 2025
10:00 — 18:00 BST
Sự kiện kết hợp
Yolo Vision 2024

Huấn luyện và Giám sát Ultralytics YOLOv5 từ xa bằng ClearML

Nhóm Ultralytics

4 phút đọc

Ngày 21 tháng 10 năm 2022

Khám phá quan hệ đối tác của chúng tôi với ClearML để có trải nghiệm Ultralytics YOLOv5 nâng cao với tích hợp ML liền mạch, theo dõi thử nghiệm và hơn thế nữa.

Tại Ultralytics, chúng tôi hợp tác thương mại với các startup khác để giúp tài trợ cho việc nghiên cứu và phát triển các công cụ mã nguồn mở tuyệt vời của chúng tôi, như YOLOv5, để giữ cho chúng miễn phí cho tất cả mọi người. Bài viết này có thể chứa các liên kết liên kết đến các đối tác đó.

ClearML là đối tác mới nhất của chúng tôi: một bộ công cụ mã nguồn mở được thiết kế để giúp bạn tiết kiệm thời gian.

Với sứ mệnh đẩy nhanh việc ứng dụng ML, ClearML giúp tích hợp ML liền mạch vào bất kỳ sản phẩm phần mềm và phần cứng nào.

Tích hợp này giúp việc huấn luyện mô hình YOLOv5 và sử dụng trình quản lý thử nghiệm ClearML để theo dõi nó một cách tự động trở nên đơn giản hơn. Bạn có thể dễ dàng chỉ định ID phiên bản tập dữ liệu ClearML làm đầu vào dữ liệu và nó sẽ tự động được sử dụng để huấn luyện mô hình của bạn.

Nâng khả năng theo dõi thử nghiệm của bạn lên một tầm cao mới

  • Theo dõi mọi lần chạy huấn luyện YOLOv5 trong trình quản lý thử nghiệm.
  • Phiên bản hóa và dễ dàng 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.
  • Nhận mAP tốt nhất bằng cách sử dụng Tối ưu hóa siêu tham số ClearML.
  • Biến mô hình YOLOv5 mới được huấn luyện của bạn thành một API chỉ với một vài lệnh bằng cách sử dụng ClearML Serving.

Bạn có thể tùy ý sử dụng bao nhiêu công cụ trong số này, bạn có thể gắn bó với trình quản lý thử nghiệm hoặc xâu chuỗi tất cả chúng lại với nhau thành một quy trình ấn tượng.

Thiết lập mọi thứ

Để theo dõi các thử nghiệm và dữ liệu của bạn, ClearML cần giao tiếp với một máy chủ. Bạn có hai tùy chọn cho việc này: đăng ký miễn phí Dịch vụ được lưu trữ ClearML hoặc thiết lập máy chủ của riêng bạn, xem tại đây.

Ngay cả máy chủ cũng là mã nguồn mở, vì vậy nếu bạn đang xử lý dữ liệu nhạy cảm, thì đó không phải là vấn đề!

  1. Cài đặt gói clearml python: pip install clearml
  2. Kết nối ClearML SDK với máy chủ bằng cách tạo thông tin đăng nhập (truy cập Cài đặt ở trên cùng bên phải → Không gian làm việc → Tạo thông tin đăng nhập mới), sau đó thực thi lệnh bên dưới và làm theo hướng dẫn: clearml-init

Và thế là xong! Bạn đã sẵn sàng để bắt đầu...

Huấn luyện YOLOv5 Với ClearML

Để bật tính năng theo dõi thử nghiệm ClearML, chỉ cần cài đặt gói ClearML pip.

pip install clearml

Điều này sẽ cho phép tích hợp với tập lệnh huấn luyện YOLOv5. Mọi lần chạy huấn luyện từ bây giờ sẽ được chụp và lưu trữ bởi trình quản lý thử nghiệm ClearML. Nếu bạn muốn thay đổi project_name hoặc task_name, hãy truy cập trình ghi nhật ký tùy chỉnh của chúng tôi, nơi bạn có thể thay đổi nó: utils\/loggers\/clearml\/clearml_utils.py

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

Điều này sẽ ghi lại:

  • Mã nguồn + các thay đổi chưa cam kết
  • Các gói đã cài đặt
  • (Siêu) tham số
  • Các tệp mô hình (sử dụng --save-period n để lưu checkpoint sau mỗi n epochs)
  • Đầu ra Console
  • Các đại lượng vô hướng (mAP_0.5, mAP_0.5:0.95, độ chính xác, độ phủ, các loại loss, learning rate, ...)
  • Thông tin chung như chi tiết máy, thời gian chạy, ngày tạo, v.v.
  • Tất cả các biểu đồ được tạo ra như biểu đồ tương quan nhãn và ma trận nhầm lẫn
  • Hình ảnh với bounding box trên mỗi epoch
  • Mosaic trên mỗi epoch
  • Hình ảnh validation trên mỗi epoch

Không tệ! Giờ đây, chúng ta có thể trực quan hóa tất cả thông tin này trong giao diện người dùng ClearML để có được cái nhìn tổng quan về tiến trình training của mình. Thêm các cột tùy chỉnh vào chế độ xem bảng (chẳng hạn như mAP_0.5) để bạn có thể dễ dàng sắp xếp trên mô hình hoạt động tốt nhất. Hoặc chọn nhiều thử nghiệm và so sánh trực tiếp chúng!

Chúng ta thậm chí có thể làm được nhiều hơn nữa với tất cả thông tin này, như tối ưu hóa siêu tham số và thực thi từ xa, vì vậy hãy tiếp tục đọc để tìm hiểu cách thực hiện!

Quản lý phiên bản bộ dữ liệu

Việc kiểm soát phiên bản dữ liệu của bạn riêng biệt với mã của bạn thường là một ý tưởng hay và giúp bạn dễ dàng có được phiên bản mới nhất. Kho lưu trữ này hỗ trợ cung cấp ID phiên bản tập dữ liệu và nó sẽ đảm bảo lấy dữ liệu nếu nó chưa có ở đó. Bên cạnh đó, quy trình làm việc này cũng lưu ID tập dữ liệu đã sử dụng như một phần của các tham số tác vụ, vì vậy bạn sẽ luôn biết chắc chắn dữ liệu nào đã được sử dụng trong thí nghiệm nào!

Chuẩn bị bộ dữ liệu của bạn

Repository YOLOv5 hỗ trợ một số bộ dữ liệu khác nhau bằng cách sử dụng các tệp YAML chứa thông tin của chúng. Theo mặc định, các bộ dữ liệu được tải xuống thư mục ..\/datasets liên quan đến thư mục gốc của repository. Vì vậy, nếu bạn đã tải xuống bộ dữ liệu coco128 bằng liên kết trong YAML hoặc bằng các script do yolov5 cung cấp, bạn sẽ có cấu trúc thư mục này:

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

Nhưng đây có thể là bất kỳ bộ dữ liệu nào bạn muốn. Vui lòng sử dụng bộ dữ liệu của riêng bạn, miễn là bạn tuân thủ cấu trúc thư mục này.

Tiếp theo, ⚠️copy tệp YAML tương ứng vào thư mục gốc của bộ dữ liệu⚠️. Các tệp YAML này chứa thông tin mà ClearML sẽ cần để sử dụng đúng cách bộ dữ liệu. Bạn cũng có thể tự tạo tệp này, tất nhiên, chỉ cần làm theo cấu trúc của các YAML ví dụ.

Về cơ bản, chúng ta cần các key sau: path, train, test, val, nc, names.

..
|_ yolov5
|_ datasets
    |_ coco128
        |_ images
        |_ labels
        |_ coco128.yaml # ← TẠI ĐÂY!
        |_ LICENSE
        |_ README.txt

Tải bộ dữ liệu của bạn lên

Để đưa bộ dữ liệu này vào ClearML dưới dạng bộ dữ liệu được quản lý phiên bản, hãy chuyển đến thư mục gốc của bộ dữ liệu và chạy lệnh sau:

cd coco128

clearml-data sync --project YOLOv5 --name coco128 --folder .


Thực tế, lệnh clearml-data sync là một lệnh viết tắt. Bạn cũng có thể chạy tuần tự các lệnh sau:

# Tùy chọn thêm --parent nếu bạn muốn dựa phiên bản này

# trên một phiên bản dataset khác, để không có file trùng lặp nào được tải lên!

clearml-data create --name coco128 --project YOLOv5/p>

clearml-data add --files .

clearml-data close

Chạy Huấn Luyện Sử Dụng Dataset ClearML

Giờ đây, khi bạn đã có một dataset ClearML, bạn có thể dễ dàng sử dụng nó để huấn luyện các mô hình YOLOv5 tùy chỉnh.

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

Tối Ưu Hóa Siêu Tham Số

Bây giờ chúng ta đã có các thử nghiệm và phiên bản dữ liệu, đã đến lúc xem xét những gì chúng ta có thể xây dựng trên đó!

Sử dụng thông tin code, các package đã cài đặt và chi tiết môi trường, bản thân thử nghiệm giờ đây hoàn toàn có thể tái tạo được. Trên thực tế, ClearML cho phép bạn sao chép một thử nghiệm và thậm chí thay đổi các tham số của nó. Sau đó, chúng ta có thể chạy lại nó với các tham số mới một cách tự động, đây về cơ bản là những gì HPO thực hiện!

Để chạy tối ưu hóa siêu tham số cục bộ, chúng tôi đã cung cấp một script dựng sẵn cho bạn. Chỉ cần đảm bảo rằng một tác vụ huấn luyện đã được chạy ít nhất một lần, để nó nằm trong trình quản lý thử nghiệm ClearML, về cơ bản chúng ta sẽ sao chép nó và thay đổi các siêu tham số của nó.

Bạn sẽ cần điền ID của tác vụ template này vào script được tìm thấy tại utils/loggers/clearml/hpo.py và sau đó chỉ cần chạy nó. Bạn có thể thay đổi task.execute_locally() thành task.execute() để đưa nó vào hàng đợi ClearML và để một agent từ xa xử lý nó.

# Để sử dụng optuna, hãy cài đặt nó trước, nếu không bạn có thể thay đổi trình tối ưu hóa thành chỉ RandomSearch pip install optuna python utils/loggers/clearml/hpo.py

Thực Thi Từ Xa (Nâng Cao)

Chạy HPO cục bộ rất tiện lợi, nhưng nếu chúng ta muốn chạy các thử nghiệm của mình trên một máy chủ từ xa thì sao? Có thể bạn có quyền truy cập vào một máy GPU rất mạnh tại chỗ hoặc bạn có một khoản ngân sách để sử dụng GPU đám mây. Đây là lúc ClearML Agent phát huy tác dụng.

Xem những gì agent có thể làm tại đây:

Nói tóm lại: mọi thử nghiệm được theo dõi bởi trình quản lý thử nghiệm đều chứa đủ thông tin để tái tạo nó trên một máy khác (các package đã cài đặt, các thay đổi chưa commit, v.v.). Vì vậy, một ClearML agent thực hiện đúng điều đó: nó lắng nghe một hàng đợi cho các tác vụ đến và khi nó tìm thấy một tác vụ, nó sẽ tạo lại môi trường và chạy nó trong khi vẫn báo cáo các scalar, plot, v.v. cho trình quản lý thử nghiệm.

Bạn có thể biến bất kỳ máy nào (VM đám mây, máy GPU cục bộ, máy tính xách tay của riêng bạn) thành một tác nhân ClearML bằng cách chạy đơn giản:

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

Sao Chép, Chỉnh Sửa và Đưa Vào Hàng Đợi

Khi agent của chúng ta đang chạy, chúng ta có thể giao việc cho nó. Bạn còn nhớ từ phần HPO rằng chúng ta có thể nhân bản một tác vụ và chỉnh sửa các siêu tham số không? Chúng ta cũng có thể làm điều đó từ giao diện!

🪄 Nhân bản thử nghiệm bằng cách nhấp chuột phải vào nó

🎯 Chỉnh sửa các siêu tham số theo ý muốn của bạn

⏳ Đưa tác vụ vào hàng đợi bất kỳ bằng cách nhấp chuột phải vào nó

Thực thi một tác vụ từ xa

Bây giờ bạn có thể nhân bản một tác vụ như chúng tôi đã giải thích ở trên, hoặc chỉ cần đánh dấu script hiện tại của bạn bằng cách thêm task.execute_remotely() và khi thực thi, nó sẽ được đưa vào hàng đợi để agent bắt đầu làm việc!

Để chạy script huấn luyện YOLOv5 từ xa, tất cả những gì bạn phải làm là thêm dòng này vào script training.py sau khi trình ghi nhật ký ClearML được khởi tạo:

# ... # 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 either None is user did not choose for ClearML dataset or is filled in by ClearML data_dict = loggers.clearml.data_dict # ...

Khi chạy script huấn luyện sau thay đổi này, python sẽ chạy script cho đến dòng đó, sau đó nó sẽ đóng gói code và gửi nó đến hàng đợi!

Tự động mở rộng workers

ClearML cũng đi kèm với bộ tự động mở rộng! Công cụ này sẽ tự động khởi động các máy từ xa mới trên đám mây bạn chọn (AWS, GCP, Azure) và biến chúng thành các tác nhân ClearML cho bạn bất cứ khi nào có các thử nghiệm được phát hiện trong hàng đợi. Sau khi các tác vụ được xử lý, bộ tự động mở rộng sẽ tự động tắt các máy từ xa và bạn ngừng trả tiền! Xem video bắt đầu sử dụng bộ tự động mở rộng bên dưới.

Bạn có câu hỏi nào không? Tham gia cộng đồng của chúng tôi và đặt câu hỏi của bạn ngay hôm nay!

Hãy cùng nhau xây dựng tương lai
của AI!

Bắt đầu hành trình của bạn với tương lai của học máy

Bắt đầu miễn phí
Đã sao chép liên kết vào clipboard