ClearML Tích hợp
Về ClearML
ClearML là 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 ⏱️.
🔨 Theo dõi mọi YOLOv5 đào tạo chạy trong 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
🔦 Đào tạo và giám sát từ xa YOLOv5 chạy đào tạo sử dụng ClearML Đại lý
🔬 Nhận mAP tốt nhất bằng cách sử dụng ClearML Tối ưu hóa siêu tham số
🔭 Biến mô hình YOLOv5 mới được đào tạo của bạn thành API chỉ bằng một vài lệnh sử dụng ClearML Phục vụ
Và còn nhiều hơn thế nữa. 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 kết hợp tất cả chúng lại 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à/hoặc dữ liệu của bạn, ClearML cần giao tiếp với máy chủ. Bạn có 2 lựa chọn để có được một:
Đăng ký miễn phí Dịch vụ lưu trữ ClearML hoặc bạn có thể thiết lập máy chủ riêng, xem tại đây . Ngay cả máy chủ cũng là mã nguồn mở, vì vậy ngay cả khi bạn đang xử lý dữ liệu nhạy cảm, bạn vẫn có thể sử dụng!
-
Cài đặt
clearml
python bưu kiện: -
Kết nối ClearML SDK tới máy chủ bằng cách tạo thông tin xác thực (vào phần trên cùng bên phải tới 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:
Vậy là xong! Bạn đã hoàn tất 😎
🚀 Đà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.
Đ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 người quản lý thí nghiệm.
Nếu bạn muốn thay đổi project_name
hoặc task_name
, sử dụng --project
Và --name
các lập luận của train.py
script, theo mặc định dự án sẽ được gọi YOLOv5
và nhiệm vụ Training
. XIN LƯU Ý: ClearML sử dụng /
như một dấu phân cách cho các dự án con, vì vậy hãy cẩn thận khi sử dụng /
trong tên dự án của bạn!
hoặc với tên dự án và nhiệm vụ 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
Thao tác này sẽ ghi lại:
- Mã nguồn + những thay đổi chưa cam kết
- Các gói đã cài đặt
- (Siêu) tham số
- Tệp mô hình (sử dụng
--save-period n
để lưu một điểm kiểm tra sau mỗi n kỷ nguyên) - Đầu ra của bảng điều khiển
- 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, ...)
- 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 có hộp giới hạn theo từng thời đại
- Khảm theo thời đại
- Hình ảnh xác thực theo từng thời đại
Quá nhiều phải không? 🤯 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 trình đà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ụ như mAP_0.5) để bạn có thể dễ dàng sắp xếp theo 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 nếu bạn muốn biết cách thức hoạt động của nó!
🔗 Quản lý phiên bản bộ dữ liệu
Việc tạo phiên bản riêng cho dữ liệu của bạn khỏi mã của bạn thường là một ý tưởng hay và cũng 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à sẽ đảm bảo lấy được dữ liệu nếu dữ liệu 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 tham số tác vụ, do đó 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 ../datasets
thư mục 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 coco128
bộ dữ liệu sử dụng liên kết trong YAML hoặc với 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:
Nhưng đây có thể là bất kỳ tập dữ liệu nào bạn muốn. Hãy thoải mái sử dụng tập 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 tập dữ liệu ⚠️. Tệp YAML này chứa thông tin ClearML sẽ cần sử dụng đúng tập dữ liệu. 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 YAML mẫu.
Về cơ bản chúng ta cần những chìa khóa sau: path
, train
, test
, val
, nc
, 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
Để 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 đến thư mục gốc của tập dữ liệu và chạy lệnh sau:
Lệnh clearml-data sync
thực ra 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:
# Optionally add --parent <parent_dataset_id> if you want to base
# this version on another dataset version, so no duplicate files are uploaded!
clearml-data create --name coco128 --project YOLOv5
clearml-data add --files .
clearml-data close
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ể sử dụng nó một cách rất đơn giản để đào tạo tùy chỉnh YOLOv5 🚀 người mẫu!
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ố
Bây giờ chúng ta đã có phiên bản dữ liệu và thử nghiệm, đã đến lúc xem xét những gì chúng ta có thể xây dựng dựa 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 hiện có thể 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ể chạy lại thí nghiệm với các thông số mới này một cách tự động, 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, vì vậy 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 phải điền ID của cái này template task
trong 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()
ĐẾN task.execute()
để đưa nó vào một ClearML xếp hàng và để một tác nhân từ xa xử lý thay.
# To use optuna, install it first, otherwise you can change the optimizer to just be RandomSearch
pip install optuna
python utils/loggers/clearml/hpo.py
🤯 Thực hiện 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ừ xa thì sao? Có thể bạn có quyền truy cập vào một 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 Agent sẽ vào cuộc. Hãy xem agent có thể làm gì ở đâ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 một tác vụ, 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, máy tính xách tay của riêng bạn ...) thành một ClearML đại lý bằng cách chỉ cần chạy:
Sao chép, Chỉnh sửa và Xếp hàng
Với tác nhân của chúng ta đang chạy, chúng ta có thể cho nó một số công việc. Hãy nhớ từ phần HPO rằng chúng ta có thể sao chép một tác vụ và chỉnh sửa các siêu tham số? Chúng ta cũng có thể làm điều đó từ giao diện!
🪄 Sao chép 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 bất kỳ hàng đợi nào bằng cách nhấp chuột phải vào tác vụ đó
Thực hiện một nhiệm vụ từ xa
Bây giờ bạn có thể sao chép một tác vụ như chúng tôi đã giải thích ở trên hoặc chỉ cần đánh dấu tập lệnh hiện tại của bạn bằng cách thêm task.execute_remotely()
và khi thực hiện, nó sẽ được đưa vào hàng đợi để tác nhân bắt đầu xử lý!
Để 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!
Công nhân tự động mở rộng quy mô
ClearML cũng đi kèm với autoscaler! Công cụ này sẽ tự động khởi động các máy từ xa mới trên đám mây mà bạn chọn (AWS, GCP, Azure) và biến chúng thành ClearML các tác nhân 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ý, trình tự động mở rộng sẽ tự động tắt các máy từ xa và bạn ngừng trả tiền!
Hãy xem video hướng dẫn sử dụng bộ tự động cân chỉnh bên dưới.