ClearML Tích hợp
Về ClearML
ClearML là một hộp 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 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
🔦 Đào tạo và giám sát từ xaYOLOv5 Đào tạo chạy bằng cách sử dụng ClearML Người đạ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 người mới được đào tạo của bạn YOLOv5 mô hình hóa thành API chỉ với một vài lệnh sử dụng ClearML Phục vụ
Và nhiều hơn nữa. Tùy thuộc vào số lượng công cụ bạn muốn sử dụng, 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à/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í vào ClearML Dịch vụ lưu trữ hoặc bạn có thể thiết lập máy chủ của riêng mình, 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 nên sử dụng!
Cài đặt
clearml
python gói:Kết nối ClearML SDK đến máy chủ bằng cách tạo thông tin đăng nhập (đi ngay trên cùng Cài đặt -> Không gian làm việc -> Tạo thông tin đăng nhập mới), sau đó thực hiện lệnh bên dưới và làm theo hướng dẫn:
Đó là nó! Bạn đã hoàn tất 😎
🚀 Đào tạo YOLOv5 Với ClearML
Để bậ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 đào tạo từ bây giờ, sẽ được nắm bắt 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
, sử dụng --project
và --name
Lập luận của train.py
tập lệnh, 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 tiểu dự án, 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 dự án tùy chỉnh và tên nhiệm vụ:
python train.py --project my_project --name my_training --img 640 --batch 16 --epochs 3 --data coco8.yaml --weights yolov5s.pt --cache
Điều này sẽ nắm bắt:
- Mã nguồn + thay đổi không cam kết
- Gói đã cài đặt
- Tham số (Hyper)
- Tệp mô hình (sử dụng
--save-period n
để lưu một trạm kiểm soát cứ sau n kỷ nguyên) - Đầu ra bảng điều khiển
- Vô hướng (mAP_0.5, mAP_0.5: 0.95, độ chính xác, thu hồi, tổn thất, tỷ lệ 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 có hộp giới hạn theo từng thời đại
- Khảm mỗi kỷ nguyên
- Xác thực hình ảnh mỗi kỷ nguyên
Đó là rất 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ộ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!
Thậm chí chúng ta có thể làm nhiều hơn 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 xem nó hoạt động như thế nào!
🔗 Quản lý phiên bản tập dữ liệu
Lập phiên bản dữ liệu của bạn riêng biệt với mã của bạn nói chung 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 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ụ, 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ị tập dữ liệu của bạn
Các YOLOv5 kho lưu trữ 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 ../datasets
thư mục liên quan đến thư mục gốc kho lưu trữ. Vì vậy, nếu bạn đã tải xuống coco128
tập 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 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 của riêng bạn, miễn là bạn giữ 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. Tệp YAML này chứa thông tin ClearML sẽ cần sử dụng đúng tập dữ liệu. Bạn cũng có thể tự làm điều này, tất nhiên, chỉ cần làm theo cấu trúc của YAML ví dụ.
Về cơ bản chúng ta cần các phím 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
Để đưa tập dữ liệu này vào ClearML Là một tập dữ liệu phiên bản, hãy chuyển đến thư mục gốc tập dữ liệu và chạy lệnh sau:
Lệnh clearml-data sync
thực sự là một lệnh tốc ký. Bạn cũng có thể chạy lần lượt các lệnh này:
# 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 bằng cách sử dụng ClearML Tập dữ liệu
Bây giờ bạn có một ClearML tập dữ liệu, bạn có thể rất đơn giản sử dụng nó để đào tạo tùy chỉnh YOLOv5 🚀 Mô hình!
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ó các thử nghiệm và dữ liệu được phiên bản, đã đến lúc xem xét những gì chúng ta có thể xây dựng trên đầu!
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. 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 tôi chỉ có thể tự động chạy lại nó với các thông số mới này, về cơ bản đây là những gì HPO làm!
Để 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 một nhiệm vụ đào tạo đã được chạy ít nhất một lần, vì vậy nó nằm trong ClearML Trình quản lý thử nghiệm, về cơ bản chúng tôi 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 giấy tờ này template task
trong kịch bản đượ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()
để đặt nó trong một ClearML Xếp hàng và nhờ một nhân viên từ xa làm việc trên đó thay thế.
# 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 thi từ xa (nâng cao)
Chạy HPO cục bộ thực sự tiện dụng, nhưng nếu chúng ta muốn chạy thử nghiệm của mình trên một máy từ xa thì sao? Có lẽ bạn có quyền truy cập vào một 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 Đại lý đi vào chơi. Kiểm tra những gì nhân viên có thể làm tại đây:
Tóm lại: mọi thử nghiệm được theo dõi bởi trình quản lý thử nghiệm chứa đủ thông tin để tái tạo nó trên một máy khác nhau (gói đã cài đặt, thay đổi không cam kết, v.v.). Vì vậy, một ClearML Agent thực hiện điều đó: nó lắng nghe một hàng đợi cho các nhiệm 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 nó trong khi vẫn báo cáo 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 ảo 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ạy đơn giản:
Nhân bản, chỉnh sửa và xếp hàng đợi
Với đại lý của chúng tôi đang chạy, chúng tôi có thể cung cấp 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 tôi 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 thử nghiệm
🎯 Chỉnh sửa các siêu tham số theo những gì bạn muốn chúng trở thành
⏳ Hàng đợi tác vụ đến bất kỳ hàng đợi nào bằng cách bấm chuột phải vào tác vụ đó
Thực hiện một tác 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, để đại lý 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 kịch bản đào tạo sau 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 nó đến hàng đợi thay thế!
Công nhân Autoscaling
ClearML Đi kèm với autoscalers quá! Công cụ này sẽ tự động quay các máy từ xa mới trong đám mây bạn chọn (AWS, GCP, Azure) và biến chúng thành ClearML tổng đài viên sẽ hỗ trợ bạn bất cứ khi nào có thí nghiệm được phát hiện trong hàng đợi. Khi các tác vụ được xử lý, autoscaler sẽ tự động tắt các máy từ xa và bạn ngừng thanh toán!
Hãy xem video bắt đầu tự động chia tỷ lệ bên dưới.