Điều chỉnh siêu tham số hiệu quả với Ray Tune và YOLO11
Điều chỉnh siêu tham số là rất quan trọng trong việc đạt được hiệu suất mô hình cao nhất bằng cách khám phá bộ siêu tham số tối ưu. Điều này liên quan đến việc chạy thử nghiệm với các siêu tham số khác nhau và đánh giá hiệu suất của từng thử nghiệm.
Tăng tốc điều chỉnh với Ultralytics YOLO11 và Ray Tune
Ultralytics YOLO11 kết hợp Ray Tune để điều chỉnh siêu tham số, hợp lý hóa việc tối ưu hóa siêu tham số mô hình YOLO11. Với Ray Tune, bạn có thể sử dụng các chiến lược tìm kiếm nâng cao, song song và dừng sớm để đẩy nhanh quá trình điều chỉnh.
Điều chỉnh tia
Ray Tune là một thư viện điều chỉnh siêu tham số được thiết kế để đạt hiệu quả và tính linh hoạt. Nó hỗ trợ nhiều chiến lược tìm kiếm, song song và chiến lược dừng sớm, và tích hợp liền mạch với các khuôn khổ học máy phổ biến, bao gồm Ultralytics YOLO11.
Tích hợp với Weights & Biases
YOLO11 cũng cho phép tích hợp tùy chọn với Weights & Biases để theo dõi quá trình điều chỉnh.
Cài đặt
Để cài đặt các gói cần thiết, hãy chạy:
Cài đặt
Sử dụng
Sử dụng
tune()
Tham số phương pháp
Các tune()
phương pháp trong YOLO11 cung cấp giao diện dễ sử dụng để điều chỉnh siêu tham số với Ray Tune. Nó chấp nhận một số đối số cho phép bạn tùy chỉnh quy trình điều chỉnh. Dưới đây là giải thích chi tiết về từng tham số:
Thông số | Kiểu | Sự miêu tả | Giá trị mặc định |
---|---|---|---|
data | str | Tệp cấu hình tập dữ liệu (ở định dạng YAML) để chạy bộ điều chỉnh. Tệp này phải chỉ định đường dẫn dữ liệu đào tạo và xác thực , cũng như các thiết lập cụ thể khác của tập dữ liệu. | |
space | dict, optional | Từ điển định nghĩa không gian tìm kiếm siêu tham số cho Ray Tune. Mỗi khóa tương ứng với một tên siêu tham số và giá trị chỉ định phạm vi giá trị để khám phá trong quá trình điều chỉnh. Nếu không được cung cấp, YOLO11 sẽ sử dụng không gian tìm kiếm mặc định với nhiều siêu tham số khác nhau. | |
grace_period | int, optional | Thời gian gia hạn theo epoch cho trình lập lịch ASHA trong Ray Tune. Trình lập lịch sẽ không chấm dứt bất kỳ thử nghiệm nào trước số epoch này, cho phép mô hình có một số đào tạo tối thiểu trước khi đưa ra quyết định dừng sớm. | 10 |
gpu_per_trial | int, optional | Số lượng GPU cần phân bổ cho mỗi lần dùng thử trong quá trình điều chỉnh. Điều này giúp quản lý GPU sử dụng, đặc biệt là trong đa -GPU Môi trường. Nếu không được cung cấp, bộ chỉnh sẽ sử dụng tất cả các GPU có sẵn. | Không ai |
iterations | int, optional | Số lượng thử nghiệm tối đa để chạy trong quá trình điều chỉnh. Tham số này giúp kiểm soát tổng số tổ hợp siêu tham số được thử nghiệm, đảm bảo quá trình điều chỉnh không chạy vô thời hạn. | 10 |
**train_args | dict, optional | Các đối số bổ sung để chuyển đến train() phương pháp trong quá trình điều chỉnh. Những đối số này có thể bao gồm các thiết lập như số kỷ nguyên đào tạo, kích thước lôvà các cấu hình đào tạo cụ thể khác. | {} |
Bằng cách tùy chỉnh các tham số này, bạn có thể tinh chỉnh quy trình tối ưu hóa siêu tham số cho phù hợp với nhu cầu cụ thể và tài nguyên tính toán sẵn có của mình.
Mô tả không gian tìm kiếm mặc định
Bảng sau đây liệt kê các tham số không gian tìm kiếm mặc định để điều chỉnh siêu tham số trong YOLO11 với Ray Tune. Mỗi tham số có một phạm vi giá trị cụ thể được xác định bởi tune.uniform()
.
Thông số | Phạm vi giá trị | Sự miêu tả |
---|---|---|
lr0 | tune.uniform(1e-5, 1e-1) | Tốc độ học ban đầu |
lrf | tune.uniform(0.01, 1.0) | Yếu tố tỷ lệ học tập cuối cùng |
momentum | tune.uniform(0.6, 0.98) | Đà |
weight_decay | tune.uniform(0.0, 0.001) | Phân rã trọng lượng |
warmup_epochs | tune.uniform(0.0, 5.0) | Kỷ nguyên khởi động |
warmup_momentum | tune.uniform(0.0, 0.95) | Đà khởi động |
box | tune.uniform(0.02, 0.2) | Trọng lượng hộp giảm |
cls | tune.uniform(0.2, 4.0) | Lớp học giảm cân |
hsv_h | tune.uniform(0.0, 0.1) | Phạm vi tăng cường Huế |
hsv_s | tune.uniform(0.0, 0.9) | Phạm vi tăng độ bão hòa |
hsv_v | tune.uniform(0.0, 0.9) | Phạm vi tăng giá trị (độ sáng) |
degrees | tune.uniform(0.0, 45.0) | Phạm vi tăng cường xoay (độ) |
translate | tune.uniform(0.0, 0.9) | Phạm vi tăng cường dịch thuật |
scale | tune.uniform(0.0, 0.9) | Phạm vi tăng cường mở rộng quy mô |
shear | tune.uniform(0.0, 10.0) | Phạm vi tăng lực cắt (độ) |
perspective | tune.uniform(0.0, 0.001) | Phạm vi tăng cường phối cảnh |
flipud | tune.uniform(0.0, 1.0) | Xác suất tăng cường lật dọc |
fliplr | tune.uniform(0.0, 1.0) | Xác suất tăng cường lật ngang |
mosaic | tune.uniform(0.0, 1.0) | Xác suất tăng khảm |
mixup | tune.uniform(0.0, 1.0) | Xác suất tăng hỗn hợp |
copy_paste | tune.uniform(0.0, 1.0) | Xác suất tăng cường sao chép-dán |
Ví dụ về không gian tìm kiếm tùy chỉnh
Trong ví dụ này, chúng tôi trình bày cách sử dụng không gian tìm kiếm tùy chỉnh để điều chỉnh siêu tham số với Ray Tune và YOLO11. Bằng cách cung cấp không gian tìm kiếm tùy chỉnh, bạn có thể tập trung quá trình điều chỉnh vào các siêu tham số cụ thể cần quan tâm.
Sử dụng
Trong đoạn mã trên, chúng ta tạo ra một YOLO mô hình với trọng số được đào tạo trước "yolo11n.pt". Sau đó, chúng tôi gọi tune()
phương pháp, chỉ định cấu hình tập dữ liệu với "coco8.yaml". Chúng tôi cung cấp một không gian tìm kiếm tùy chỉnh cho tỷ lệ học tập ban đầu lr0
Sử dụng từ điển có khóa "LR0" và giá trị tune.uniform(1e-5, 1e-1)
. Cuối cùng, chúng ta truyền các đối số đào tạo bổ sung, chẳng hạn như số lượng kỷ nguyên trực tiếp vào phương thức điều chỉnh là epochs=50
.
Xử lý kết quả Ray Tune
Sau khi chạy thử nghiệm điều chỉnh siêu tham số với Ray Tune, bạn có thể muốn thực hiện các phân tích khác nhau về kết quả thu được. Hướng dẫn này sẽ đưa bạn qua các quy trình công việc phổ biến để xử lý và phân tích các kết quả này.
Tải kết quả thử nghiệm Tune từ một thư mục
Sau khi chạy thử nghiệm điều chỉnh với tuner.fit()
, bạn có thể tải kết quả từ một thư mục. Điều này rất hữu ích, đặc biệt nếu bạn đang thực hiện phân tích sau khi kịch bản đào tạo ban đầu đã thoát.
experiment_path = f"{storage_path}/{exp_name}"
print(f"Loading results from {experiment_path}...")
restored_tuner = tune.Tuner.restore(experiment_path, trainable=train_mnist)
result_grid = restored_tuner.get_results()
Phân tích cấp độ thử nghiệm cơ bản
Xem tổng quan về cách các bản dùng thử được thực hiện. Bạn có thể nhanh chóng kiểm tra xem có bất kỳ lỗi nào trong quá trình dùng thử hay không.
Phân tích cấp độ dùng thử cơ bản
Truy cập các cấu hình siêu tham số dùng thử riêng lẻ và các chỉ số được báo cáo gần đây nhất.
for i, result in enumerate(result_grid):
print(f"Trial #{i}: Configuration: {result.config}, Last Reported Metrics: {result.metrics}")
Vẽ toàn bộ lịch sử của các số liệu được báo cáo cho một thử nghiệm
Bạn có thể vẽ lịch sử của các chỉ số được báo cáo cho mỗi thử nghiệm để xem các chỉ số phát triển như thế nào theo thời gian.
import matplotlib.pyplot as plt
for i, result in enumerate(result_grid):
plt.plot(
result.metrics_dataframe["training_iteration"],
result.metrics_dataframe["mean_accuracy"],
label=f"Trial {i}",
)
plt.xlabel("Training Iterations")
plt.ylabel("Mean Accuracy")
plt.legend()
plt.show()
Tóm tắt
Trong tài liệu này, chúng tôi đã đề cập đến các quy trình công việc phổ biến để phân tích kết quả của các thử nghiệm chạy với Ray Tune bằng cách sử dụng Ultralytics. Các bước chính bao gồm tải kết quả thử nghiệm từ một thư mục, thực hiện phân tích cơ bản ở cấp độ thử nghiệm và cấp độ thử nghiệm và vẽ số liệu.
Khám phá thêm bằng cách xem trang tài liệu Phân tích kết quả của Ray Tune để tận dụng tối đa các thử nghiệm điều chỉnh siêu tham số của bạn.
FAQ
Làm thế nào để điều chỉnh siêu tham số của mô hình YOLO11 của tôi bằng Ray Tune?
Để điều chỉnh các siêu tham số của bạn Ultralytics Mô hình YOLO11 sử dụng Ray Tune, hãy làm theo các bước sau:
Cài đặt các gói cần thiết:
Tải mô hình YOLO11 của bạn và bắt đầu điều chỉnh:
Điều này sử dụng các chiến lược tìm kiếm nâng cao và tính song song của Ray Tune để tối ưu hóa hiệu quả các siêu tham số của mô hình của bạn. Để biết thêm thông tin, hãy xem tài liệu về Ray Tune.
Siêu tham số mặc định để điều chỉnh YOLO11 bằng Ray Tune là gì?
Ultralytics YOLO11 sử dụng các siêu tham số mặc định sau để điều chỉnh bằng Ray Tune:
Thông số | Phạm vi giá trị | Sự miêu tả |
---|---|---|
lr0 | tune.uniform(1e-5, 1e-1) | Tỷ lệ học ban đầu |
lrf | tune.uniform(0.01, 1.0) | Yếu tố tỷ lệ học tập cuối cùng |
momentum | tune.uniform(0.6, 0.98) | Đà |
weight_decay | tune.uniform(0.0, 0.001) | Phân rã trọng lượng |
warmup_epochs | tune.uniform(0.0, 5.0) | Kỷ nguyên khởi động |
box | tune.uniform(0.02, 0.2) | Trọng lượng hộp giảm |
cls | tune.uniform(0.2, 4.0) | Lớp học giảm cân |
hsv_h | tune.uniform(0.0, 0.1) | Phạm vi tăng cường Huế |
translate | tune.uniform(0.0, 0.9) | Phạm vi tăng cường dịch thuật |
Các siêu thông số này có thể được tùy chỉnh để phù hợp với nhu cầu cụ thể của bạn. Để có danh sách đầy đủ và biết thêm chi tiết, hãy tham khảo hướng dẫn Điều chỉnh siêu tham số .
Làm thế nào tôi có thể tích hợp Weights & Biases với mô hình điều chỉnh YOLO11 của tôi?
Để tích hợp Weights & Biases (W&B) với bạn Ultralytics Quy trình điều chỉnh YOLO11:
Cài đặt W&B:
Sửa đổi tập lệnh điều chỉnh của bạn:
Thiết lập này sẽ cho phép bạn theo dõi quá trình điều chỉnh, theo dõi cấu hình siêu tham số và trực quan hóa kết quả trong W &B.
Tại sao tôi nên sử dụng Ray Tune để tối ưu hóa siêu tham số với YOLO11?
Ray Tune cung cấp nhiều lợi thế để tối ưu hóa siêu tham số:
- Chiến lược tìm kiếm nâng cao: Sử dụng các thuật toán như Bayesian Optimization và HyperOpt để tìm kiếm tham số hiệu quả.
- Song song: Hỗ trợ thực hiện song song nhiều thử nghiệm, đẩy nhanh đáng kể quá trình điều chỉnh.
- Dừng sớm: Sử dụng các chiến lược như ASHA để sớm chấm dứt các thử nghiệm hoạt động kém, tiết kiệm tài nguyên tính toán.
Ray Tune tích hợp liền mạch với Ultralytics YOLO11, cung cấp giao diện dễ sử dụng để điều chỉnh siêu tham số hiệu quả. Để bắt đầu, hãy xem hướng dẫn Điều chỉnh siêu tham số hiệu quả với Ray Tune và YOLO11 .
Làm thế nào tôi có thể xác định không gian tìm kiếm tùy chỉnh cho việc điều chỉnh siêu tham số YOLO11?
Để xác định không gian tìm kiếm tùy chỉnh cho việc điều chỉnh siêu tham số YOLO11 của bạn bằng Ray Tune:
from ray import tune
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
search_space = {"lr0": tune.uniform(1e-5, 1e-1), "momentum": tune.uniform(0.6, 0.98)}
result_grid = model.tune(data="coco8.yaml", space=search_space, use_ray=True)
Điều này tùy chỉnh phạm vi của các siêu tham số như tốc độ học tập ban đầu và động lượng được khám phá trong quá trình điều chỉnh. Để biết cấu hình nâng cao, hãy tham khảo phần Ví dụ về Không gian Tìm kiếm Tùy chỉnh .