Yolo Tầm nhìn Thâm Quyến
Thâm Quyến
Tham gia ngay

Đào tạo và giám sát từ xa Ultralytics YOLOv5 Sử dụng ClearML

Ultralytics Đội

4 phút đọc

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

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

Tại Ultralytics chúng tôi hợp tác thương mại với các công ty khởi nghiệp khác để giúp chúng tôi tài trợ cho việc nghiên cứu và phát triển các công cụ nguồn mở tuyệt vời của chúng tôi, như YOLOv5 , để giữ 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 thúc đẩy việc áp dụng ML, ClearML giúp ML dễ dàng tích hợp vào bất kỳ sản phẩm Phần mềm và Phần cứng nào hiện có.

Sự tích hợp này làm cho việc đào tạo mô hình YOLOv5 và sử dụng nó trở nên đơn giản hơn ClearML người quản lý thí nghiệm để track nó tự động. Bạn có thể dễ dàng chỉ định một ClearML ID phiên bản tập dữ liệu làm dữ liệu đầu vào và nó sẽ tự động được sử dụng để đào tạo 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 YOLOv5 chạy đào tạo trong trình quản lý thí nghiệm.
  • Phiên bản và dễ dàng truy cập dữ liệu đào tạo tùy chỉnh của bạn với tích hợp ClearML Công cụ quản lý phiên bản dữ liệu.
  • Nhận được những điều tốt nhất mAP sử dụng ClearML Tối ưu hóa siêu tham số.
  • Biến những người mới được đào tạo của bạn YOLOv5 mô hình thành một API chỉ với một vài lệnh sử dụng ClearML Phục vụ.

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ứ

Để giữ track của các thí nghiệm và dữ liệu của bạn, ClearML cần giao tiếp với máy chủ. Bạn có hai lựa chọn: đăng ký miễn phí ClearML Dịch vụ lưu trữ 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 clearml python gói: pip install clearml
  2. Kết nối ClearML SDK tới máy chủ bằng cách tạo thông tin xác thực (đi tới đầu trang bên phải đến Cài đặt → Không gian làm việc → Tạo thông tin xác thực mới), sau đó thực hiện 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...

Đào tạo YOLOv5 Với ClearML

Để kích hoạt ClearML theo dõi thử nghiệm, chỉ cần cài đặt ClearML gói pip.

cài đặt pip clearml

Điều này sẽ cho phép tích hợp với YOLOv5 kịch bản đào tạo. Mọi lần chạy đào tạo từ bây giờ sẽ được ghi lại và lưu trữ bởi ClearML Trình quản lý thử nghiệm. 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: 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
  • Số vô hướng ( mAP _0,5, mAP _0,5:0,95, độ chính xác, khả năng thu hồi, mất mát, tốc độ học tập, ...)
  • 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ệ lắm! Bây giờ, chúng ta có thể hình dung tất cả thông tin này trong ClearML Giao diện người dùng để có cái nhìn tổng quan về tiến độ đào tạo của chúng tôi. Thêm các cột tùy chỉnh vào chế độ xem bảng (ví dụ: mAP _0,5) để bạn có thể dễ dàng sắp xếp theo mô hình hiệu suất 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

Các YOLOv5 Kho lưu trữ hỗ trợ một số tập 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 tập dữ liệu được tải xuống thư mục ../datasets liên quan đến thư mục gốc của kho lưu trữ. Vì vậy, nếu bạn đã tải xuống tập dữ liệu coco128 bằng liên kết trong YAML hoặc bằng các tập lệnh được cung cấp bởi yolov5 , bạn sẽ nhận được cấu trúc thư mục này:

..
|_ yolov5
|_ tập dữ liệu
|_ coco128
|_ hình ảnh
|_ nhãn
|_ GIẤY PHÉP
|_ 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, ⚠️sao chép tệp YAML tương ứng vào thư mục gốc của thư mục tập dữ liệu⚠️. Các tệp YAML này chứa thông tin ClearML sẽ cần sử dụng tập dữ liệu một cách chính xác. Tất nhiên, bạn cũng có thể tự làm điều này, chỉ cần làm theo cấu trúc của tệp YAML mẫu.

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

..
|_ yolov5
|_ tập dữ liệu
|_ coco128
|_ hình ảnh
|_ nhãn
|_ coco128. yaml # ← ĐÂY!
|_ GIẤY PHÉP
|_ README.txt

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

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

cd coco128

clearml -đồng bộ dữ liệu --dự án YOLOv5 --tên coco128 --thư mục .


Lệnh clearml -data sync thực chất là một lệnh viết tắt. Bạn cũng có thể chạy các lệnh này lần lượt:

# 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 tạo --tên coco128 --dự án YOLOv5 /p>

clearml -data thêm --files .

clearml -dữ liệu đóng

Chạy đào tạo sử dụng A ClearML Bộ dữ liệu

Bây giờ bạn đã có một ClearML tập dữ liệu, bạn có thể dễ dàng sử dụng nó để đào tạo tùy chỉnh YOLOv5 các mô hì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 mã, các gói đã cài đặt và chi tiết môi trường, bản thân thí nghiệm giờ đây có thể được tái tạo hoàn toàn. 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 thông số của nó. Sau đó, chúng ta có thể tự động chạy lại thí nghiệm với các thông số mới này, về cơ bản đây chính 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 đã bao gồm một tập lệnh được tạo sẵn cho bạn. Chỉ cần đảm bảo rằng tác vụ đào tạo đã được chạy ít nhất một lần, để nó nằm trong ClearML người quản lý thí nghiệm, 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ụ mẫu này vào tập lệnh đượ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 ClearML xếp hàng và để một tác nhân từ xa xử lý thay thế.

# Để 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 RandomSearch pip install optuna python tiện ích/người ghi nhật ký/ clearml /hpo.py

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

Chạy HPO cục bộ thực sự tiện lợi, nhưng nếu chúng ta muốn chạy thử nghiệm trên một máy tính từ xa thì sao? Có thể bạn có quyền truy cập vào một công cụ rất mạnh mẽ GPU máy tại chỗ hoặc bạn có một số ngân sách để sử dụng GPU đám mây. Đây là nơi ClearML Người đại diện tham gia vào cuộc chơi.

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

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

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

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 YOLOv5 tập lệnh đào tạo từ xa, tất cả những gì bạn phải làm là thêm dòng này vào tập lệnh training.py sau ClearML logger đã đượ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 tập lệnh đào tạo sau khi thay đổi này, python sẽ chạy tập lệnh cho đến dòng đó, sau đó nó sẽ đóng gói mã và gửi vào hàng đợi!

Tự động mở rộng workers

ClearML Công cụ này cũng đi kèm với bộ tự động điều chỉnh quy mô! Công cụ này sẽ tự động khởi tạo các máy chủ từ xa mới trên nền tảng đám mây bạn chọn (AWS, GCP, Azure) và biến chúng thành ClearML Các tác nhân hỗ trợ bạn bất cứ khi nào phát hiện có thí nghiệm trong hàng đợi. Sau khi xử lý xong các tác vụ, bộ điều chỉnh tự động sẽ tự động tắt các máy từ xa và bạn sẽ không phải trả phí nữa! Xem video hướng dẫn sử dụng bộ điều chỉnh tự độ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í