Bỏ để qua phần nội dung

ClearML Tích hợp

Rõ ràng|MLRõ ràng|ML

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ụ lập 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!

ClearML Bảng điều khiển vô hướ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:

    pip install clearml
    
  • 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:

    clearml-init
    

Đó 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.

pip install clearml>=1.2.0

Đ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--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!

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

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 lô được tạo ra như correlogram nhãn và ma trận nhầm lẫn
  • Hình ảnh với các hộp giới hạn trên mỗi kỷ nguyên
  • 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!

ClearML Giao diện tập dữ liệu

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:

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

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:

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

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

HPO

🤯 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ó 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 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 GPU cục bộ, 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:

clearml-agent daemon --queue <queues_to_listen_to> [--docker]

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ụ đó

Hàng đợi một tác vụ từ giao diện người dùng

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.

Xem video



Created 2023-11-12, Updated 2024-06-02
Authors: glenn-jocher (7), RizwanMunawar (1)

Ý kiến